16f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj#! /bin/sh
24b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev# Copyright (c) 2014-2016 Oracle and/or its affiliates. All Rights Reserved.
327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# Copyright (c) International Business Machines  Corp., 2001
48c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj#
527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# This program is free software; you can redistribute it and/or
627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# modify it under the terms of the GNU General Public License as
727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# published by the Free Software Foundation; either version 2 of
827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# the License, or (at your option) any later version.
98c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj#
1027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# This program is distributed in the hope that it would be useful,
1127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# but WITHOUT ANY WARRANTY; without even the implied warranty of
1227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# GNU General Public License for more details.
148c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj#
1527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# You should have received a copy of the GNU General Public License
1627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# along with this program; if not, write the Free Software Foundation,
1727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
188c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj#
1927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# Description:  Test basic functionality of ip command in route2 package
208c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj#
2127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev# Author:       Manoj Iyer, manjo@mail.utexas.edu
228c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
2327a2b07927037cfd105c06232c32debc4cf80ef5Alexey KodanevTST_CLEANUP=cleanup
2427a2b07927037cfd105c06232c32debc4cf80ef5Alexey KodanevTST_TOTAL=6
2527a2b07927037cfd105c06232c32debc4cf80ef5Alexey KodanevTCID="ip_tests"
2627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
2727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev. test_net.sh
288c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
294b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanevrm_dummy=
304b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev
318c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanojinit()
328c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj{
3327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "inititalizing tests"
3427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_require_root
3527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_tmpdir
364b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	tst_check_cmds cat awk ip diff
378c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
384b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	iface=ltp_dummy
394b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	lsmod | grep -q dummy || rm_dummy=1
408c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
414b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ROD ip li add $iface type dummy
428c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
434b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip4_addr=${IPV4_NET16_UNUSED}.6.6
444b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ROD ip a add ${ip4_addr}/24 dev $iface
458c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
4627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	cat > tst_ip02.exp <<-EOF
477062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	1:
487062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	link/loopback
497062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	2:
507062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	link/ether
517062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	3:
527062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	link/ether
537062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj	EOF
547062fc4217b0a9f7d4a3efa82994d4b0dacdd39eiyermanoj
5527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
5627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_brkm TBROK "can't create expected output for test02"
5727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
588c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj}
598c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
608c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanojcleanup()
618c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj{
6227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_rmdir
638c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
644b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	[ -n "$iface" -a -d /sys/class/net/$iface ] && ip li del $iface
654b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev
664b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	[ "$rm_dummy" ] && modprobe -r dummy
678c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
6827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	# test #5
694b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip route show | grep $ip4_addr && ip route del $ip4_addr
7027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev}
718c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
728c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanojtest01()
738c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj{
7427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "test 'ip link set' command"
754b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	tst_resm TINFO "changing mtu size of $iface device"
7627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
7727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	MTUSZ_BAK=$(cat /sys/class/net/${iface}/mtu)
784b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip link set ${iface} mtu 1281
7927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
8027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "ip command failed"
8127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
8227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
8327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
8427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	MTUSZ=$(cat /sys/class/net/${iface}/mtu)
854b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	if [ $MTUSZ -eq 1281 ]; then
8627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TPASS "successfully changed mtu size"
874b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev		ip link set $iface mtu $MTUSZ_BAK
888c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj	else
894b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev		tst_resm TFAIL "MTU value set to $MTUSZ, but expected 1281"
908c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj	fi
918c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj}
928c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
936b2e0cb89613d6b5d303b62b632538fe2f4338eaiyermanojtest02()
948c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj{
9527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "test 'ip link show' command (list device attributes)"
968c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
974b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip link show $iface | grep $iface > /dev/null
9827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
994b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev		tst_resm TFAIL "'ip link show $iface' command failed"
10027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
10127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
10227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
1034b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	tst_resm TPASS "$iface correctly listed"
10427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev}
1058c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
10627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest03()
10727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev{
1084b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	tst_resm TINFO "test 'ip addr' command with loopback dev"
10927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "add a new protocol address to the device"
11081db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj
11127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip addr add 127.6.6.6/24 dev lo
11227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
11327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip addr add' command failed"
11427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
11581db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj	fi
11681db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj
11727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "show protocol address"
11827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip addr show dev lo | grep 127.6.6.6 > /dev/null
11927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
12027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip addr show' command failed"
12127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
12281db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj	fi
12381db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj
12427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "delete protocol address"
12527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip addr del 127.6.6.6/24 dev lo
12627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
12727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip addr del' command failed"
12827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
12927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
13081db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj
13127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip addr show dev lo | grep 127.6.6.6 > /dev/null
13227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -eq 0 ]; then
13327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "ip addr del command failed"
13427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
13527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
13681db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj
13727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TPASS "'ip addr' command successfully tested"
13827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev}
13927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
14027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest04()
14181db222e9bca1f0b2756fea73670b9c1f48caa11iyermanoj{
14227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "test 'ip neigh' command"
14327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "add a new neighbor (or replace existed)"
1444b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip neigh replace 127.6.6.6 lladdr 00:00:00:00:00:00 dev lo nud reachable
14527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
14627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip neigh replace' command failed"
14727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
1488c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj	fi
1498c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
15027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "show all neighbor entries in arp tables"
15127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	cat > tst_ip.exp <<-EOF
1524b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev127.6.6.6 dev lo lladdr 00:00:00:00:00:00 REACHABLE
15327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	EOF
154ced11ae690930c79034371e3721f31b37641af4eiyermanoj
1554b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip neigh show 127.6.6.6 | head -n1 > tst_ip.out 2>&1
15627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
15727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip neigh show' command failed"
15827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
15927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
160ced11ae690930c79034371e3721f31b37641af4eiyermanoj
16127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	diff -iwB tst_ip.out tst_ip.exp
16227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
16327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "expected output differs from actual output"
16427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
165ced11ae690930c79034371e3721f31b37641af4eiyermanoj	fi
166ced11ae690930c79034371e3721f31b37641af4eiyermanoj
16727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "delete neighbor from the arp table"
1686f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
1694b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip neigh del 127.6.6.6 dev lo
17027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
17127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip neigh del' command failed"
17227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
17327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
17427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
1754b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip neigh show | grep 127.6.6.6 | grep -v ' FAILED$' > /dev/null
17627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -eq 0 ]; then
1774b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev		tst_resm TFAIL "127.6.6.6 still listed in arp"
17827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
17927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
18027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
18127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TPASS "'ip neigh' command successfully tested"
18227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev}
1836f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
1846f4f5a7274ff018b26659887a86f0e1280b87b3diyermanojtest05()
1856f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj{
18627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "test 'ip route add/del' commands"
18727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
1884b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ROD ip route add $ip4_addr via 127.0.0.1
1896f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
19027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "show all route entries in route table"
1916f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
19227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	# create expected output file.
19327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	cat > tst_ip.exp <<-EOF
1944b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev$ip4_addr via 127.0.0.1 dev lo
19527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	EOF
19637550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
1974b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip route show | grep "$ip4_addr via 127.0.0.1 dev lo" > tst_ip.out 2>&1
19827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
19927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip route show' command failed"
20027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
20127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
2026f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
20327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	diff -iwB tst_ip.out tst_ip.exp
20427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
20527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip route show' did not list new route"
20627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
2076f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj	fi
20837550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
20927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "delete route from the route table"
21027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
2114b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ROD ip route del $ip4_addr via 127.0.0.1
2126f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
21327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip route show | grep 127.0.0.1 > /dev/null
21427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -eq 0 ]; then
21527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "route not deleted"
21627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
21727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
2186f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
21927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TPASS "'ip route' command successfully tested"
22027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev}
2216f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
2226f4f5a7274ff018b26659887a86f0e1280b87b3diyermanojtest06()
2236f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj{
22427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "test 'ip maddr add/del' commands"
22527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "adding a new multicast addr"
22627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
2274b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip maddr add 66:66:00:00:00:66 dev $iface
22827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
22927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "ip maddr add command failed"
23027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
23127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
23227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
23327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "show all multicast addr entries"
2346f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
23527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	cat > tst_ip.exp <<-EOF
2366f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj        link  66:66:00:00:00:66 static
23727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	EOF
23827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
23927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip maddr show | grep "66:66:00:00:00:66" > tst_ip.out 2>&1
24027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
24127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip maddr show' command failed"
24227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
24327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
24427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
24527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	diff -iwB tst_ip.out tst_ip.exp
24627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
2474b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev		tst_resm TFAIL "multicast addr not added to $iface"
24827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
24927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
25027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
25127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TINFO "delete multicast address"
25227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
2534b1985206d676ca5ac769302fe4e7c33cfe4e535Alexey Kodanev	ip maddr del 66:66:00:00:00:66 dev $iface
25427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -ne 0 ]; then
25527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "'ip maddr del' command failed"
25627a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
25727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	fi
25827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
25927a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	ip maddr show | grep "66:66:00:00:00:66" > /dev/null
26027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	if [ $? -eq 0 ]; then
26127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		tst_resm TFAIL "66:66:00:00:00:66 is not deleted"
26227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev		return
2636f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj	fi
26427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev
26527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanev	tst_resm TPASS "'ip maddr' command successfully tested"
2666f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj}
2676f4f5a7274ff018b26659887a86f0e1280b87b3diyermanoj
26827a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevinit
2698c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
27027a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest01
27127a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest02
27227a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest03
27327a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest04
27427a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest05
27527a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtest06
2768c729e290df4585aaaf404a79c0b76d9a1d6e150iyermanoj
27727a2b07927037cfd105c06232c32debc4cf80ef5Alexey Kodanevtst_exit
278