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 22ALL_TESTS=" 23 ping_ipv4 24 ping_ipv6 25 config_remove_pvid 26 ping_ipv4_fails 27 ping_ipv6_fails 28 config_add_pvid 29 ping_ipv4 30 ping_ipv6 31" 32NUM_NETIFS=4 33source lib.sh 34 35h1_create() 36{ 37 simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/64 38 ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2 39 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2 40} 41 42h1_destroy() 43{ 44 ip -6 route del 2001:db8:2::/64 vrf v$h1 45 ip -4 route del 192.0.2.128/28 vrf v$h1 46 simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/64 47} 48 49h2_create() 50{ 51 simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64 52 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129 53 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1 54} 55 56h2_destroy() 57{ 58 ip -6 route del 2001:db8:1::/64 vrf v$h2 59 ip -4 route del 192.0.2.0/28 vrf v$h2 60 simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64 61} 62 63router_create() 64{ 65 ip link add name br1 address $(mac_get $swp1) \ 66 type bridge vlan_filtering 1 67 ip link set dev br1 up 68 69 ip link set dev $swp1 master br1 70 ip link set dev $swp1 up 71 __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64 72 73 ip link set dev $swp2 up 74 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64 75} 76 77router_destroy() 78{ 79 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64 80 ip link set dev $swp2 down 81 82 __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64 83 ip link set dev $swp1 down 84 ip link set dev $swp1 nomaster 85 86 ip link del dev br1 87} 88 89config_remove_pvid() 90{ 91 log_info "Remove PVID from the bridge" 92 93 bridge vlan add dev br1 vid 1 self 94 sleep 2 95} 96 97config_add_pvid() 98{ 99 log_info "Add PVID to the bridge" 100 101 bridge vlan add dev br1 vid 1 self pvid untagged 102 sleep 2 103} 104 105setup_prepare() 106{ 107 h1=${NETIFS[p1]} 108 swp1=${NETIFS[p2]} 109 110 swp2=${NETIFS[p3]} 111 h2=${NETIFS[p4]} 112 113 vrf_prepare 114 115 h1_create 116 h2_create 117 118 router_create 119 120 forwarding_enable 121} 122 123cleanup() 124{ 125 pre_cleanup 126 127 forwarding_restore 128 129 router_destroy 130 131 h2_destroy 132 h1_destroy 133 134 vrf_cleanup 135} 136 137ping_ipv4() 138{ 139 ping_test $h1 192.0.2.130 140} 141 142ping_ipv6() 143{ 144 ping6_test $h1 2001:db8:2::2 145} 146 147ping_ipv4_fails() 148{ 149 ping_test_fails $h1 192.0.2.130 150} 151 152ping_ipv6_fails() 153{ 154 ping6_test_fails $h1 2001:db8:2::2 155} 156 157trap cleanup EXIT 158 159setup_prepare 160setup_wait 161 162tests_run 163 164exit $EXIT_STATUS 165