On Tue, Oct 10, 2023, 11:53 AM Amit Cohen via Bridge <
bridge@lists.linux-foundation.org> wrote:

> Extend the test to check flushing with bridge device, test flush by device
> and by VID.
>
> Add test case for flushing with "self" and "master" and attributes that are
> supported only in one driver, this is unrecommended configuration, check it
> to verify that user gets an error.
>
> Signed-off-by: Amit Cohen <amco...@nvidia.com>
> ---
>  tools/testing/selftests/net/fdb_flush.sh | 96 ++++++++++++++++++++++++
>  1 file changed, 96 insertions(+)
>
> diff --git a/tools/testing/selftests/net/fdb_flush.sh
> b/tools/testing/selftests/net/fdb_flush.sh
> index 3050b031f46d..90e7a29e0476 100755
> --- a/tools/testing/selftests/net/fdb_flush.sh
> +++ b/tools/testing/selftests/net/fdb_flush.sh
> @@ -32,6 +32,9 @@ TESTS="
>         $FLUSH_BY_FLAG_TESTS
>         vxlan_test_flush_by_several_args
>         vxlan_test_flush_by_remote_attributes
> +       bridge_test_flush_by_dev
> +       bridge_test_flush_by_vlan
> +       bridge_vxlan_test_flush
>  "
>
>  : ${VERBOSE:=0}
> @@ -647,6 +650,93 @@ vxlan_test_flush_by_remote_attributes()
>         log_test $? 0 "Check how many entries were flushed"
>  }
>
> +bridge_test_flush_by_dev()
> +{
> +       local dst_ip=192.0.2.1
> +       local br0_n_ent_t0=$($BRIDGE fdb show dev br0 | wc -l)
> +       local br1_n_ent_t0=$($BRIDGE fdb show dev br1 | wc -l)
> +
> +       fdb_add_mac_pool_1 br0 dst $dst_ip
> +       fdb_add_mac_pool_2 br1 dst $dst_ip
> +
> +       # Each 'fdb add' command adds one extra entry in the bridge with
> the
> +       # default vlan.
> +       local exp_br0_n_ent=$(($br0_n_ent_t0 + 2 * $mac_pool_1_len))
> +       local exp_br1_n_ent=$(($br1_n_ent_t0 + 2 * $mac_pool_2_len))
> +
> +       fdb_check_n_entries_by_dev_filter br0 $exp_br0_n_ent
> +       fdb_check_n_entries_by_dev_filter br1 $exp_br1_n_ent
> +
> +       run_cmd "$BRIDGE fdb flush dev br0"
> +       log_test $? 0 "Flush FDB by dev br0"
> +
> +       # The default entry should not be flushed
> +       fdb_check_n_entries_by_dev_filter br0 1
> +       log_test $? 0 "Flush FDB by dev br0 - test br0 entries"
> +
> +       fdb_check_n_entries_by_dev_filter br1 $exp_br1_n_ent
> +       log_test $? 0 "Flush FDB by dev br0 - test br1 entries"
> +}
> +
> +bridge_test_flush_by_vlan()
> +{
> +       local vlan_1=10
> +       local vlan_2=20
> +       local vlan_1_ent_t0
> +       local vlan_2_ent_t0
> +
> +       $BRIDGE vlan add vid $vlan_1 dev br0 self
> +       $BRIDGE vlan add vid $vlan_2 dev br0 self
> +
> +       vlan_1_ent_t0=$($BRIDGE fdb show dev br0 | grep "vlan $vlan_1" |
> wc -l)
> +       vlan_2_ent_t0=$($BRIDGE fdb show dev br0 | grep "vlan $vlan_2" |
> wc -l)
> +
> +       fdb_add_mac_pool_1 br0 vlan $vlan_1
> +       fdb_add_mac_pool_2 br0 vlan $vlan_2
> +
> +       local exp_vlan_1_ent=$(($vlan_1_ent_t0 + $mac_pool_1_len))
> +       local exp_vlan_2_ent=$(($vlan_2_ent_t0 + $mac_pool_2_len))
> +
> +       fdb_check_n_entries_by_dev_filter br0 $exp_vlan_1_ent vlan $vlan_1
> +       fdb_check_n_entries_by_dev_filter br0 $exp_vlan_2_ent vlan $vlan_2
> +
> +       run_cmd "$BRIDGE fdb flush dev br0 vlan $vlan_1"
> +       log_test $? 0 "Flush FDB by dev br0 and vlan $vlan_1"
> +
> +       fdb_check_n_entries_by_dev_filter br0 0 vlan $vlan_1
> +       log_test $? 0 "Test entries with vlan $vlan_1"
> +
> +       fdb_check_n_entries_by_dev_filter br0 $exp_vlan_2_ent vlan $vlan_2
> +       log_test $? 0 "Test entries with vlan $vlan_2"
> +}
> +
> +bridge_vxlan_test_flush()
> +{
> +       local vlan_1=10
> +       local dst_ip=192.0.2.1
> +
> +       $IP link set dev vx10 master br0
> +       $BRIDGE vlan add vid $vlan_1 dev br0 self
> +       $BRIDGE vlan add vid $vlan_1 dev vx10
> +
> +       fdb_add_mac_pool_1 vx10 vni 3000 dst $dst_ip self master
> +
> +       fdb_check_n_entries_by_dev_filter vx10 $mac_pool_1_len vlan $vlan_1
> +       fdb_check_n_entries_by_dev_filter vx10 $mac_pool_1_len vni 3000
> +
> +       # Such command should fail in VXLAN driver as vlan is not
> supported,
> +       # but the command should flush the entries in the bridge
> +       run_cmd "$BRIDGE fdb flush dev vx10 vlan $vlan_1 master self"
> +       log_test $? 255 \
> +               "Flush FDB by dev vx10, vlan $vlan_1, master and self"
> +
> +       fdb_check_n_entries_by_dev_filter vx10 0 vlan $vlan_1
> +       log_test $? 0 "Test entries with vlan $vlan_1"
> +
> +       fdb_check_n_entries_by_dev_filter vx10 $mac_pool_1_len dst $dst_ip
> +       log_test $? 0 "Test entries with dst $dst_ip"
> +}
> +
>  setup()
>  {
>         IP="ip -netns ns1"
> @@ -656,10 +746,16 @@ setup()
>
>         $IP link add name vx10 type vxlan id 1000 dstport "$VXPORT"
>         $IP link add name vx20 type vxlan id 2000 dstport "$VXPORT"
> +
> +       $IP link add br0 type bridge vlan_filtering 1
> +       $IP link add br1 type bridge vlan_filtering 1
>  }
>
>  cleanup()
>  {
> +       $IP link del dev br1
> +       $IP link del dev br0
> +
>         $IP link del dev vx20
>         $IP link del dev vx10
>
> --
> 2.40.1
>
>

Reply via email to