From: Hangbin Liu <liuhangbin@gmail.com>
To: Ido Schimmel <idosch@nvidia.com>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
edumazet@google.com, roopa@nvidia.com, razor@blackwall.org,
petrm@nvidia.com
Subject: Re: [PATCH net-next 8/9] selftests: bridge_mdb: Add MDB bulk deletion test
Date: Mon, 18 Dec 2023 16:22:29 +0800 [thread overview]
Message-ID: <ZYABRWdw798FbaTf@Laptop-X1> (raw)
In-Reply-To: <20231217083244.4076193-9-idosch@nvidia.com>
On Sun, Dec 17, 2023 at 10:32:43AM +0200, Ido Schimmel wrote:
> Add test cases to verify the behavior of the MDB bulk deletion
> functionality in the bridge driver.
>
> Signed-off-by: Ido Schimmel <idosch@nvidia.com>
> Acked-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
> ---
> .../selftests/net/forwarding/bridge_mdb.sh | 191 +++++++++++++++++-
> 1 file changed, 189 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/net/forwarding/bridge_mdb.sh b/tools/testing/selftests/net/forwarding/bridge_mdb.sh
> index e4e3e9405056..61348f71728c 100755
> --- a/tools/testing/selftests/net/forwarding/bridge_mdb.sh
> +++ b/tools/testing/selftests/net/forwarding/bridge_mdb.sh
> @@ -803,11 +803,198 @@ cfg_test_dump()
> cfg_test_dump_common "L2" l2_grps_get
> }
>
> +# Check flush functionality with different parameters.
> +cfg_test_flush()
> +{
> + local num_entries
> +
> + # Add entries with different attributes and check that they are all
> + # flushed when the flush command is given with no parameters.
> +
> + # Different port.
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 vid 10
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.2 vid 10
> +
> + # Different VLAN ID.
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.3 vid 10
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.4 vid 20
> +
> + # Different routing protocol.
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.5 vid 10 proto bgp
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.6 vid 10 proto zebra
> +
> + # Different state.
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.7 vid 10 permanent
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.8 vid 10 temp
> +
> + bridge mdb flush dev br0
> + num_entries=$(bridge mdb show dev br0 | wc -l)
> + [[ $num_entries -eq 0 ]]
> + check_err $? 0 "Not all entries flushed after flush all"
> +
> + # Check that when flushing by port only entries programmed with the
> + # specified port are flushed and the rest are not.
> +
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 vid 10
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.1 vid 10
> + bridge mdb add dev br0 port br0 grp 239.1.1.1 vid 10
> +
> + bridge mdb flush dev br0 port $swp1
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp1"
> + check_fail $? "Entry not flushed by specified port"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp2"
> + check_err $? "Entry flushed by wrong port"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port br0"
> + check_err $? "Host entry flushed by wrong port"
> +
> + bridge mdb flush dev br0 port br0
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port br0"
> + check_fail $? "Host entry not flushed by specified port"
> +
> + bridge mdb flush dev br0
> +
> + # Check that when flushing by VLAN ID only entries programmed with the
> + # specified VLAN ID are flushed and the rest are not.
> +
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 vid 10
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.1 vid 10
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 vid 20
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.1 vid 20
> +
> + bridge mdb flush dev br0 vid 10
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 &> /dev/null
> + check_fail $? "Entry not flushed by specified VLAN ID"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 20 &> /dev/null
> + check_err $? "Entry flushed by wrong VLAN ID"
> +
> + bridge mdb flush dev br0
> +
> + # Check that all permanent entries are flushed when "permanent" is
> + # specified and that temporary entries are not.
> +
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 permanent vid 10
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.1 temp vid 10
> +
> + bridge mdb flush dev br0 permanent
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp1"
> + check_fail $? "Entry not flushed by \"permanent\" state"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp2"
> + check_err $? "Entry flushed by wrong state (\"permanent\")"
> +
> + bridge mdb flush dev br0
> +
> + # Check that all temporary entries are flushed when "nopermanent" is
> + # specified and that permanent entries are not.
> +
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 permanent vid 10
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.1 temp vid 10
> +
> + bridge mdb flush dev br0 nopermanent
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp1"
> + check_err $? "Entry flushed by wrong state (\"nopermanent\")"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp2"
> + check_fail $? "Entry not flushed by \"nopermanent\" state"
> +
> + bridge mdb flush dev br0
> +
> + # Check that L2 host entries are not flushed when "nopermanent" is
> + # specified, but flushed when "permanent" is specified.
> +
> + bridge mdb add dev br0 port br0 grp 01:02:03:04:05:06 permanent vid 10
> +
> + bridge mdb flush dev br0 nopermanent
> +
> + bridge mdb get dev br0 grp 01:02:03:04:05:06 vid 10 &> /dev/null
> + check_err $? "L2 host entry flushed by wrong state (\"nopermanent\")"
> +
> + bridge mdb flush dev br0 permanent
> +
> + bridge mdb get dev br0 grp 01:02:03:04:05:06 vid 10 &> /dev/null
> + check_fail $? "L2 host entry not flushed by \"permanent\" state"
> +
> + bridge mdb flush dev br0
> +
> + # Check that IPv4 host entries are not flushed when "permanent" is
> + # specified, but flushed when "nopermanent" is specified.
> +
> + bridge mdb add dev br0 port br0 grp 239.1.1.1 temp vid 10
> +
> + bridge mdb flush dev br0 permanent
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 &> /dev/null
> + check_err $? "IPv4 host entry flushed by wrong state (\"permanent\")"
> +
> + bridge mdb flush dev br0 nopermanent
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 &> /dev/null
> + check_fail $? "IPv4 host entry not flushed by \"nopermanent\" state"
> +
> + bridge mdb flush dev br0
> +
> + # Check that IPv6 host entries are not flushed when "permanent" is
> + # specified, but flushed when "nopermanent" is specified.
> +
> + bridge mdb add dev br0 port br0 grp ff0e::1 temp vid 10
> +
> + bridge mdb flush dev br0 permanent
> +
> + bridge mdb get dev br0 grp ff0e::1 vid 10 &> /dev/null
> + check_err $? "IPv6 host entry flushed by wrong state (\"permanent\")"
> +
> + bridge mdb flush dev br0 nopermanent
> +
> + bridge mdb get dev br0 grp ff0e::1 vid 10 &> /dev/null
> + check_fail $? "IPv6 host entry not flushed by \"nopermanent\" state"
> +
> + bridge mdb flush dev br0
> +
> + # Check that when flushing by routing protocol only entries programmed
> + # with the specified routing protocol are flushed and the rest are not.
> +
> + bridge mdb add dev br0 port $swp1 grp 239.1.1.1 vid 10 proto bgp
> + bridge mdb add dev br0 port $swp2 grp 239.1.1.1 vid 10 proto zebra
> + bridge mdb add dev br0 port br0 grp 239.1.1.1 vid 10
> +
> + bridge mdb flush dev br0 proto bgp
> +
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp1"
> + check_fail $? "Entry not flushed by specified routing protocol"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port $swp2"
> + check_err $? "Entry flushed by wrong routing protocol"
> + bridge mdb get dev br0 grp 239.1.1.1 vid 10 | grep -q "port br0"
> + check_err $? "Host entry flushed by wrong routing protocol"
> +
> + bridge mdb flush dev br0
> +
> + # Test that an error is returned when trying to flush using unsupported
> + # parameters.
> +
> + bridge mdb flush dev br0 src_vni 10 &> /dev/null
> + check_fail $? "Managed to flush by source VNI"
> +
> + bridge mdb flush dev br0 dst 198.51.100.1 &> /dev/null
> + check_fail $? "Managed to flush by destination IP"
> +
> + bridge mdb flush dev br0 dst_port 4789 &> /dev/null
> + check_fail $? "Managed to flush by UDP destination port"
> +
> + bridge mdb flush dev br0 vni 10 &> /dev/null
> + check_fail $? "Managed to flush by destination VNI"
> +
> + log_test "Flush tests"
> +}
> +
> cfg_test()
> {
> cfg_test_host
> cfg_test_port
> cfg_test_dump
> + cfg_test_flush
> }
>
> __fwd_test_host_ip()
> @@ -1166,8 +1353,8 @@ ctrl_test()
> ctrl_mldv2_is_in_test
> }
>
> -if ! bridge mdb help 2>&1 | grep -q "get"; then
> - echo "SKIP: iproute2 too old, missing bridge mdb get support"
> +if ! bridge mdb help 2>&1 | grep -q "flush"; then
> + echo "SKIP: iproute2 too old, missing bridge mdb flush support"
> exit $ksft_skip
> fi
>
> --
> 2.40.1
>
next prev parent reply other threads:[~2023-12-18 8:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-17 8:32 [PATCH net-next 0/9] Add MDB bulk deletion support Ido Schimmel
2023-12-17 8:32 ` [PATCH net-next 1/9] bridge: add MDB state mask uAPI attribute Ido Schimmel
2023-12-18 10:07 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 2/9] rtnetlink: bridge: Use a different policy for MDB bulk delete Ido Schimmel
2023-12-18 10:08 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 3/9] net: Add MDB bulk deletion device operation Ido Schimmel
2023-12-18 10:08 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 4/9] rtnetlink: bridge: Invoke MDB bulk deletion when needed Ido Schimmel
2023-12-18 10:09 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 5/9] bridge: mdb: Add MDB bulk deletion support Ido Schimmel
2023-12-18 10:11 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 6/9] vxlan: " Ido Schimmel
2023-12-18 10:24 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 7/9] rtnetlink: bridge: Enable MDB bulk deletion Ido Schimmel
2023-12-18 10:25 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 8/9] selftests: bridge_mdb: Add MDB bulk deletion test Ido Schimmel
2023-12-18 8:22 ` Hangbin Liu [this message]
2023-12-18 10:25 ` Nikolay Aleksandrov
2023-12-17 8:32 ` [PATCH net-next 9/9] selftests: vxlan_mdb: " Ido Schimmel
2023-12-18 10:25 ` Nikolay Aleksandrov
2024-02-19 5:54 ` Yujie Liu
2024-02-19 18:25 ` Ido Schimmel
2023-12-20 11:30 ` [PATCH net-next 0/9] Add MDB bulk deletion support patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZYABRWdw798FbaTf@Laptop-X1 \
--to=liuhangbin@gmail.com \
--cc=bridge@lists.linux-foundation.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=petrm@nvidia.com \
--cc=razor@blackwall.org \
--cc=roopa@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).