xref: /linux/tools/testing/selftests/net/fdb_notify.sh (revision c34e9ab9a612ee8b18273398ef75c207b01f516d)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4source lib.sh
5
6ALL_TESTS="
7	test_dup_bridge
8	test_dup_vxlan_self
9	test_dup_vxlan_master
10	test_dup_macvlan_self
11	test_dup_macvlan_master
12"
13
14do_test_dup()
15{
16	local op=$1; shift
17	local what=$1; shift
18	local tmpf
19
20	RET=0
21
22	tmpf=$(mktemp)
23	defer rm "$tmpf"
24
25	defer_scope_push
26		bridge monitor fdb &> "$tmpf" &
27		defer kill_process $!
28
29		sleep 0.5
30		bridge fdb "$op" 00:11:22:33:44:55 vlan 1 "$@"
31		sleep 0.5
32	defer_scope_pop
33
34	local count=$(grep -c -e 00:11:22:33:44:55 $tmpf)
35	((count == 1))
36	check_err $? "Got $count notifications, expected 1"
37
38	log_test "$what $op: Duplicate notifications"
39}
40
41test_dup_bridge()
42{
43	ip_link_add br up type bridge vlan_filtering 1
44	do_test_dup add "bridge" dev br self
45	do_test_dup del "bridge" dev br self
46}
47
48test_dup_vxlan_self()
49{
50	ip_link_add br up type bridge vlan_filtering 1
51	ip_link_add vx up type vxlan id 2000 dstport 4789
52	ip_link_master vx br
53
54	do_test_dup add "vxlan" dev vx self dst 192.0.2.1
55	do_test_dup del "vxlan" dev vx self dst 192.0.2.1
56}
57
58test_dup_vxlan_master()
59{
60	ip_link_add br up type bridge vlan_filtering 1
61	ip_link_add vx up type vxlan id 2000 dstport 4789
62	ip_link_master vx br
63
64	do_test_dup add "vxlan master" dev vx master
65	do_test_dup del "vxlan master" dev vx master
66}
67
68test_dup_macvlan_self()
69{
70	ip_link_add dd up type dummy
71	ip_link_add mv up link dd type macvlan mode passthru
72
73	do_test_dup add "macvlan self" dev mv self
74	do_test_dup del "macvlan self" dev mv self
75}
76
77test_dup_macvlan_master()
78{
79	ip_link_add br up type bridge vlan_filtering 1
80	ip_link_add dd up type dummy
81	ip_link_add mv up link dd type macvlan mode passthru
82	ip_link_master mv br
83
84	do_test_dup add "macvlan master" dev mv self
85	do_test_dup del "macvlan master" dev mv self
86}
87
88cleanup()
89{
90	defer_scopes_cleanup
91}
92
93trap cleanup EXIT
94tests_run
95
96exit $EXIT_STATUS
97