1#! /bin/sh 2# Copyright (c) 2014-2016 Oracle and/or its affiliates. All Rights Reserved. 3# Copyright (c) International Business Machines Corp., 2001 4# 5# This program is free software; you can redistribute it and/or 6# modify it under the terms of the GNU General Public License as 7# published by the Free Software Foundation; either version 2 of 8# the License, or (at your option) any later version. 9# 10# This program is distributed in the hope that it would be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program; if not, write the Free Software Foundation, 17# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18# 19# Description: Test basic functionality of ip command in route2 package 20# 21# Author: Manoj Iyer, manjo@mail.utexas.edu 22 23TST_CLEANUP=cleanup 24TST_TOTAL=6 25TCID="ip_tests" 26 27. test_net.sh 28 29rm_dummy= 30 31init() 32{ 33 tst_resm TINFO "inititalizing tests" 34 tst_require_root 35 tst_tmpdir 36 tst_check_cmds cat awk ip diff 37 38 iface=ltp_dummy 39 lsmod | grep -q dummy || rm_dummy=1 40 41 ROD ip li add $iface type dummy 42 43 ip4_addr=${IPV4_NET16_UNUSED}.6.6 44 ROD ip a add ${ip4_addr}/24 dev $iface 45 46 cat > tst_ip02.exp <<-EOF 47 1: 48 link/loopback 49 2: 50 link/ether 51 3: 52 link/ether 53 EOF 54 55 if [ $? -ne 0 ]; then 56 tst_brkm TBROK "can't create expected output for test02" 57 fi 58} 59 60cleanup() 61{ 62 tst_rmdir 63 64 [ -n "$iface" -a -d /sys/class/net/$iface ] && ip li del $iface 65 66 [ "$rm_dummy" ] && modprobe -r dummy 67 68 # test #5 69 ip route show | grep $ip4_addr && ip route del $ip4_addr 70} 71 72test01() 73{ 74 tst_resm TINFO "test 'ip link set' command" 75 tst_resm TINFO "changing mtu size of $iface device" 76 77 MTUSZ_BAK=$(cat /sys/class/net/${iface}/mtu) 78 ip link set ${iface} mtu 1281 79 if [ $? -ne 0 ]; then 80 tst_resm TFAIL "ip command failed" 81 return 82 fi 83 84 MTUSZ=$(cat /sys/class/net/${iface}/mtu) 85 if [ $MTUSZ -eq 1281 ]; then 86 tst_resm TPASS "successfully changed mtu size" 87 ip link set $iface mtu $MTUSZ_BAK 88 else 89 tst_resm TFAIL "MTU value set to $MTUSZ, but expected 1281" 90 fi 91} 92 93test02() 94{ 95 tst_resm TINFO "test 'ip link show' command (list device attributes)" 96 97 ip link show $iface | grep $iface > /dev/null 98 if [ $? -ne 0 ]; then 99 tst_resm TFAIL "'ip link show $iface' command failed" 100 return 101 fi 102 103 tst_resm TPASS "$iface correctly listed" 104} 105 106test03() 107{ 108 tst_resm TINFO "test 'ip addr' command with loopback dev" 109 tst_resm TINFO "add a new protocol address to the device" 110 111 ip addr add 127.6.6.6/24 dev lo 112 if [ $? -ne 0 ]; then 113 tst_resm TFAIL "'ip addr add' command failed" 114 return 115 fi 116 117 tst_resm TINFO "show protocol address" 118 ip addr show dev lo | grep 127.6.6.6 > /dev/null 119 if [ $? -ne 0 ]; then 120 tst_resm TFAIL "'ip addr show' command failed" 121 return 122 fi 123 124 tst_resm TINFO "delete protocol address" 125 ip addr del 127.6.6.6/24 dev lo 126 if [ $? -ne 0 ]; then 127 tst_resm TFAIL "'ip addr del' command failed" 128 return 129 fi 130 131 ip addr show dev lo | grep 127.6.6.6 > /dev/null 132 if [ $? -eq 0 ]; then 133 tst_resm TFAIL "ip addr del command failed" 134 return 135 fi 136 137 tst_resm TPASS "'ip addr' command successfully tested" 138} 139 140test04() 141{ 142 tst_resm TINFO "test 'ip neigh' command" 143 tst_resm TINFO "add a new neighbor (or replace existed)" 144 ip neigh replace 127.6.6.6 lladdr 00:00:00:00:00:00 dev lo nud reachable 145 if [ $? -ne 0 ]; then 146 tst_resm TFAIL "'ip neigh replace' command failed" 147 return 148 fi 149 150 tst_resm TINFO "show all neighbor entries in arp tables" 151 cat > tst_ip.exp <<-EOF 152127.6.6.6 dev lo lladdr 00:00:00:00:00:00 REACHABLE 153 EOF 154 155 ip neigh show 127.6.6.6 | head -n1 > tst_ip.out 2>&1 156 if [ $? -ne 0 ]; then 157 tst_resm TFAIL "'ip neigh show' command failed" 158 return 159 fi 160 161 diff -iwB tst_ip.out tst_ip.exp 162 if [ $? -ne 0 ]; then 163 tst_resm TFAIL "expected output differs from actual output" 164 return 165 fi 166 167 tst_resm TINFO "delete neighbor from the arp table" 168 169 ip neigh del 127.6.6.6 dev lo 170 if [ $? -ne 0 ]; then 171 tst_resm TFAIL "'ip neigh del' command failed" 172 return 173 fi 174 175 ip neigh show | grep 127.6.6.6 | grep -v ' FAILED$' > /dev/null 176 if [ $? -eq 0 ]; then 177 tst_resm TFAIL "127.6.6.6 still listed in arp" 178 return 179 fi 180 181 tst_resm TPASS "'ip neigh' command successfully tested" 182} 183 184test05() 185{ 186 tst_resm TINFO "test 'ip route add/del' commands" 187 188 ROD ip route add $ip4_addr via 127.0.0.1 189 190 tst_resm TINFO "show all route entries in route table" 191 192 # create expected output file. 193 cat > tst_ip.exp <<-EOF 194$ip4_addr via 127.0.0.1 dev lo 195 EOF 196 197 ip route show | grep "$ip4_addr via 127.0.0.1 dev lo" > tst_ip.out 2>&1 198 if [ $? -ne 0 ]; then 199 tst_resm TFAIL "'ip route show' command failed" 200 return 201 fi 202 203 diff -iwB tst_ip.out tst_ip.exp 204 if [ $? -ne 0 ]; then 205 tst_resm TFAIL "'ip route show' did not list new route" 206 return 207 fi 208 209 tst_resm TINFO "delete route from the route table" 210 211 ROD ip route del $ip4_addr via 127.0.0.1 212 213 ip route show | grep 127.0.0.1 > /dev/null 214 if [ $? -eq 0 ]; then 215 tst_resm TFAIL "route not deleted" 216 return 217 fi 218 219 tst_resm TPASS "'ip route' command successfully tested" 220} 221 222test06() 223{ 224 tst_resm TINFO "test 'ip maddr add/del' commands" 225 tst_resm TINFO "adding a new multicast addr" 226 227 ip maddr add 66:66:00:00:00:66 dev $iface 228 if [ $? -ne 0 ]; then 229 tst_resm TFAIL "ip maddr add command failed" 230 return 231 fi 232 233 tst_resm TINFO "show all multicast addr entries" 234 235 cat > tst_ip.exp <<-EOF 236 link 66:66:00:00:00:66 static 237 EOF 238 239 ip maddr show | grep "66:66:00:00:00:66" > tst_ip.out 2>&1 240 if [ $? -ne 0 ]; then 241 tst_resm TFAIL "'ip maddr show' command failed" 242 return 243 fi 244 245 diff -iwB tst_ip.out tst_ip.exp 246 if [ $? -ne 0 ]; then 247 tst_resm TFAIL "multicast addr not added to $iface" 248 return 249 fi 250 251 tst_resm TINFO "delete multicast address" 252 253 ip maddr del 66:66:00:00:00:66 dev $iface 254 if [ $? -ne 0 ]; then 255 tst_resm TFAIL "'ip maddr del' command failed" 256 return 257 fi 258 259 ip maddr show | grep "66:66:00:00:00:66" > /dev/null 260 if [ $? -eq 0 ]; then 261 tst_resm TFAIL "66:66:00:00:00:66 is not deleted" 262 return 263 fi 264 265 tst_resm TPASS "'ip maddr' command successfully tested" 266} 267 268init 269 270test01 271test02 272test03 273test04 274test05 275test06 276 277tst_exit 278