]> Git Repo - J-linux.git/blob - tools/testing/selftests/net/forwarding/tc_vlan_modify.sh
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / tools / testing / selftests / net / forwarding / tc_vlan_modify.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3
4 ALL_TESTS="
5         vlan_modify_ingress
6         vlan_modify_egress
7 "
8
9 NUM_NETIFS=4
10 CHECK_TC="yes"
11 source lib.sh
12
13 h1_create()
14 {
15         simple_if_init $h1 192.0.2.1/28 2001:db8:1::1/64
16         vlan_create $h1 85 v$h1 192.0.2.17/28 2001:db8:2::1/64
17 }
18
19 h1_destroy()
20 {
21         vlan_destroy $h1 85
22         simple_if_fini $h1 192.0.2.1/28 2001:db8:1::1/64
23 }
24
25 h2_create()
26 {
27         simple_if_init $h2 192.0.2.2/28 2001:db8:1::2/64
28         vlan_create $h2 65 v$h2 192.0.2.18/28 2001:db8:2::2/64
29 }
30
31 h2_destroy()
32 {
33         vlan_destroy $h2 65
34         simple_if_fini $h2 192.0.2.2/28 2001:db8:1::2/64
35 }
36
37 switch_create()
38 {
39         ip link add dev br0 type bridge vlan_filtering 1 mcast_snooping 0
40
41         ip link set dev $swp1 master br0
42         ip link set dev $swp2 master br0
43
44         ip link set dev br0 up
45         ip link set dev $swp1 up
46         ip link set dev $swp2 up
47
48         bridge vlan add dev $swp1 vid 85
49         bridge vlan add dev $swp2 vid 65
50
51         bridge vlan add dev $swp2 vid 85
52         bridge vlan add dev $swp1 vid 65
53
54         tc qdisc add dev $swp1 clsact
55         tc qdisc add dev $swp2 clsact
56 }
57
58 switch_destroy()
59 {
60         tc qdisc del dev $swp2 clsact
61         tc qdisc del dev $swp1 clsact
62
63         bridge vlan del vid 65 dev $swp1
64         bridge vlan del vid 85 dev $swp2
65
66         bridge vlan del vid 65 dev $swp2
67         bridge vlan del vid 85 dev $swp1
68
69         ip link set dev $swp2 down
70         ip link set dev $swp1 down
71
72         ip link del dev br0
73 }
74
75 setup_prepare()
76 {
77         h1=${NETIFS[p1]}
78         swp1=${NETIFS[p2]}
79
80         swp2=${NETIFS[p3]}
81         h2=${NETIFS[p4]}
82
83         vrf_prepare
84
85         h1_create
86         h2_create
87
88         switch_create
89 }
90
91 cleanup()
92 {
93         pre_cleanup
94
95         switch_destroy
96
97         h2_destroy
98         h1_destroy
99
100         vrf_cleanup
101 }
102
103 vlan_modify_ingress()
104 {
105         RET=0
106
107         ping_do $h1.85 192.0.2.18
108         check_fail $? "ping between two different vlans passed when should not"
109
110         ping6_do $h1.85 2001:db8:2::2
111         check_fail $? "ping6 between two different vlans passed when should not"
112
113         tc filter add dev $swp1 ingress protocol all pref 1 handle 1 \
114                 flower action vlan modify id 65
115         tc filter add dev $swp2 ingress protocol all pref 1 handle 1 \
116                 flower action vlan modify id 85
117
118         ping_do $h1.85 192.0.2.18
119         check_err $? "ping between two different vlans failed when should not"
120
121         ping6_do $h1.85 2001:db8:2::2
122         check_err $? "ping6 between two different vlans failed when should not"
123
124         log_test "VLAN modify at ingress"
125
126         tc filter del dev $swp2 ingress protocol all pref 1 handle 1 flower
127         tc filter del dev $swp1 ingress protocol all pref 1 handle 1 flower
128 }
129
130 vlan_modify_egress()
131 {
132         RET=0
133
134         ping_do $h1.85 192.0.2.18
135         check_fail $? "ping between two different vlans passed when should not"
136
137         ping6_do $h1.85 2001:db8:2::2
138         check_fail $? "ping6 between two different vlans passed when should not"
139
140         tc filter add dev $swp1 egress protocol all pref 1 handle 1 \
141                 flower action vlan modify id 85
142         tc filter add dev $swp2 egress protocol all pref 1 handle 1 \
143                 flower action vlan modify id 65
144
145         ping_do $h1.85 192.0.2.18
146         check_err $? "ping between two different vlans failed when should not"
147
148         ping6_do $h1.85 2001:db8:2::2
149         check_err $? "ping6 between two different vlans failed when should not"
150
151         log_test "VLAN modify at egress"
152
153         tc filter del dev $swp2 egress protocol all pref 1 handle 1 flower
154         tc filter del dev $swp1 egress protocol all pref 1 handle 1 flower
155 }
156
157 trap cleanup EXIT
158
159 setup_prepare
160 setup_wait
161
162 tests_run
163
164 exit $EXIT_STATUS
This page took 0.036003 seconds and 4 git commands to generate.