115880becSPetr Machata#!/bin/bash 215880becSPetr Machata# SPDX-License-Identifier: GPL-2.0 315880becSPetr Machata 415880becSPetr Machatasource lib.sh 515880becSPetr Machata 615880becSPetr MachataALL_TESTS=" 715880becSPetr Machata test_dup_bridge 815880becSPetr Machata test_dup_vxlan_self 915880becSPetr Machata test_dup_vxlan_master 1015880becSPetr Machata test_dup_macvlan_self 1115880becSPetr Machata test_dup_macvlan_master 1215880becSPetr Machata" 1315880becSPetr Machata 1415880becSPetr Machatado_test_dup() 1515880becSPetr Machata{ 1615880becSPetr Machata local op=$1; shift 1715880becSPetr Machata local what=$1; shift 1815880becSPetr Machata local tmpf 1915880becSPetr Machata 2015880becSPetr Machata RET=0 2115880becSPetr Machata 2215880becSPetr Machata tmpf=$(mktemp) 2315880becSPetr Machata defer rm "$tmpf" 2415880becSPetr Machata 2515880becSPetr Machata defer_scope_push 2615880becSPetr Machata bridge monitor fdb &> "$tmpf" & 2715880becSPetr Machata defer kill_process $! 2815880becSPetr Machata 2915880becSPetr Machata sleep 0.5 3015880becSPetr Machata bridge fdb "$op" 00:11:22:33:44:55 vlan 1 "$@" 3115880becSPetr Machata sleep 0.5 3215880becSPetr Machata defer_scope_pop 3315880becSPetr Machata 3415880becSPetr Machata local count=$(grep -c -e 00:11:22:33:44:55 $tmpf) 3515880becSPetr Machata ((count == 1)) 3615880becSPetr Machata check_err $? "Got $count notifications, expected 1" 3715880becSPetr Machata 3815880becSPetr Machata log_test "$what $op: Duplicate notifications" 3915880becSPetr Machata} 4015880becSPetr Machata 4115880becSPetr Machatatest_dup_bridge() 4215880becSPetr Machata{ 4315880becSPetr Machata ip_link_add br up type bridge vlan_filtering 1 4415880becSPetr Machata do_test_dup add "bridge" dev br self 4515880becSPetr Machata do_test_dup del "bridge" dev br self 4615880becSPetr Machata} 4715880becSPetr Machata 4815880becSPetr Machatatest_dup_vxlan_self() 4915880becSPetr Machata{ 5015880becSPetr Machata ip_link_add br up type bridge vlan_filtering 1 5115880becSPetr Machata ip_link_add vx up type vxlan id 2000 dstport 4789 52*8653eb21SPetr Machata ip_link_set_master vx br 5315880becSPetr Machata 5415880becSPetr Machata do_test_dup add "vxlan" dev vx self dst 192.0.2.1 5515880becSPetr Machata do_test_dup del "vxlan" dev vx self dst 192.0.2.1 5615880becSPetr Machata} 5715880becSPetr Machata 5815880becSPetr Machatatest_dup_vxlan_master() 5915880becSPetr Machata{ 6015880becSPetr Machata ip_link_add br up type bridge vlan_filtering 1 6115880becSPetr Machata ip_link_add vx up type vxlan id 2000 dstport 4789 62*8653eb21SPetr Machata ip_link_set_master vx br 6315880becSPetr Machata 6415880becSPetr Machata do_test_dup add "vxlan master" dev vx master 6515880becSPetr Machata do_test_dup del "vxlan master" dev vx master 6615880becSPetr Machata} 6715880becSPetr Machata 6815880becSPetr Machatatest_dup_macvlan_self() 6915880becSPetr Machata{ 7015880becSPetr Machata ip_link_add dd up type dummy 7115880becSPetr Machata ip_link_add mv up link dd type macvlan mode passthru 7215880becSPetr Machata 7315880becSPetr Machata do_test_dup add "macvlan self" dev mv self 7415880becSPetr Machata do_test_dup del "macvlan self" dev mv self 7515880becSPetr Machata} 7615880becSPetr Machata 7715880becSPetr Machatatest_dup_macvlan_master() 7815880becSPetr Machata{ 7915880becSPetr Machata ip_link_add br up type bridge vlan_filtering 1 8015880becSPetr Machata ip_link_add dd up type dummy 8115880becSPetr Machata ip_link_add mv up link dd type macvlan mode passthru 82*8653eb21SPetr Machata ip_link_set_master mv br 8315880becSPetr Machata 8415880becSPetr Machata do_test_dup add "macvlan master" dev mv self 8515880becSPetr Machata do_test_dup del "macvlan master" dev mv self 8615880becSPetr Machata} 8715880becSPetr Machata 8815880becSPetr Machatacleanup() 8915880becSPetr Machata{ 9015880becSPetr Machata defer_scopes_cleanup 9115880becSPetr Machata} 9215880becSPetr Machata 9315880becSPetr Machatatrap cleanup EXIT 9415880becSPetr Machatatests_run 9515880becSPetr Machata 9615880becSPetr Machataexit $EXIT_STATUS 97