0001
0002
0003
0004 ALL_TESTS="
0005 ping_ipv4
0006 ping_ipv6
0007 vlan
0008 "
0009 NUM_NETIFS=4
0010 source lib.sh
0011
0012 h1_create()
0013 {
0014 simple_if_init $h1
0015 vlan_create $h1 555 v$h1 192.0.2.1/28 2001:db8:1::1/64
0016 ip -4 route add 192.0.2.128/28 vrf v$h1 nexthop via 192.0.2.2
0017 ip -6 route add 2001:db8:2::/64 vrf v$h1 nexthop via 2001:db8:1::2
0018 }
0019
0020 h1_destroy()
0021 {
0022 ip -6 route del 2001:db8:2::/64 vrf v$h1
0023 ip -4 route del 192.0.2.128/28 vrf v$h1
0024 vlan_destroy $h1 555
0025 simple_if_fini $h1
0026 }
0027
0028 h2_create()
0029 {
0030 simple_if_init $h2 192.0.2.130/28 2001:db8:2::2/64
0031 ip -4 route add 192.0.2.0/28 vrf v$h2 nexthop via 192.0.2.129
0032 ip -6 route add 2001:db8:1::/64 vrf v$h2 nexthop via 2001:db8:2::1
0033 }
0034
0035 h2_destroy()
0036 {
0037 ip -6 route del 2001:db8:1::/64 vrf v$h2
0038 ip -4 route del 192.0.2.0/28 vrf v$h2
0039 simple_if_fini $h2 192.0.2.130/28 2001:db8:2::2/64
0040 }
0041
0042 router_create()
0043 {
0044 ip link add name br1 type bridge vlan_filtering 1
0045 ip link set dev br1 up
0046
0047 ip link set dev $swp1 master br1
0048 ip link set dev $swp1 up
0049
0050 bridge vlan add dev br1 vid 555 self pvid untagged
0051 bridge vlan add dev $swp1 vid 555
0052
0053 __addr_add_del br1 add 192.0.2.2/28 2001:db8:1::2/64
0054
0055 ip link set dev $swp2 up
0056 __addr_add_del $swp2 add 192.0.2.129/28 2001:db8:2::1/64
0057 }
0058
0059 router_destroy()
0060 {
0061 __addr_add_del $swp2 del 192.0.2.129/28 2001:db8:2::1/64
0062 ip link set dev $swp2 down
0063
0064 __addr_add_del br1 del 192.0.2.2/28 2001:db8:1::2/64
0065 ip link set dev $swp1 down
0066 ip link set dev $swp1 nomaster
0067
0068 ip link del dev br1
0069 }
0070
0071 setup_prepare()
0072 {
0073 h1=${NETIFS[p1]}
0074 swp1=${NETIFS[p2]}
0075
0076 swp2=${NETIFS[p3]}
0077 h2=${NETIFS[p4]}
0078
0079 vrf_prepare
0080
0081 h1_create
0082 h2_create
0083
0084 router_create
0085
0086 forwarding_enable
0087 }
0088
0089 cleanup()
0090 {
0091 pre_cleanup
0092
0093 forwarding_restore
0094
0095 router_destroy
0096
0097 h2_destroy
0098 h1_destroy
0099
0100 vrf_cleanup
0101 }
0102
0103 vlan()
0104 {
0105 RET=0
0106
0107 bridge vlan add dev br1 vid 333 self
0108 check_err $? "Can't add a non-PVID VLAN"
0109 bridge vlan del dev br1 vid 333 self
0110 check_err $? "Can't remove a non-PVID VLAN"
0111
0112 log_test "vlan"
0113 }
0114
0115 ping_ipv4()
0116 {
0117 ping_test $h1 192.0.2.130
0118 }
0119
0120 ping_ipv6()
0121 {
0122 ping6_test $h1 2001:db8:2::2
0123 }
0124
0125 trap cleanup EXIT
0126
0127 setup_prepare
0128 setup_wait
0129
0130 tests_run
0131
0132 exit $EXIT_STATUS