1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4ALL_TESTS="sticky"
5NUM_NETIFS=4
6TEST_MAC=de:ad:be:ef:13:37
7source lib.sh
8
9switch_create()
10{
11	ip link add dev br0 type bridge
12
13	ip link set dev $swp1 master br0
14	ip link set dev $swp2 master br0
15
16	ip link set dev br0 up
17	ip link set dev $h1 up
18	ip link set dev $swp1 up
19	ip link set dev $h2 up
20	ip link set dev $swp2 up
21}
22
23switch_destroy()
24{
25	ip link set dev $swp2 down
26	ip link set dev $h2 down
27	ip link set dev $swp1 down
28	ip link set dev $h1 down
29
30	ip link del dev br0
31}
32
33setup_prepare()
34{
35	h1=${NETIFS[p1]}
36	swp1=${NETIFS[p2]}
37	h2=${NETIFS[p3]}
38	swp2=${NETIFS[p4]}
39
40	switch_create
41}
42
43cleanup()
44{
45	pre_cleanup
46	switch_destroy
47}
48
49sticky()
50{
51	bridge fdb add $TEST_MAC dev $swp1 master static sticky
52	check_err $? "Could not add fdb entry"
53	bridge fdb del $TEST_MAC dev $swp1 vlan 1 master static sticky
54	$MZ $h2 -c 1 -a $TEST_MAC -t arp "request" -q
55	bridge -j fdb show br br0 brport $swp1\
56		| jq -e ".[] | select(.mac == \"$TEST_MAC\")" &> /dev/null
57	check_err $? "Did not find FDB record when should"
58
59	log_test "Sticky fdb entry"
60}
61
62trap cleanup EXIT
63
64setup_prepare
65setup_wait
66
67tests_run
68
69exit $EXIT_STATUS
70