Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 ALL_TESTS="ping_ipv4 ping_ipv6 flooding"
0005 NUM_NETIFS=6
0006 CHECK_TC="yes"
0007 source lib.sh
0008 
0009 h1_create()
0010 {
0011         simple_if_init $h1 192.0.2.1/24 2001:db8:1::1/64
0012 }
0013 
0014 h1_destroy()
0015 {
0016         simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
0017 }
0018 
0019 h2_create()
0020 {
0021         simple_if_init $h2 192.0.2.2/24 2001:db8:1::2/64
0022 }
0023 
0024 h2_destroy()
0025 {
0026         simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64
0027 }
0028 
0029 h3_create()
0030 {
0031         simple_if_init $h3 192.0.2.3/24 2001:db8:1::3/64
0032 }
0033 
0034 h3_destroy()
0035 {
0036         simple_if_fini $h3 192.0.2.3/24 2001:db8:1::3/64
0037 }
0038 
0039 switch_create()
0040 {
0041         ip link add dev br0 type bridge
0042 
0043         ip link set dev $swp1 master br0
0044         ip link set dev $swp2 master br0
0045         ip link set dev $swp3 master br0
0046 
0047         ip link set dev $swp1 type bridge_slave isolated on
0048         check_err $? "Can't set isolation on port $swp1"
0049         ip link set dev $swp2 type bridge_slave isolated on
0050         check_err $? "Can't set isolation on port $swp2"
0051         ip link set dev $swp3 type bridge_slave isolated off
0052         check_err $? "Can't disable isolation on port $swp3"
0053 
0054         ip link set dev br0 up
0055         ip link set dev $swp1 up
0056         ip link set dev $swp2 up
0057         ip link set dev $swp3 up
0058 }
0059 
0060 switch_destroy()
0061 {
0062         ip link set dev $swp3 down
0063         ip link set dev $swp2 down
0064         ip link set dev $swp1 down
0065 
0066         ip link del dev br0
0067 }
0068 
0069 setup_prepare()
0070 {
0071         h1=${NETIFS[p1]}
0072         swp1=${NETIFS[p2]}
0073 
0074         swp2=${NETIFS[p3]}
0075         h2=${NETIFS[p4]}
0076 
0077         swp3=${NETIFS[p5]}
0078         h3=${NETIFS[p6]}
0079 
0080         vrf_prepare
0081 
0082         h1_create
0083         h2_create
0084         h3_create
0085 
0086         switch_create
0087 }
0088 
0089 cleanup()
0090 {
0091         pre_cleanup
0092 
0093         switch_destroy
0094 
0095         h3_destroy
0096         h2_destroy
0097         h1_destroy
0098 
0099         vrf_cleanup
0100 }
0101 
0102 ping_ipv4()
0103 {
0104         RET=0
0105         ping_do $h1 192.0.2.2
0106         check_fail $? "Ping worked when it should not have"
0107 
0108         RET=0
0109         ping_do $h3 192.0.2.2
0110         check_err $? "Ping didn't work when it should have"
0111 
0112         log_test "Isolated port ping"
0113 }
0114 
0115 ping_ipv6()
0116 {
0117         RET=0
0118         ping6_do $h1 2001:db8:1::2
0119         check_fail $? "Ping6 worked when it should not have"
0120 
0121         RET=0
0122         ping6_do $h3 2001:db8:1::2
0123         check_err $? "Ping6 didn't work when it should have"
0124 
0125         log_test "Isolated port ping6"
0126 }
0127 
0128 flooding()
0129 {
0130         local mac=de:ad:be:ef:13:37
0131         local ip=192.0.2.100
0132 
0133         RET=0
0134         flood_test_do false $mac $ip $h1 $h2
0135         check_err $? "Packet was flooded when it should not have been"
0136 
0137         RET=0
0138         flood_test_do true $mac $ip $h3 $h2
0139         check_err $? "Packet was not flooded when it should have been"
0140 
0141         log_test "Isolated port flooding"
0142 }
0143 
0144 trap cleanup EXIT
0145 
0146 setup_prepare
0147 setup_wait
0148 
0149 tests_run
0150 
0151 exit $EXIT_STATUS