Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3#
4# Test vetoing of FDB entries that mlxsw can not offload. This exercises several
5# different veto vectors to test various rollback scenarios in the vxlan driver.
6
7: ${LOCAL_IP:=198.51.100.1}
8export LOCAL_IP
9
10: ${REMOTE_IP_1:=198.51.100.2}
11export REMOTE_IP_1
12
13: ${REMOTE_IP_2:=198.51.100.3}
14export REMOTE_IP_2
15
16: ${UDPCSUM_FLAFS:=noudpcsum}
17export UDPCSUM_FLAFS
18
19: ${MC_IP:=224.0.0.1}
20export MC_IP
21
22lib_dir=$(dirname $0)/../../../net/forwarding
23
24ALL_TESTS="
25 fdb_create_veto_test
26 fdb_replace_veto_test
27 fdb_append_veto_test
28 fdb_changelink_veto_test
29"
30NUM_NETIFS=2
31source $lib_dir/lib.sh
32
33setup_prepare()
34{
35 swp1=${NETIFS[p1]}
36 swp2=${NETIFS[p2]}
37
38 ip link add dev br0 type bridge mcast_snooping 0
39
40 ip link set dev $swp1 up
41 ip link set dev $swp1 master br0
42 ip link set dev $swp2 up
43
44 ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \
45 ttl 20 tos inherit local $LOCAL_IP dstport 4789
46 ip link set dev vxlan0 master br0
47}
48
49cleanup()
50{
51 pre_cleanup
52
53 ip link set dev vxlan0 nomaster
54 ip link del dev vxlan0
55
56 ip link set dev $swp2 down
57 ip link set dev $swp1 nomaster
58 ip link set dev $swp1 down
59
60 ip link del dev br0
61}
62
63fdb_create_veto_test()
64{
65 RET=0
66
67 bridge fdb add 01:02:03:04:05:06 dev vxlan0 self static \
68 dst $REMOTE_IP_1 2>/dev/null
69 check_fail $? "multicast MAC not rejected"
70
71 bridge fdb add 01:02:03:04:05:06 dev vxlan0 self static \
72 dst $REMOTE_IP_1 2>&1 >/dev/null | grep -q mlxsw_spectrum
73 check_err $? "multicast MAC rejected without extack"
74
75 log_test "vxlan FDB veto - create"
76}
77
78fdb_replace_veto_test()
79{
80 RET=0
81
82 bridge fdb add 00:01:02:03:04:05 dev vxlan0 self static \
83 dst $REMOTE_IP_1
84 check_err $? "valid FDB rejected"
85
86 bridge fdb replace 00:01:02:03:04:05 dev vxlan0 self static \
87 dst $REMOTE_IP_1 port 1234 2>/dev/null
88 check_fail $? "FDB with an explicit port not rejected"
89
90 bridge fdb replace 00:01:02:03:04:05 dev vxlan0 self static \
91 dst $REMOTE_IP_1 port 1234 2>&1 >/dev/null \
92 | grep -q mlxsw_spectrum
93 check_err $? "FDB with an explicit port rejected without extack"
94
95 log_test "vxlan FDB veto - replace"
96}
97
98fdb_append_veto_test()
99{
100 RET=0
101
102 bridge fdb add 00:00:00:00:00:00 dev vxlan0 self static \
103 dst $REMOTE_IP_1
104 check_err $? "valid FDB rejected"
105
106 bridge fdb append 00:00:00:00:00:00 dev vxlan0 self static \
107 dst $REMOTE_IP_2 port 1234 2>/dev/null
108 check_fail $? "FDB with an explicit port not rejected"
109
110 bridge fdb append 00:00:00:00:00:00 dev vxlan0 self static \
111 dst $REMOTE_IP_2 port 1234 2>&1 >/dev/null \
112 | grep -q mlxsw_spectrum
113 check_err $? "FDB with an explicit port rejected without extack"
114
115 log_test "vxlan FDB veto - append"
116}
117
118fdb_changelink_veto_test()
119{
120 RET=0
121
122 ip link set dev vxlan0 type vxlan \
123 group $MC_IP dev lo 2>/dev/null
124 check_fail $? "FDB with a multicast IP not rejected"
125
126 ip link set dev vxlan0 type vxlan \
127 group $MC_IP dev lo 2>&1 >/dev/null \
128 | grep -q mlxsw_spectrum
129 check_err $? "FDB with a multicast IP rejected without extack"
130
131 log_test "vxlan FDB veto - changelink"
132}
133
134trap cleanup EXIT
135
136setup_prepare
137setup_wait
138
139tests_run
140
141exit $EXIT_STATUS