|
@@ -0,0 +1,69 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+# SPDX-License-Identifier: GPL-2.0
|
|
|
|
+
|
|
|
|
+ALL_TESTS="sticky"
|
|
|
|
+NUM_NETIFS=4
|
|
|
|
+TEST_MAC=de:ad:be:ef:13:37
|
|
|
|
+source lib.sh
|
|
|
|
+
|
|
|
|
+switch_create()
|
|
|
|
+{
|
|
|
|
+ ip link add dev br0 type bridge
|
|
|
|
+
|
|
|
|
+ ip link set dev $swp1 master br0
|
|
|
|
+ ip link set dev $swp2 master br0
|
|
|
|
+
|
|
|
|
+ ip link set dev br0 up
|
|
|
|
+ ip link set dev $h1 up
|
|
|
|
+ ip link set dev $swp1 up
|
|
|
|
+ ip link set dev $h2 up
|
|
|
|
+ ip link set dev $swp2 up
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+switch_destroy()
|
|
|
|
+{
|
|
|
|
+ ip link set dev $swp2 down
|
|
|
|
+ ip link set dev $h2 down
|
|
|
|
+ ip link set dev $swp1 down
|
|
|
|
+ ip link set dev $h1 down
|
|
|
|
+
|
|
|
|
+ ip link del dev br0
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+setup_prepare()
|
|
|
|
+{
|
|
|
|
+ h1=${NETIFS[p1]}
|
|
|
|
+ swp1=${NETIFS[p2]}
|
|
|
|
+ h2=${NETIFS[p3]}
|
|
|
|
+ swp2=${NETIFS[p4]}
|
|
|
|
+
|
|
|
|
+ switch_create
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+cleanup()
|
|
|
|
+{
|
|
|
|
+ pre_cleanup
|
|
|
|
+ switch_destroy
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+sticky()
|
|
|
|
+{
|
|
|
|
+ bridge fdb add $TEST_MAC dev $swp1 master static sticky
|
|
|
|
+ check_err $? "Could not add fdb entry"
|
|
|
|
+ bridge fdb del $TEST_MAC dev $swp1 vlan 1 master static sticky
|
|
|
|
+ $MZ $h2 -c 1 -a $TEST_MAC -t arp "request" -q
|
|
|
|
+ bridge -j fdb show br br0 brport $swp1\
|
|
|
|
+ | jq -e ".[] | select(.mac == \"$TEST_MAC\")" &> /dev/null
|
|
|
|
+ check_err $? "Did not find FDB record when should"
|
|
|
|
+
|
|
|
|
+ log_test "Sticky fdb entry"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+trap cleanup EXIT
|
|
|
|
+
|
|
|
|
+setup_prepare
|
|
|
|
+setup_wait
|
|
|
|
+
|
|
|
|
+tests_run
|
|
|
|
+
|
|
|
|
+exit $EXIT_STATUS
|