1cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#!/bin/sh 2c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. 3c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# Copyright (c) International Business Machines Corp., 2005 4cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# 5c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# This program is free software; you can redistribute it and/or 6c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# modify it under the terms of the GNU General Public License as 7c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# published by the Free Software Foundation; either version 2 of 8c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# the License, or (at your option) any later version. 9cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# 10c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# This program is distributed in the hope that it would be useful, 11c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# but WITHOUT ANY WARRANTY; without even the implied warranty of 12c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# GNU General Public License for more details. 14cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# 15c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# You should have received a copy of the GNU General Public License 16c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# along with this program. If not, see <http://www.gnu.org/licenses/>. 17cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# 18c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev# Author: Mitsuru Chinen <mitch@jp.ibm.com> 19cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 20cd30c339dae692a3eb5c5fc55f70726457f4756bmridgeTST_TOTAL=2 21c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey KodanevTCID=if-updown 22cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 23c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev. if-lib.sh 24cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 25d17aac79d4f66b7e51abd9f33158f0f19fe7272cAlexey KodanevCHECK_INTERVAL=${CHECK_INTERVAL:-$(($IF_UPDOWN_TIMES / 20))} 26cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 27cd30c339dae692a3eb5c5fc55f70726457f4756bmridgetest_body() 28cd30c339dae692a3eb5c5fc55f70726457f4756bmridge{ 29c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev local cmd_type=$1 30cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 31c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev case $cmd_type in 32c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev if_cmd) local cmd_name='ifconfig' ;; 33c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev ip_cmd) local cmd_name='ip' ;; 34c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev *) tst_brkm TBROK "Unknown test parameter '$cmd_type'" 35c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev esac 36cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 37c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev local iface=$(tst_iface) 38cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 39c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev tst_resm TINFO "'$cmd_name ups/downs $iface $IF_UPDOWN_TIMES times" 40c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev tst_resm TINFO "check connectivity interval is $CHECK_INTERVAL" 41cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 42c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev local cnt=1 43c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev while [ $cnt -le $IF_UPDOWN_TIMES ]; do 44c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev case $cmd_type in 45c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev if_cmd) ifconfig $iface down ;; 46c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev ip_cmd) ip link set $iface down ;; 47c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev esac 48c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev if [ $? -ne 0 ]; then 49c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev tst_resm TFAIL "Failed to down $iface" 50c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev return 51c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev fi 52cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 53c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev case $cmd_type in 54c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev if_cmd) ifconfig $iface up ;; 55c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev ip_cmd) ip link set $iface up ;; 56c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev esac 57cd30c339dae692a3eb5c5fc55f70726457f4756bmridge if [ $? -ne 0 ]; then 58c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev tst_resm TFAIL "Failed to up $iface" 59c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev return 60cd30c339dae692a3eb5c5fc55f70726457f4756bmridge fi 61cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 62d17aac79d4f66b7e51abd9f33158f0f19fe7272cAlexey Kodanev check_connectivity $cnt restore_ip || return 63c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev 64c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev cnt=$(($cnt + 1)) 65c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev done 66cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 67c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanev tst_resm TPASS "Test is finished correctly" 68cd30c339dae692a3eb5c5fc55f70726457f4756bmridge} 69cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 70c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanevsetup 71cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 72c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanevtst_check_cmds ifconfig 73cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 74c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanevtest_body 'if_cmd' 75c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanevtest_body 'ip_cmd' 76cd30c339dae692a3eb5c5fc55f70726457f4756bmridge 77c0e4f672ddaf0f715da0995fff2e8c9d1c022fb3Alexey Kodanevtst_exit 78