1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 3 4 # +------------------------+ +----------------------+ 5 # | H1 (vrf) | | H2 (vrf) | 6 # | + $h1 | | + $h2 | 7 # | | 192.0.2.1/28 | | | 192.0.2.130/28 | 8 # | | 2001:db8:1::1/64 | | | 2001:db8:2::2/64 | 9 # | | | | | | 10 # +----|-------------------+ +--|-------------------+ 11 # | | 12 # +----|--------------------------------------------------|-------------------+ 13 # | SW | | | 14 # | +--|-----------------------------+ + $swp2 | 15 # | | + $swp1 BR1 (802.1q) | 192.0.2.129/28 | 16 # | | 192.0.2.2/28 | 2001:db8:2::1/64 | 17 # | | 2001:db8:1::1/64 | | 18 # | | | | 19 # | +--------------------------------+ | 20 # +---------------------------------------------------------------------------+ 21 22 ALL_TESTS=" 23 ping_ipv4 24 ping_ipv6 25 config_remaster 26 ping_ipv4 27 ping_ipv6 28 config_remove_pvid 29 ping_ipv4_fails 30 ping_ipv6_fails 31 config_add_pvid 32 ping_ipv4 33 ping_ipv6 34 config_late_pvid 35 ping_ipv4 36 ping_ipv6 37 " 38 NUM_NETIFS=4 39 source lib.sh 40 41 h1_create() 42 { 43 simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/64 44 ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2 45 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2 46 } 47 48 h1_destroy() 49 { 50 ip -6 route del 2001:db8:2::/64 vrf v$h1 51 ip -4 route del 192.0.2.128/28 vrf v$h1 52 simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/64 53 } 54 55 h2_create() 56 { 57 simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 58 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129 59 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1 60 } 61 62 h2_destroy() 63 { 64 ip -6 route del 2001:db8:1::/64 vrf v$h2 65 ip -4 route del 192.0.2.0/28 vrf v$h2 66 simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64 67 } 68 69 router_create() 70 { 71 ip link add name br1 address $(mac_get $swp1) \ 72 type bridge vlan_filtering 1 73 ip link set dev br1 up 74 75 ip link set dev $swp1 master br1 76 ip link set dev $swp1 up 77 __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64 78 79 ip link set dev $swp2 up 80 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64 81 } 82 83 router_destroy() 84 { 85 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64 86 ip link set dev $swp2 down 87 88 __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64 89 ip link set dev $swp1 down 90 ip link set dev $swp1 nomaster 91 92 ip link del dev br1 93 } 94 95 config_remaster() 96 { 97 log_info "Remaster bridge slave" 98 99 ip link set dev $swp1 nomaster 100 sleep 2 101 ip link set dev $swp1 master br1 102 } 103 104 config_remove_pvid() 105 { 106 log_info "Remove PVID from the bridge" 107 108 bridge vlan add dev br1 vid 1 self 109 sleep 2 110 } 111 112 config_add_pvid() 113 { 114 log_info "Add PVID to the bridge" 115 116 bridge vlan add dev br1 vid 1 self pvid untagged 117 sleep 2 118 } 119 120 config_late_pvid() 121 { 122 log_info "Add bridge PVID after enslaving port" 123 124 ip link set dev $swp1 nomaster 125 ip link set dev br1 type bridge vlan_default_pvid 0 126 sleep 2 127 ip link set dev $swp1 master br1 128 ip link set dev br1 type bridge vlan_default_pvid 1 129 } 130 131 setup_prepare() 132 { 133 h1=${NETIFS[p1]} 134 swp1=${NETIFS[p2]} 135 136 swp2=${NETIFS[p3]} 137 h2=${NETIFS[p4]} 138 139 vrf_prepare 140 141 h1_create 142 h2_create 143 144 router_create 145 146 forwarding_enable 147 } 148 149 cleanup() 150 { 151 pre_cleanup 152 153 forwarding_restore 154 155 router_destroy 156 157 h2_destroy 158 h1_destroy 159 160 vrf_cleanup 161 } 162 163 ping_ipv4() 164 { 165 ping_test $h1 192.0.2.130 166 } 167 168 ping_ipv6() 169 { 170 ping6_test $h1 2001:db8:2::2 171 } 172 173 ping_ipv4_fails() 174 { 175 ping_test_fails $h1 192.0.2.130 176 } 177 178 ping_ipv6_fails() 179 { 180 ping6_test_fails $h1 2001:db8:2::2 181 } 182 183 trap cleanup EXIT 184 185 setup_prepare 186 setup_wait 187 188 tests_run 189 190 exit $EXIT_STATUS
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.