]> git.itanic.dy.fi Git - linux-stable/commitdiff
selftests/net: convert test_bridge_neigh_suppress.sh to run it in unique namespace
authorHangbin Liu <liuhangbin@gmail.com>
Wed, 6 Dec 2023 07:07:54 +0000 (15:07 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Dec 2023 12:12:15 +0000 (12:12 +0000)
Here is the test result after conversion.

]# ./test_bridge_neigh_suppress.sh

Per-port ARP suppression - VLAN 10
----------------------------------
TEST: arping                                                        [ OK ]
TEST: ARP suppression                                               [ OK ]

...

TEST: NS suppression (VLAN 20)                                      [ OK ]

Tests passed: 148
Tests failed:   0

Acked-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/test_bridge_neigh_suppress.sh

index d80f2cd87614ca8de3b174beb0883ab3f1b510e9..8533393a4f1869f156ea1a47a76d63ad1fb1b712 100755 (executable)
@@ -45,9 +45,8 @@
 # | sw1                                | | sw2                                |
 # +------------------------------------+ +------------------------------------+
 
+source lib.sh
 ret=0
-# Kselftest framework requirement - SKIP code is 4.
-ksft_skip=4
 
 # All tests in this script. Can be overridden with -t option.
 TESTS="
@@ -140,9 +139,6 @@ setup_topo_ns()
 {
        local ns=$1; shift
 
-       ip netns add $ns
-       ip -n $ns link set dev lo up
-
        ip netns exec $ns sysctl -qw net.ipv6.conf.all.keep_addr_on_down=1
        ip netns exec $ns sysctl -qw net.ipv6.conf.default.ignore_routes_with_linkdown=1
        ip netns exec $ns sysctl -qw net.ipv6.conf.all.accept_dad=0
@@ -153,21 +149,22 @@ setup_topo()
 {
        local ns
 
-       for ns in h1 h2 sw1 sw2; do
+       setup_ns h1 h2 sw1 sw2
+       for ns in $h1 $h2 $sw1 $sw2; do
                setup_topo_ns $ns
        done
 
        ip link add name veth0 type veth peer name veth1
-       ip link set dev veth0 netns h1 name eth0
-       ip link set dev veth1 netns sw1 name swp1
+       ip link set dev veth0 netns $h1 name eth0
+       ip link set dev veth1 netns $sw1 name swp1
 
        ip link add name veth0 type veth peer name veth1
-       ip link set dev veth0 netns sw1 name veth0
-       ip link set dev veth1 netns sw2 name veth0
+       ip link set dev veth0 netns $sw1 name veth0
+       ip link set dev veth1 netns $sw2 name veth0
 
        ip link add name veth0 type veth peer name veth1
-       ip link set dev veth0 netns h2 name eth0
-       ip link set dev veth1 netns sw2 name swp1
+       ip link set dev veth0 netns $h2 name eth0
+       ip link set dev veth1 netns $sw2 name swp1
 }
 
 setup_host_common()
@@ -190,7 +187,7 @@ setup_host_common()
 
 setup_h1()
 {
-       local ns=h1
+       local ns=$h1
        local v4addr1=192.0.2.1/28
        local v4addr2=192.0.2.17/28
        local v6addr1=2001:db8:1::1/64
@@ -201,7 +198,7 @@ setup_h1()
 
 setup_h2()
 {
-       local ns=h2
+       local ns=$h2
        local v4addr1=192.0.2.2/28
        local v4addr2=192.0.2.18/28
        local v6addr1=2001:db8:1::2/64
@@ -254,7 +251,7 @@ setup_sw_common()
 
 setup_sw1()
 {
-       local ns=sw1
+       local ns=$sw1
        local local_addr=192.0.2.33
        local remote_addr=192.0.2.34
        local veth_addr=192.0.2.49
@@ -265,7 +262,7 @@ setup_sw1()
 
 setup_sw2()
 {
-       local ns=sw2
+       local ns=$sw2
        local local_addr=192.0.2.34
        local remote_addr=192.0.2.33
        local veth_addr=192.0.2.50
@@ -291,11 +288,7 @@ setup()
 
 cleanup()
 {
-       local ns
-
-       for ns in h1 h2 sw1 sw2; do
-               ip netns del $ns &> /dev/null
-       done
+       cleanup_ns $h1 $h2 $sw1 $sw2
 }
 
 ################################################################################
@@ -312,80 +305,80 @@ neigh_suppress_arp_common()
        echo "Per-port ARP suppression - VLAN $vid"
        echo "----------------------------------"
 
-       run_cmd "tc -n sw1 qdisc replace dev vx0 clsact"
-       run_cmd "tc -n sw1 filter replace dev vx0 egress pref 1 handle 101 proto 0x0806 flower indev swp1 arp_tip $tip arp_sip $sip arp_op request action pass"
+       run_cmd "tc -n $sw1 qdisc replace dev vx0 clsact"
+       run_cmd "tc -n $sw1 filter replace dev vx0 egress pref 1 handle 101 proto 0x0806 flower indev swp1 arp_tip $tip arp_sip $sip arp_op request action pass"
 
        # Initial state - check that ARP requests are not suppressed and that
        # ARP replies are received.
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 0 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "ARP suppression"
 
        # Enable neighbor suppression and check that nothing changes compared
        # to the initial state.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 0 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 2
+       tc_check_packets $sw1 "dev vx0 egress" 101 2
        log_test $? 0 "ARP suppression"
 
        # Install an FDB entry for the remote host and check that nothing
        # changes compared to the initial state.
-       h2_mac=$(ip -n h2 -j -p link show eth0.$vid | jq -r '.[]["address"]')
-       run_cmd "bridge -n sw1 fdb replace $h2_mac dev vx0 master static vlan $vid"
+       h2_mac=$(ip -n $h2 -j -p link show eth0.$vid | jq -r '.[]["address"]')
+       run_cmd "bridge -n $sw1 fdb replace $h2_mac dev vx0 master static vlan $vid"
        log_test $? 0 "FDB entry installation"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 0 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 3
+       tc_check_packets $sw1 "dev vx0 egress" 101 3
        log_test $? 0 "ARP suppression"
 
        # Install a neighbor on the matching SVI interface and check that ARP
        # requests are suppressed.
-       run_cmd "ip -n sw1 neigh replace $tip lladdr $h2_mac nud permanent dev br0.$vid"
+       run_cmd "ip -n $sw1 neigh replace $tip lladdr $h2_mac nud permanent dev br0.$vid"
        log_test $? 0 "Neighbor entry installation"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 0 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 3
+       tc_check_packets $sw1 "dev vx0 egress" 101 3
        log_test $? 0 "ARP suppression"
 
        # Take the second host down and check that ARP requests are suppressed
        # and that ARP replies are received.
-       run_cmd "ip -n h2 link set dev eth0.$vid down"
+       run_cmd "ip -n $h2 link set dev eth0.$vid down"
        log_test $? 0 "H2 down"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 0 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 3
+       tc_check_packets $sw1 "dev vx0 egress" 101 3
        log_test $? 0 "ARP suppression"
 
-       run_cmd "ip -n h2 link set dev eth0.$vid up"
+       run_cmd "ip -n $h2 link set dev eth0.$vid up"
        log_test $? 0 "H2 up"
 
        # Disable neighbor suppression and check that ARP requests are no
        # longer suppressed.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress off"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress off"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 0 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 4
+       tc_check_packets $sw1 "dev vx0 egress" 101 4
        log_test $? 0 "ARP suppression"
 
        # Take the second host down and check that ARP requests are not
        # suppressed and that ARP replies are not received.
-       run_cmd "ip -n h2 link set dev eth0.$vid down"
+       run_cmd "ip -n $h2 link set dev eth0.$vid down"
        log_test $? 0 "H2 down"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip -I eth0.$vid $tip"
        log_test $? 1 "arping"
-       tc_check_packets sw1 "dev vx0 egress" 101 5
+       tc_check_packets $sw1 "dev vx0 egress" 101 5
        log_test $? 0 "ARP suppression"
 }
 
@@ -415,80 +408,80 @@ neigh_suppress_ns_common()
        echo "Per-port NS suppression - VLAN $vid"
        echo "---------------------------------"
 
-       run_cmd "tc -n sw1 qdisc replace dev vx0 clsact"
-       run_cmd "tc -n sw1 filter replace dev vx0 egress pref 1 handle 101 proto ipv6 flower indev swp1 ip_proto icmpv6 dst_ip $maddr src_ip $saddr type 135 code 0 action pass"
+       run_cmd "tc -n $sw1 qdisc replace dev vx0 clsact"
+       run_cmd "tc -n $sw1 filter replace dev vx0 egress pref 1 handle 101 proto ipv6 flower indev swp1 ip_proto icmpv6 dst_ip $maddr src_ip $saddr type 135 code 0 action pass"
 
        # Initial state - check that NS messages are not suppressed and that ND
        # messages are received.
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 0 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "NS suppression"
 
        # Enable neighbor suppression and check that nothing changes compared
        # to the initial state.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 0 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 2
+       tc_check_packets $sw1 "dev vx0 egress" 101 2
        log_test $? 0 "NS suppression"
 
        # Install an FDB entry for the remote host and check that nothing
        # changes compared to the initial state.
-       h2_mac=$(ip -n h2 -j -p link show eth0.$vid | jq -r '.[]["address"]')
-       run_cmd "bridge -n sw1 fdb replace $h2_mac dev vx0 master static vlan $vid"
+       h2_mac=$(ip -n $h2 -j -p link show eth0.$vid | jq -r '.[]["address"]')
+       run_cmd "bridge -n $sw1 fdb replace $h2_mac dev vx0 master static vlan $vid"
        log_test $? 0 "FDB entry installation"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 0 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 3
+       tc_check_packets $sw1 "dev vx0 egress" 101 3
        log_test $? 0 "NS suppression"
 
        # Install a neighbor on the matching SVI interface and check that NS
        # messages are suppressed.
-       run_cmd "ip -n sw1 neigh replace $daddr lladdr $h2_mac nud permanent dev br0.$vid"
+       run_cmd "ip -n $sw1 neigh replace $daddr lladdr $h2_mac nud permanent dev br0.$vid"
        log_test $? 0 "Neighbor entry installation"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 0 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 3
+       tc_check_packets $sw1 "dev vx0 egress" 101 3
        log_test $? 0 "NS suppression"
 
        # Take the second host down and check that NS messages are suppressed
        # and that ND messages are received.
-       run_cmd "ip -n h2 link set dev eth0.$vid down"
+       run_cmd "ip -n $h2 link set dev eth0.$vid down"
        log_test $? 0 "H2 down"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 0 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 3
+       tc_check_packets $sw1 "dev vx0 egress" 101 3
        log_test $? 0 "NS suppression"
 
-       run_cmd "ip -n h2 link set dev eth0.$vid up"
+       run_cmd "ip -n $h2 link set dev eth0.$vid up"
        log_test $? 0 "H2 up"
 
        # Disable neighbor suppression and check that NS messages are no longer
        # suppressed.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress off"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress off"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 0 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 4
+       tc_check_packets $sw1 "dev vx0 egress" 101 4
        log_test $? 0 "NS suppression"
 
        # Take the second host down and check that NS messages are not
        # suppressed and that ND messages are not received.
-       run_cmd "ip -n h2 link set dev eth0.$vid down"
+       run_cmd "ip -n $h2 link set dev eth0.$vid down"
        log_test $? 0 "H2 down"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr -w 5000 $daddr eth0.$vid"
        log_test $? 2 "ndisc6"
-       tc_check_packets sw1 "dev vx0 egress" 101 5
+       tc_check_packets $sw1 "dev vx0 egress" 101 5
        log_test $? 0 "NS suppression"
 }
 
@@ -524,118 +517,118 @@ neigh_vlan_suppress_arp()
        echo "Per-{Port, VLAN} ARP suppression"
        echo "--------------------------------"
 
-       run_cmd "tc -n sw1 qdisc replace dev vx0 clsact"
-       run_cmd "tc -n sw1 filter replace dev vx0 egress pref 1 handle 101 proto 0x0806 flower indev swp1 arp_tip $tip1 arp_sip $sip1 arp_op request action pass"
-       run_cmd "tc -n sw1 filter replace dev vx0 egress pref 1 handle 102 proto 0x0806 flower indev swp1 arp_tip $tip2 arp_sip $sip2 arp_op request action pass"
+       run_cmd "tc -n $sw1 qdisc replace dev vx0 clsact"
+       run_cmd "tc -n $sw1 filter replace dev vx0 egress pref 1 handle 101 proto 0x0806 flower indev swp1 arp_tip $tip1 arp_sip $sip1 arp_op request action pass"
+       run_cmd "tc -n $sw1 filter replace dev vx0 egress pref 1 handle 102 proto 0x0806 flower indev swp1 arp_tip $tip2 arp_sip $sip2 arp_op request action pass"
 
-       h2_mac1=$(ip -n h2 -j -p link show eth0.$vid1 | jq -r '.[]["address"]')
-       h2_mac2=$(ip -n h2 -j -p link show eth0.$vid2 | jq -r '.[]["address"]')
-       run_cmd "bridge -n sw1 fdb replace $h2_mac1 dev vx0 master static vlan $vid1"
-       run_cmd "bridge -n sw1 fdb replace $h2_mac2 dev vx0 master static vlan $vid2"
-       run_cmd "ip -n sw1 neigh replace $tip1 lladdr $h2_mac1 nud permanent dev br0.$vid1"
-       run_cmd "ip -n sw1 neigh replace $tip2 lladdr $h2_mac2 nud permanent dev br0.$vid2"
+       h2_mac1=$(ip -n $h2 -j -p link show eth0.$vid1 | jq -r '.[]["address"]')
+       h2_mac2=$(ip -n $h2 -j -p link show eth0.$vid2 | jq -r '.[]["address"]')
+       run_cmd "bridge -n $sw1 fdb replace $h2_mac1 dev vx0 master static vlan $vid1"
+       run_cmd "bridge -n $sw1 fdb replace $h2_mac2 dev vx0 master static vlan $vid2"
+       run_cmd "ip -n $sw1 neigh replace $tip1 lladdr $h2_mac1 nud permanent dev br0.$vid1"
+       run_cmd "ip -n $sw1 neigh replace $tip2 lladdr $h2_mac2 nud permanent dev br0.$vid2"
 
        # Enable per-{Port, VLAN} neighbor suppression and check that ARP
        # requests are not suppressed and that ARP replies are received.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_vlan_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_vlan_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress on\""
        log_test $? 0 "\"neigh_vlan_suppress\" is on"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
        log_test $? 0 "arping (VLAN $vid1)"
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
        log_test $? 0 "arping (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "ARP suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 1
+       tc_check_packets $sw1 "dev vx0 egress" 102 1
        log_test $? 0 "ARP suppression (VLAN $vid2)"
 
        # Enable neighbor suppression on VLAN 10 and check that only on this
        # VLAN ARP requests are suppressed.
-       run_cmd "bridge -n sw1 vlan set vid $vid1 dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 vlan set vid $vid1 dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on (VLAN $vid1)"
-       run_cmd "bridge -n sw1 -d vlan show dev vx0 vid $vid2 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 -d vlan show dev vx0 vid $vid2 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off (VLAN $vid2)"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
        log_test $? 0 "arping (VLAN $vid1)"
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
        log_test $? 0 "arping (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "ARP suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 2
+       tc_check_packets $sw1 "dev vx0 egress" 102 2
        log_test $? 0 "ARP suppression (VLAN $vid2)"
 
        # Enable neighbor suppression on the port and check that it has no
        # effect compared to previous state.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
        log_test $? 0 "arping (VLAN $vid1)"
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
        log_test $? 0 "arping (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "ARP suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 3
+       tc_check_packets $sw1 "dev vx0 egress" 102 3
        log_test $? 0 "ARP suppression (VLAN $vid2)"
 
        # Disable neighbor suppression on the port and check that it has no
        # effect compared to previous state.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress off"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress off"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
        log_test $? 0 "arping (VLAN $vid1)"
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
        log_test $? 0 "arping (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "ARP suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 4
+       tc_check_packets $sw1 "dev vx0 egress" 102 4
        log_test $? 0 "ARP suppression (VLAN $vid2)"
 
        # Disable neighbor suppression on VLAN 10 and check that ARP requests
        # are no longer suppressed on this VLAN.
-       run_cmd "bridge -n sw1 vlan set vid $vid1 dev vx0 neigh_suppress off"
-       run_cmd "bridge -n sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 vlan set vid $vid1 dev vx0 neigh_suppress off"
+       run_cmd "bridge -n $sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off (VLAN $vid1)"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
        log_test $? 0 "arping (VLAN $vid1)"
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
        log_test $? 0 "arping (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 2
+       tc_check_packets $sw1 "dev vx0 egress" 101 2
        log_test $? 0 "ARP suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 5
+       tc_check_packets $sw1 "dev vx0 egress" 102 5
        log_test $? 0 "ARP suppression (VLAN $vid2)"
 
        # Disable per-{Port, VLAN} neighbor suppression, enable neighbor
        # suppression on the port and check that on both VLANs ARP requests are
        # suppressed.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_vlan_suppress off"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress off\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_vlan_suppress off"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress off\""
        log_test $? 0 "\"neigh_vlan_suppress\" is off"
 
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on"
 
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip1 -I eth0.$vid1 $tip1"
        log_test $? 0 "arping (VLAN $vid1)"
-       run_cmd "ip netns exec h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
+       run_cmd "ip netns exec $h1 arping -q -b -c 1 -w 5 -s $sip2 -I eth0.$vid2 $tip2"
        log_test $? 0 "arping (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 2
+       tc_check_packets $sw1 "dev vx0 egress" 101 2
        log_test $? 0 "ARP suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 5
+       tc_check_packets $sw1 "dev vx0 egress" 102 5
        log_test $? 0 "ARP suppression (VLAN $vid2)"
 }
 
@@ -655,118 +648,118 @@ neigh_vlan_suppress_ns()
        echo "Per-{Port, VLAN} NS suppression"
        echo "-------------------------------"
 
-       run_cmd "tc -n sw1 qdisc replace dev vx0 clsact"
-       run_cmd "tc -n sw1 filter replace dev vx0 egress pref 1 handle 101 proto ipv6 flower indev swp1 ip_proto icmpv6 dst_ip $maddr src_ip $saddr1 type 135 code 0 action pass"
-       run_cmd "tc -n sw1 filter replace dev vx0 egress pref 1 handle 102 proto ipv6 flower indev swp1 ip_proto icmpv6 dst_ip $maddr src_ip $saddr2 type 135 code 0 action pass"
+       run_cmd "tc -n $sw1 qdisc replace dev vx0 clsact"
+       run_cmd "tc -n $sw1 filter replace dev vx0 egress pref 1 handle 101 proto ipv6 flower indev swp1 ip_proto icmpv6 dst_ip $maddr src_ip $saddr1 type 135 code 0 action pass"
+       run_cmd "tc -n $sw1 filter replace dev vx0 egress pref 1 handle 102 proto ipv6 flower indev swp1 ip_proto icmpv6 dst_ip $maddr src_ip $saddr2 type 135 code 0 action pass"
 
-       h2_mac1=$(ip -n h2 -j -p link show eth0.$vid1 | jq -r '.[]["address"]')
-       h2_mac2=$(ip -n h2 -j -p link show eth0.$vid2 | jq -r '.[]["address"]')
-       run_cmd "bridge -n sw1 fdb replace $h2_mac1 dev vx0 master static vlan $vid1"
-       run_cmd "bridge -n sw1 fdb replace $h2_mac2 dev vx0 master static vlan $vid2"
-       run_cmd "ip -n sw1 neigh replace $daddr1 lladdr $h2_mac1 nud permanent dev br0.$vid1"
-       run_cmd "ip -n sw1 neigh replace $daddr2 lladdr $h2_mac2 nud permanent dev br0.$vid2"
+       h2_mac1=$(ip -n $h2 -j -p link show eth0.$vid1 | jq -r '.[]["address"]')
+       h2_mac2=$(ip -n $h2 -j -p link show eth0.$vid2 | jq -r '.[]["address"]')
+       run_cmd "bridge -n $sw1 fdb replace $h2_mac1 dev vx0 master static vlan $vid1"
+       run_cmd "bridge -n $sw1 fdb replace $h2_mac2 dev vx0 master static vlan $vid2"
+       run_cmd "ip -n $sw1 neigh replace $daddr1 lladdr $h2_mac1 nud permanent dev br0.$vid1"
+       run_cmd "ip -n $sw1 neigh replace $daddr2 lladdr $h2_mac2 nud permanent dev br0.$vid2"
 
        # Enable per-{Port, VLAN} neighbor suppression and check that NS
        # messages are not suppressed and that ND messages are received.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_vlan_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_vlan_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress on\""
        log_test $? 0 "\"neigh_vlan_suppress\" is on"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
        log_test $? 0 "ndisc6 (VLAN $vid1)"
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
        log_test $? 0 "ndisc6 (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "NS suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 1
+       tc_check_packets $sw1 "dev vx0 egress" 102 1
        log_test $? 0 "NS suppression (VLAN $vid2)"
 
        # Enable neighbor suppression on VLAN 10 and check that only on this
        # VLAN NS messages are suppressed.
-       run_cmd "bridge -n sw1 vlan set vid $vid1 dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 vlan set vid $vid1 dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on (VLAN $vid1)"
-       run_cmd "bridge -n sw1 -d vlan show dev vx0 vid $vid2 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 -d vlan show dev vx0 vid $vid2 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off (VLAN $vid2)"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
        log_test $? 0 "ndisc6 (VLAN $vid1)"
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
        log_test $? 0 "ndisc6 (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "NS suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 2
+       tc_check_packets $sw1 "dev vx0 egress" 102 2
        log_test $? 0 "NS suppression (VLAN $vid2)"
 
        # Enable neighbor suppression on the port and check that it has no
        # effect compared to previous state.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
        log_test $? 0 "ndisc6 (VLAN $vid1)"
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
        log_test $? 0 "ndisc6 (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "NS suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 3
+       tc_check_packets $sw1 "dev vx0 egress" 102 3
        log_test $? 0 "NS suppression (VLAN $vid2)"
 
        # Disable neighbor suppression on the port and check that it has no
        # effect compared to previous state.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress off"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress off"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
        log_test $? 0 "ndisc6 (VLAN $vid1)"
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
        log_test $? 0 "ndisc6 (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 1
+       tc_check_packets $sw1 "dev vx0 egress" 101 1
        log_test $? 0 "NS suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 4
+       tc_check_packets $sw1 "dev vx0 egress" 102 4
        log_test $? 0 "NS suppression (VLAN $vid2)"
 
        # Disable neighbor suppression on VLAN 10 and check that NS messages
        # are no longer suppressed on this VLAN.
-       run_cmd "bridge -n sw1 vlan set vid $vid1 dev vx0 neigh_suppress off"
-       run_cmd "bridge -n sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress off\""
+       run_cmd "bridge -n $sw1 vlan set vid $vid1 dev vx0 neigh_suppress off"
+       run_cmd "bridge -n $sw1 -d vlan show dev vx0 vid $vid1 | grep \"neigh_suppress off\""
        log_test $? 0 "\"neigh_suppress\" is off (VLAN $vid1)"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
        log_test $? 0 "ndisc6 (VLAN $vid1)"
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
        log_test $? 0 "ndisc6 (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 2
+       tc_check_packets $sw1 "dev vx0 egress" 101 2
        log_test $? 0 "NS suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 5
+       tc_check_packets $sw1 "dev vx0 egress" 102 5
        log_test $? 0 "NS suppression (VLAN $vid2)"
 
        # Disable per-{Port, VLAN} neighbor suppression, enable neighbor
        # suppression on the port and check that on both VLANs NS messages are
        # suppressed.
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_vlan_suppress off"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress off\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_vlan_suppress off"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_vlan_suppress off\""
        log_test $? 0 "\"neigh_vlan_suppress\" is off"
 
-       run_cmd "bridge -n sw1 link set dev vx0 neigh_suppress on"
-       run_cmd "bridge -n sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
+       run_cmd "bridge -n $sw1 link set dev vx0 neigh_suppress on"
+       run_cmd "bridge -n $sw1 -d link show dev vx0 | grep \"neigh_suppress on\""
        log_test $? 0 "\"neigh_suppress\" is on"
 
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr1 -w 5000 $daddr1 eth0.$vid1"
        log_test $? 0 "ndisc6 (VLAN $vid1)"
-       run_cmd "ip netns exec h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
+       run_cmd "ip netns exec $h1 ndisc6 -q -r 1 -s $saddr2 -w 5000 $daddr2 eth0.$vid2"
        log_test $? 0 "ndisc6 (VLAN $vid2)"
 
-       tc_check_packets sw1 "dev vx0 egress" 101 2
+       tc_check_packets $sw1 "dev vx0 egress" 101 2
        log_test $? 0 "NS suppression (VLAN $vid1)"
-       tc_check_packets sw1 "dev vx0 egress" 102 5
+       tc_check_packets $sw1 "dev vx0 egress" 102 5
        log_test $? 0 "NS suppression (VLAN $vid2)"
 }