13446dcd7SPetr Machata#!/bin/bash 23446dcd7SPetr Machata# SPDX-License-Identifier: GPL-2.0 33446dcd7SPetr Machata 43446dcd7SPetr Machata# +-----------------------+ +------------------------+ 53446dcd7SPetr Machata# | H1 (vrf) | | H2 (vrf) | 63446dcd7SPetr Machata# | + $h1.10 | | + $h2.10 | 73446dcd7SPetr Machata# | | 192.0.2.1/28 | | | 192.0.2.2/28 | 83446dcd7SPetr Machata# | | 2001:db8:1::1/64 | | | 2001:db8:1::2/64 | 93446dcd7SPetr Machata# | | | | | | 103446dcd7SPetr Machata# | | + $h1.20 | | | + $h2.20 | 113446dcd7SPetr Machata# | \ | 198.51.100.1/24 | | \ | 198.51.100.2/24 | 123446dcd7SPetr Machata# | \ | 2001:db8:2::1/64 | | \ | 2001:db8:2::2/64 | 133446dcd7SPetr Machata# | \| | | \| | 143446dcd7SPetr Machata# | + $h1 | | + $h2 | 153446dcd7SPetr Machata# +----|------------------+ +----|-------------------+ 163446dcd7SPetr Machata# | | 173446dcd7SPetr Machata# +----|--------------------------------------------------|-------------------+ 183446dcd7SPetr Machata# | SW | | | 193446dcd7SPetr Machata# | +--|--------------------------------------------------|-----------------+ | 203446dcd7SPetr Machata# | | + $swp1 BR0 (802.1q) + $swp2 | | 213446dcd7SPetr Machata# | | vid 10 vid 10 | | 223446dcd7SPetr Machata# | | vid 20 vid 20 | | 233446dcd7SPetr Machata# | | | | 243446dcd7SPetr Machata# | +-----------------------------------------------------------------------+ | 253446dcd7SPetr Machata# +---------------------------------------------------------------------------+ 263446dcd7SPetr Machata 273446dcd7SPetr MachataALL_TESTS=" 283446dcd7SPetr Machata test_8021d 293446dcd7SPetr Machata test_8021q 303446dcd7SPetr Machata test_8021qvs 313446dcd7SPetr Machata" 323446dcd7SPetr Machata 333446dcd7SPetr MachataNUM_NETIFS=4 343446dcd7SPetr Machatasource lib.sh 353446dcd7SPetr Machatasource tc_common.sh 363446dcd7SPetr Machata 373446dcd7SPetr Machatah1_create() 383446dcd7SPetr Machata{ 393446dcd7SPetr Machata simple_if_init $h1 403446dcd7SPetr Machata vlan_create $h1 10 v$h1 192.0.2.1/28 2001:db8:1::1/64 413446dcd7SPetr Machata vlan_create $h1 20 v$h1 198.51.100.1/24 2001:db8:2::1/64 423446dcd7SPetr Machata} 433446dcd7SPetr Machata 443446dcd7SPetr Machatah1_destroy() 453446dcd7SPetr Machata{ 463446dcd7SPetr Machata vlan_destroy $h1 20 473446dcd7SPetr Machata vlan_destroy $h1 10 483446dcd7SPetr Machata simple_if_fini $h1 493446dcd7SPetr Machata} 503446dcd7SPetr Machata 513446dcd7SPetr Machatah2_create() 523446dcd7SPetr Machata{ 533446dcd7SPetr Machata simple_if_init $h2 543446dcd7SPetr Machata vlan_create $h2 10 v$h2 192.0.2.2/28 553446dcd7SPetr Machata vlan_create $h2 20 v$h2 198.51.100.2/24 563446dcd7SPetr Machata} 573446dcd7SPetr Machata 583446dcd7SPetr Machatah2_destroy() 593446dcd7SPetr Machata{ 603446dcd7SPetr Machata vlan_destroy $h2 20 613446dcd7SPetr Machata vlan_destroy $h2 10 623446dcd7SPetr Machata simple_if_fini $h2 633446dcd7SPetr Machata} 643446dcd7SPetr Machata 653446dcd7SPetr Machataswitch_create_8021d() 663446dcd7SPetr Machata{ 673446dcd7SPetr Machata log_info "802.1d tests" 683446dcd7SPetr Machata 693446dcd7SPetr Machata ip link add name br0 type bridge vlan_filtering 0 \ 703446dcd7SPetr Machata mcast_snooping 1 \ 713446dcd7SPetr Machata mcast_igmp_version 3 mcast_mld_version 2 723446dcd7SPetr Machata ip link set dev br0 up 733446dcd7SPetr Machata 743446dcd7SPetr Machata ip link set dev $swp1 master br0 753446dcd7SPetr Machata ip link set dev $swp1 up 763446dcd7SPetr Machata bridge link set dev $swp1 fastleave on 773446dcd7SPetr Machata 783446dcd7SPetr Machata ip link set dev $swp2 master br0 793446dcd7SPetr Machata ip link set dev $swp2 up 803446dcd7SPetr Machata} 813446dcd7SPetr Machata 823446dcd7SPetr Machataswitch_create_8021q() 833446dcd7SPetr Machata{ 843446dcd7SPetr Machata local br_flags=$1; shift 853446dcd7SPetr Machata 863446dcd7SPetr Machata log_info "802.1q $br_flags${br_flags:+ }tests" 873446dcd7SPetr Machata 883446dcd7SPetr Machata ip link add name br0 type bridge vlan_filtering 1 vlan_default_pvid 0 \ 893446dcd7SPetr Machata mcast_snooping 1 $br_flags \ 903446dcd7SPetr Machata mcast_igmp_version 3 mcast_mld_version 2 913446dcd7SPetr Machata bridge vlan add vid 10 dev br0 self 923446dcd7SPetr Machata bridge vlan add vid 20 dev br0 self 933446dcd7SPetr Machata ip link set dev br0 up 943446dcd7SPetr Machata 953446dcd7SPetr Machata ip link set dev $swp1 master br0 963446dcd7SPetr Machata ip link set dev $swp1 up 973446dcd7SPetr Machata bridge link set dev $swp1 fastleave on 983446dcd7SPetr Machata bridge vlan add vid 10 dev $swp1 993446dcd7SPetr Machata bridge vlan add vid 20 dev $swp1 1003446dcd7SPetr Machata 1013446dcd7SPetr Machata ip link set dev $swp2 master br0 1023446dcd7SPetr Machata ip link set dev $swp2 up 1033446dcd7SPetr Machata bridge vlan add vid 10 dev $swp2 1043446dcd7SPetr Machata bridge vlan add vid 20 dev $swp2 1053446dcd7SPetr Machata} 1063446dcd7SPetr Machata 1073446dcd7SPetr Machataswitch_create_8021qvs() 1083446dcd7SPetr Machata{ 1093446dcd7SPetr Machata switch_create_8021q "mcast_vlan_snooping 1" 1103446dcd7SPetr Machata bridge vlan global set dev br0 vid 10 mcast_igmp_version 3 1113446dcd7SPetr Machata bridge vlan global set dev br0 vid 10 mcast_mld_version 2 1123446dcd7SPetr Machata bridge vlan global set dev br0 vid 20 mcast_igmp_version 3 1133446dcd7SPetr Machata bridge vlan global set dev br0 vid 20 mcast_mld_version 2 1143446dcd7SPetr Machata} 1153446dcd7SPetr Machata 1163446dcd7SPetr Machataswitch_destroy() 1173446dcd7SPetr Machata{ 1183446dcd7SPetr Machata ip link set dev $swp2 down 1193446dcd7SPetr Machata ip link set dev $swp2 nomaster 1203446dcd7SPetr Machata 1213446dcd7SPetr Machata ip link set dev $swp1 down 1223446dcd7SPetr Machata ip link set dev $swp1 nomaster 1233446dcd7SPetr Machata 1243446dcd7SPetr Machata ip link set dev br0 down 1253446dcd7SPetr Machata ip link del dev br0 1263446dcd7SPetr Machata} 1273446dcd7SPetr Machata 1283446dcd7SPetr Machatasetup_prepare() 1293446dcd7SPetr Machata{ 1303446dcd7SPetr Machata h1=${NETIFS[p1]} 1313446dcd7SPetr Machata swp1=${NETIFS[p2]} 1323446dcd7SPetr Machata 1333446dcd7SPetr Machata swp2=${NETIFS[p3]} 1343446dcd7SPetr Machata h2=${NETIFS[p4]} 1353446dcd7SPetr Machata 1363446dcd7SPetr Machata vrf_prepare 1373446dcd7SPetr Machata forwarding_enable 1383446dcd7SPetr Machata 1393446dcd7SPetr Machata h1_create 1403446dcd7SPetr Machata h2_create 1413446dcd7SPetr Machata} 1423446dcd7SPetr Machata 1433446dcd7SPetr Machatacleanup() 1443446dcd7SPetr Machata{ 1453446dcd7SPetr Machata pre_cleanup 1463446dcd7SPetr Machata 1473446dcd7SPetr Machata switch_destroy 2>/dev/null 1483446dcd7SPetr Machata h2_destroy 1493446dcd7SPetr Machata h1_destroy 1503446dcd7SPetr Machata 1513446dcd7SPetr Machata forwarding_restore 1523446dcd7SPetr Machata vrf_cleanup 1533446dcd7SPetr Machata} 1543446dcd7SPetr Machata 1553446dcd7SPetr Machatacfg_src_list() 1563446dcd7SPetr Machata{ 1573446dcd7SPetr Machata local IPs=("$@") 1583446dcd7SPetr Machata local IPstr=$(echo ${IPs[@]} | tr '[:space:]' , | sed 's/,$//') 1593446dcd7SPetr Machata 1603446dcd7SPetr Machata echo ${IPstr:+source_list }${IPstr} 1613446dcd7SPetr Machata} 1623446dcd7SPetr Machata 1633446dcd7SPetr Machatacfg_group_op() 1643446dcd7SPetr Machata{ 1653446dcd7SPetr Machata local op=$1; shift 1663446dcd7SPetr Machata local locus=$1; shift 1673446dcd7SPetr Machata local GRP=$1; shift 1683446dcd7SPetr Machata local state=$1; shift 1693446dcd7SPetr Machata local IPs=("$@") 1703446dcd7SPetr Machata 1713446dcd7SPetr Machata local source_list=$(cfg_src_list ${IPs[@]}) 1723446dcd7SPetr Machata 1733446dcd7SPetr Machata # Everything besides `bridge mdb' uses the "dev X vid Y" syntax, 1743446dcd7SPetr Machata # so we use it here as well and convert. 1753446dcd7SPetr Machata local br_locus=$(echo "$locus" | sed 's/^dev /port /') 1763446dcd7SPetr Machata 1773446dcd7SPetr Machata bridge mdb $op dev br0 $br_locus grp $GRP $state \ 1783446dcd7SPetr Machata filter_mode include $source_list 1793446dcd7SPetr Machata} 1803446dcd7SPetr Machata 1813446dcd7SPetr Machatacfg4_entries_op() 1823446dcd7SPetr Machata{ 1833446dcd7SPetr Machata local op=$1; shift 1843446dcd7SPetr Machata local locus=$1; shift 1853446dcd7SPetr Machata local state=$1; shift 1863446dcd7SPetr Machata local n=$1; shift 1873446dcd7SPetr Machata local grp=${1:-1}; shift 1883446dcd7SPetr Machata 1893446dcd7SPetr Machata local GRP=239.1.1.${grp} 1903446dcd7SPetr Machata local IPs=$(seq -f 192.0.2.%g 1 $((n - 1))) 1913446dcd7SPetr Machata cfg_group_op "$op" "$locus" "$GRP" "$state" ${IPs[@]} 1923446dcd7SPetr Machata} 1933446dcd7SPetr Machata 1943446dcd7SPetr Machatacfg4_entries_add() 1953446dcd7SPetr Machata{ 1963446dcd7SPetr Machata cfg4_entries_op add "$@" 1973446dcd7SPetr Machata} 1983446dcd7SPetr Machata 1993446dcd7SPetr Machatacfg4_entries_del() 2003446dcd7SPetr Machata{ 2013446dcd7SPetr Machata cfg4_entries_op del "$@" 2023446dcd7SPetr Machata} 2033446dcd7SPetr Machata 2043446dcd7SPetr Machatacfg6_entries_op() 2053446dcd7SPetr Machata{ 2063446dcd7SPetr Machata local op=$1; shift 2073446dcd7SPetr Machata local locus=$1; shift 2083446dcd7SPetr Machata local state=$1; shift 2093446dcd7SPetr Machata local n=$1; shift 2103446dcd7SPetr Machata local grp=${1:-1}; shift 2113446dcd7SPetr Machata 2123446dcd7SPetr Machata local GRP=ff0e::${grp} 2133446dcd7SPetr Machata local IPs=$(printf "2001:db8:1::%x\n" $(seq 1 $((n - 1)))) 2143446dcd7SPetr Machata cfg_group_op "$op" "$locus" "$GRP" "$state" ${IPs[@]} 2153446dcd7SPetr Machata} 2163446dcd7SPetr Machata 2173446dcd7SPetr Machatacfg6_entries_add() 2183446dcd7SPetr Machata{ 2193446dcd7SPetr Machata cfg6_entries_op add "$@" 2203446dcd7SPetr Machata} 2213446dcd7SPetr Machata 2223446dcd7SPetr Machatacfg6_entries_del() 2233446dcd7SPetr Machata{ 2243446dcd7SPetr Machata cfg6_entries_op del "$@" 2253446dcd7SPetr Machata} 2263446dcd7SPetr Machata 2273446dcd7SPetr Machatalocus_dev_peer() 2283446dcd7SPetr Machata{ 2293446dcd7SPetr Machata local dev_kw=$1; shift 2303446dcd7SPetr Machata local dev=$1; shift 2313446dcd7SPetr Machata local vid_kw=$1; shift 2323446dcd7SPetr Machata local vid=$1; shift 2333446dcd7SPetr Machata 2343446dcd7SPetr Machata echo "$h1.${vid:-10}" 2353446dcd7SPetr Machata} 2363446dcd7SPetr Machata 2373446dcd7SPetr Machatalocus_dev() 2383446dcd7SPetr Machata{ 2393446dcd7SPetr Machata local dev_kw=$1; shift 2403446dcd7SPetr Machata local dev=$1; shift 2413446dcd7SPetr Machata 2423446dcd7SPetr Machata echo $dev 2433446dcd7SPetr Machata} 2443446dcd7SPetr Machata 2453446dcd7SPetr Machatactl4_entries_add() 2463446dcd7SPetr Machata{ 2473446dcd7SPetr Machata local locus=$1; shift 2483446dcd7SPetr Machata local state=$1; shift 2493446dcd7SPetr Machata local n=$1; shift 2503446dcd7SPetr Machata local grp=${1:-1}; shift 2513446dcd7SPetr Machata 2523446dcd7SPetr Machata local IPs=$(seq -f 192.0.2.%g 1 $((n - 1))) 2533446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 2543446dcd7SPetr Machata local GRP=239.1.1.${grp} 2553446dcd7SPetr Machata $MZ $peer -c 1 -A 192.0.2.1 -B $GRP \ 2563446dcd7SPetr Machata -t ip proto=2,p=$(igmpv3_is_in_get $GRP $IPs) -q 2573446dcd7SPetr Machata sleep 1 2583446dcd7SPetr Machata 2593446dcd7SPetr Machata local nn=$(bridge mdb show dev br0 | grep $GRP | wc -l) 2603446dcd7SPetr Machata if ((nn != n)); then 2613446dcd7SPetr Machata echo mcast_max_groups > /dev/stderr 2623446dcd7SPetr Machata false 2633446dcd7SPetr Machata fi 2643446dcd7SPetr Machata} 2653446dcd7SPetr Machata 2663446dcd7SPetr Machatactl4_entries_del() 2673446dcd7SPetr Machata{ 2683446dcd7SPetr Machata local locus=$1; shift 2693446dcd7SPetr Machata local state=$1; shift 2703446dcd7SPetr Machata local n=$1; shift 2713446dcd7SPetr Machata local grp=${1:-1}; shift 2723446dcd7SPetr Machata 2733446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 2743446dcd7SPetr Machata local GRP=239.1.1.${grp} 2753446dcd7SPetr Machata $MZ $peer -c 1 -A 192.0.2.1 -B 224.0.0.2 \ 2763446dcd7SPetr Machata -t ip proto=2,p=$(igmpv2_leave_get $GRP) -q 2773446dcd7SPetr Machata sleep 1 2783446dcd7SPetr Machata ! bridge mdb show dev br0 | grep -q $GRP 2793446dcd7SPetr Machata} 2803446dcd7SPetr Machata 2813446dcd7SPetr Machatactl6_entries_add() 2823446dcd7SPetr Machata{ 2833446dcd7SPetr Machata local locus=$1; shift 2843446dcd7SPetr Machata local state=$1; shift 2853446dcd7SPetr Machata local n=$1; shift 2863446dcd7SPetr Machata local grp=${1:-1}; shift 2873446dcd7SPetr Machata 2883446dcd7SPetr Machata local IPs=$(printf "2001:db8:1::%x\n" $(seq 1 $((n - 1)))) 2893446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 2903446dcd7SPetr Machata local SIP=fe80::1 2913446dcd7SPetr Machata local GRP=ff0e::${grp} 2923446dcd7SPetr Machata local p=$(mldv2_is_in_get $SIP $GRP $IPs) 2933446dcd7SPetr Machata $MZ -6 $peer -c 1 -A $SIP -B $GRP -t ip hop=1,next=0,p="$p" -q 2943446dcd7SPetr Machata sleep 1 2953446dcd7SPetr Machata 2963446dcd7SPetr Machata local nn=$(bridge mdb show dev br0 | grep $GRP | wc -l) 2973446dcd7SPetr Machata if ((nn != n)); then 2983446dcd7SPetr Machata echo mcast_max_groups > /dev/stderr 2993446dcd7SPetr Machata false 3003446dcd7SPetr Machata fi 3013446dcd7SPetr Machata} 3023446dcd7SPetr Machata 3033446dcd7SPetr Machatactl6_entries_del() 3043446dcd7SPetr Machata{ 3053446dcd7SPetr Machata local locus=$1; shift 3063446dcd7SPetr Machata local state=$1; shift 3073446dcd7SPetr Machata local n=$1; shift 3083446dcd7SPetr Machata local grp=${1:-1}; shift 3093446dcd7SPetr Machata 3103446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 3113446dcd7SPetr Machata local SIP=fe80::1 3123446dcd7SPetr Machata local GRP=ff0e::${grp} 3133446dcd7SPetr Machata local p=$(mldv1_done_get $SIP $GRP) 3143446dcd7SPetr Machata $MZ -6 $peer -c 1 -A $SIP -B $GRP -t ip hop=1,next=0,p="$p" -q 3153446dcd7SPetr Machata sleep 1 3163446dcd7SPetr Machata ! bridge mdb show dev br0 | grep -q $GRP 3173446dcd7SPetr Machata} 3183446dcd7SPetr Machata 3193446dcd7SPetr Machatabridge_maxgroups_errmsg_check_cfg() 3203446dcd7SPetr Machata{ 3213446dcd7SPetr Machata local msg=$1; shift 3223446dcd7SPetr Machata local needle=$1; shift 3233446dcd7SPetr Machata 3243446dcd7SPetr Machata echo "$msg" | grep -q mcast_max_groups 3253446dcd7SPetr Machata check_err $? "Adding MDB entries failed for the wrong reason: $msg" 3263446dcd7SPetr Machata} 3273446dcd7SPetr Machata 3283446dcd7SPetr Machatabridge_maxgroups_errmsg_check_cfg4() 3293446dcd7SPetr Machata{ 3303446dcd7SPetr Machata bridge_maxgroups_errmsg_check_cfg "$@" 3313446dcd7SPetr Machata} 3323446dcd7SPetr Machata 3333446dcd7SPetr Machatabridge_maxgroups_errmsg_check_cfg6() 3343446dcd7SPetr Machata{ 3353446dcd7SPetr Machata bridge_maxgroups_errmsg_check_cfg "$@" 3363446dcd7SPetr Machata} 3373446dcd7SPetr Machata 3383446dcd7SPetr Machatabridge_maxgroups_errmsg_check_ctl4() 3393446dcd7SPetr Machata{ 3403446dcd7SPetr Machata : 3413446dcd7SPetr Machata} 3423446dcd7SPetr Machata 3433446dcd7SPetr Machatabridge_maxgroups_errmsg_check_ctl6() 3443446dcd7SPetr Machata{ 3453446dcd7SPetr Machata : 3463446dcd7SPetr Machata} 3473446dcd7SPetr Machata 3483446dcd7SPetr Machatabridge_port_ngroups_get() 3493446dcd7SPetr Machata{ 3503446dcd7SPetr Machata local locus=$1; shift 3513446dcd7SPetr Machata 3523446dcd7SPetr Machata bridge -j -d link show $locus | 3533446dcd7SPetr Machata jq '.[].mcast_n_groups' 3543446dcd7SPetr Machata} 3553446dcd7SPetr Machata 3563446dcd7SPetr Machatabridge_port_maxgroups_get() 3573446dcd7SPetr Machata{ 3583446dcd7SPetr Machata local locus=$1; shift 3593446dcd7SPetr Machata 3603446dcd7SPetr Machata bridge -j -d link show $locus | 3613446dcd7SPetr Machata jq '.[].mcast_max_groups' 3623446dcd7SPetr Machata} 3633446dcd7SPetr Machata 3643446dcd7SPetr Machatabridge_port_maxgroups_set() 3653446dcd7SPetr Machata{ 3663446dcd7SPetr Machata local locus=$1; shift 3673446dcd7SPetr Machata local max=$1; shift 3683446dcd7SPetr Machata 3693446dcd7SPetr Machata bridge link set dev $(locus_dev $locus) mcast_max_groups $max 3703446dcd7SPetr Machata} 3713446dcd7SPetr Machata 3723446dcd7SPetr Machatabridge_port_vlan_ngroups_get() 3733446dcd7SPetr Machata{ 3743446dcd7SPetr Machata local locus=$1; shift 3753446dcd7SPetr Machata 3763446dcd7SPetr Machata bridge -j -d vlan show $locus | 3773446dcd7SPetr Machata jq '.[].vlans[].mcast_n_groups' 3783446dcd7SPetr Machata} 3793446dcd7SPetr Machata 3803446dcd7SPetr Machatabridge_port_vlan_maxgroups_get() 3813446dcd7SPetr Machata{ 3823446dcd7SPetr Machata local locus=$1; shift 3833446dcd7SPetr Machata 3843446dcd7SPetr Machata bridge -j -d vlan show $locus | 3853446dcd7SPetr Machata jq '.[].vlans[].mcast_max_groups' 3863446dcd7SPetr Machata} 3873446dcd7SPetr Machata 3883446dcd7SPetr Machatabridge_port_vlan_maxgroups_set() 3893446dcd7SPetr Machata{ 3903446dcd7SPetr Machata local locus=$1; shift 3913446dcd7SPetr Machata local max=$1; shift 3923446dcd7SPetr Machata 3933446dcd7SPetr Machata bridge vlan set $locus mcast_max_groups $max 3943446dcd7SPetr Machata} 3953446dcd7SPetr Machata 3963446dcd7SPetr Machatatest_ngroups_reporting() 3973446dcd7SPetr Machata{ 3983446dcd7SPetr Machata local CFG=$1; shift 3993446dcd7SPetr Machata local context=$1; shift 4003446dcd7SPetr Machata local locus=$1; shift 4013446dcd7SPetr Machata 4023446dcd7SPetr Machata RET=0 4033446dcd7SPetr Machata 4043446dcd7SPetr Machata local n0=$(bridge_${context}_ngroups_get "$locus") 4053446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 5 4063446dcd7SPetr Machata check_err $? "Couldn't add MDB entries" 4073446dcd7SPetr Machata local n1=$(bridge_${context}_ngroups_get "$locus") 4083446dcd7SPetr Machata 4093446dcd7SPetr Machata ((n1 == n0 + 5)) 4103446dcd7SPetr Machata check_err $? "Number of groups was $n0, now is $n1, but $((n0 + 5)) expected" 4113446dcd7SPetr Machata 4123446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 5 4133446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 4143446dcd7SPetr Machata local n2=$(bridge_${context}_ngroups_get "$locus") 4153446dcd7SPetr Machata 4163446dcd7SPetr Machata ((n2 == n0)) 4173446dcd7SPetr Machata check_err $? "Number of groups was $n0, now is $n2, but should be back to $n0" 4183446dcd7SPetr Machata 4193446dcd7SPetr Machata log_test "$CFG: $context: ngroups reporting" 4203446dcd7SPetr Machata} 4213446dcd7SPetr Machata 4223446dcd7SPetr Machatatest_8021d_ngroups_reporting_cfg4() 4233446dcd7SPetr Machata{ 4243446dcd7SPetr Machata test_ngroups_reporting cfg4 port "dev $swp1" 4253446dcd7SPetr Machata} 4263446dcd7SPetr Machata 4273446dcd7SPetr Machatatest_8021d_ngroups_reporting_ctl4() 4283446dcd7SPetr Machata{ 4293446dcd7SPetr Machata test_ngroups_reporting ctl4 port "dev $swp1" 4303446dcd7SPetr Machata} 4313446dcd7SPetr Machata 4323446dcd7SPetr Machatatest_8021d_ngroups_reporting_cfg6() 4333446dcd7SPetr Machata{ 4343446dcd7SPetr Machata test_ngroups_reporting cfg6 port "dev $swp1" 4353446dcd7SPetr Machata} 4363446dcd7SPetr Machata 4373446dcd7SPetr Machatatest_8021d_ngroups_reporting_ctl6() 4383446dcd7SPetr Machata{ 4393446dcd7SPetr Machata test_ngroups_reporting ctl6 port "dev $swp1" 4403446dcd7SPetr Machata} 4413446dcd7SPetr Machata 4423446dcd7SPetr Machatatest_8021q_ngroups_reporting_cfg4() 4433446dcd7SPetr Machata{ 4443446dcd7SPetr Machata test_ngroups_reporting cfg4 port "dev $swp1 vid 10" 4453446dcd7SPetr Machata} 4463446dcd7SPetr Machata 4473446dcd7SPetr Machatatest_8021q_ngroups_reporting_ctl4() 4483446dcd7SPetr Machata{ 4493446dcd7SPetr Machata test_ngroups_reporting ctl4 port "dev $swp1 vid 10" 4503446dcd7SPetr Machata} 4513446dcd7SPetr Machata 4523446dcd7SPetr Machatatest_8021q_ngroups_reporting_cfg6() 4533446dcd7SPetr Machata{ 4543446dcd7SPetr Machata test_ngroups_reporting cfg6 port "dev $swp1 vid 10" 4553446dcd7SPetr Machata} 4563446dcd7SPetr Machata 4573446dcd7SPetr Machatatest_8021q_ngroups_reporting_ctl6() 4583446dcd7SPetr Machata{ 4593446dcd7SPetr Machata test_ngroups_reporting ctl6 port "dev $swp1 vid 10" 4603446dcd7SPetr Machata} 4613446dcd7SPetr Machata 4623446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_cfg4() 4633446dcd7SPetr Machata{ 4643446dcd7SPetr Machata test_ngroups_reporting cfg4 port_vlan "dev $swp1 vid 10" 4653446dcd7SPetr Machata} 4663446dcd7SPetr Machata 4673446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_ctl4() 4683446dcd7SPetr Machata{ 4693446dcd7SPetr Machata test_ngroups_reporting ctl4 port_vlan "dev $swp1 vid 10" 4703446dcd7SPetr Machata} 4713446dcd7SPetr Machata 4723446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_cfg6() 4733446dcd7SPetr Machata{ 4743446dcd7SPetr Machata test_ngroups_reporting cfg6 port_vlan "dev $swp1 vid 10" 4753446dcd7SPetr Machata} 4763446dcd7SPetr Machata 4773446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_ctl6() 4783446dcd7SPetr Machata{ 4793446dcd7SPetr Machata test_ngroups_reporting ctl6 port_vlan "dev $swp1 vid 10" 4803446dcd7SPetr Machata} 4813446dcd7SPetr Machata 4823446dcd7SPetr Machatatest_ngroups_cross_vlan() 4833446dcd7SPetr Machata{ 4843446dcd7SPetr Machata local CFG=$1; shift 4853446dcd7SPetr Machata 4863446dcd7SPetr Machata local locus1="dev $swp1 vid 10" 4873446dcd7SPetr Machata local locus2="dev $swp1 vid 20" 4883446dcd7SPetr Machata 4893446dcd7SPetr Machata RET=0 4903446dcd7SPetr Machata 4913446dcd7SPetr Machata local n10=$(bridge_port_vlan_ngroups_get "$locus1") 4923446dcd7SPetr Machata local n20=$(bridge_port_vlan_ngroups_get "$locus2") 4933446dcd7SPetr Machata ${CFG}_entries_add "$locus1" temp 5 111 4943446dcd7SPetr Machata check_err $? "Couldn't add MDB entries to VLAN 10" 4953446dcd7SPetr Machata local n11=$(bridge_port_vlan_ngroups_get "$locus1") 4963446dcd7SPetr Machata local n21=$(bridge_port_vlan_ngroups_get "$locus2") 4973446dcd7SPetr Machata 4983446dcd7SPetr Machata ((n11 == n10 + 5)) 4993446dcd7SPetr Machata check_err $? "Number of groups at VLAN 10 was $n10, now is $n11, but 5 entries added on VLAN 10, $((n10 + 5)) expected" 5003446dcd7SPetr Machata 5013446dcd7SPetr Machata ((n21 == n20)) 5023446dcd7SPetr Machata check_err $? "Number of groups at VLAN 20 was $n20, now is $n21, but no change expected on VLAN 20" 5033446dcd7SPetr Machata 5043446dcd7SPetr Machata ${CFG}_entries_add "$locus2" temp 5 112 5053446dcd7SPetr Machata check_err $? "Couldn't add MDB entries to VLAN 20" 5063446dcd7SPetr Machata local n12=$(bridge_port_vlan_ngroups_get "$locus1") 5073446dcd7SPetr Machata local n22=$(bridge_port_vlan_ngroups_get "$locus2") 5083446dcd7SPetr Machata 5093446dcd7SPetr Machata ((n12 == n11)) 5103446dcd7SPetr Machata check_err $? "Number of groups at VLAN 10 was $n11, now is $n12, but no change expected on VLAN 10" 5113446dcd7SPetr Machata 5123446dcd7SPetr Machata ((n22 == n21 + 5)) 5133446dcd7SPetr Machata check_err $? "Number of groups at VLAN 20 was $n21, now is $n22, but 5 entries added on VLAN 20, $((n21 + 5)) expected" 5143446dcd7SPetr Machata 5153446dcd7SPetr Machata ${CFG}_entries_del "$locus1" temp 5 111 5163446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries from VLAN 10" 5173446dcd7SPetr Machata ${CFG}_entries_del "$locus2" temp 5 112 5183446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries from VLAN 20" 5193446dcd7SPetr Machata local n13=$(bridge_port_vlan_ngroups_get "$locus1") 5203446dcd7SPetr Machata local n23=$(bridge_port_vlan_ngroups_get "$locus2") 5213446dcd7SPetr Machata 5223446dcd7SPetr Machata ((n13 == n10)) 5233446dcd7SPetr Machata check_err $? "Number of groups at VLAN 10 was $n10, now is $n13, but should be back to $n10" 5243446dcd7SPetr Machata 5253446dcd7SPetr Machata ((n23 == n20)) 5263446dcd7SPetr Machata check_err $? "Number of groups at VLAN 20 was $n20, now is $n23, but should be back to $n20" 5273446dcd7SPetr Machata 5283446dcd7SPetr Machata log_test "$CFG: port_vlan: isolation of port and per-VLAN ngroups" 5293446dcd7SPetr Machata} 5303446dcd7SPetr Machata 5313446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_cfg4() 5323446dcd7SPetr Machata{ 5333446dcd7SPetr Machata test_ngroups_cross_vlan cfg4 5343446dcd7SPetr Machata} 5353446dcd7SPetr Machata 5363446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_ctl4() 5373446dcd7SPetr Machata{ 5383446dcd7SPetr Machata test_ngroups_cross_vlan ctl4 5393446dcd7SPetr Machata} 5403446dcd7SPetr Machata 5413446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_cfg6() 5423446dcd7SPetr Machata{ 5433446dcd7SPetr Machata test_ngroups_cross_vlan cfg6 5443446dcd7SPetr Machata} 5453446dcd7SPetr Machata 5463446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_ctl6() 5473446dcd7SPetr Machata{ 5483446dcd7SPetr Machata test_ngroups_cross_vlan ctl6 5493446dcd7SPetr Machata} 5503446dcd7SPetr Machata 5513446dcd7SPetr Machatatest_maxgroups_zero() 5523446dcd7SPetr Machata{ 5533446dcd7SPetr Machata local CFG=$1; shift 5543446dcd7SPetr Machata local context=$1; shift 5553446dcd7SPetr Machata local locus=$1; shift 5563446dcd7SPetr Machata 5573446dcd7SPetr Machata RET=0 5583446dcd7SPetr Machata local max 5593446dcd7SPetr Machata 5603446dcd7SPetr Machata max=$(bridge_${context}_maxgroups_get "$locus") 5613446dcd7SPetr Machata ((max == 0)) 5623446dcd7SPetr Machata check_err $? "Max groups on $locus should be 0, but $max reported" 5633446dcd7SPetr Machata 5643446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 100 5653446dcd7SPetr Machata check_err $? "Failed to set max to 100" 5663446dcd7SPetr Machata max=$(bridge_${context}_maxgroups_get "$locus") 5673446dcd7SPetr Machata ((max == 100)) 5683446dcd7SPetr Machata check_err $? "Max groups expected to be 100, but $max reported" 5693446dcd7SPetr Machata 5703446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 5713446dcd7SPetr Machata check_err $? "Couldn't set maximum to 0" 5723446dcd7SPetr Machata 5733446dcd7SPetr Machata # Test that setting 0 explicitly still serves as infinity. 5743446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 5 5753446dcd7SPetr Machata check_err $? "Adding 5 MDB entries failed but should have passed" 5763446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 5 5773446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 5783446dcd7SPetr Machata 5793446dcd7SPetr Machata log_test "$CFG: $context maxgroups: reporting and treatment of 0" 5803446dcd7SPetr Machata} 5813446dcd7SPetr Machata 5823446dcd7SPetr Machatatest_8021d_maxgroups_zero_cfg4() 5833446dcd7SPetr Machata{ 5843446dcd7SPetr Machata test_maxgroups_zero cfg4 port "dev $swp1" 5853446dcd7SPetr Machata} 5863446dcd7SPetr Machata 5873446dcd7SPetr Machatatest_8021d_maxgroups_zero_ctl4() 5883446dcd7SPetr Machata{ 5893446dcd7SPetr Machata test_maxgroups_zero ctl4 port "dev $swp1" 5903446dcd7SPetr Machata} 5913446dcd7SPetr Machata 5923446dcd7SPetr Machatatest_8021d_maxgroups_zero_cfg6() 5933446dcd7SPetr Machata{ 5943446dcd7SPetr Machata test_maxgroups_zero cfg6 port "dev $swp1" 5953446dcd7SPetr Machata} 5963446dcd7SPetr Machata 5973446dcd7SPetr Machatatest_8021d_maxgroups_zero_ctl6() 5983446dcd7SPetr Machata{ 5993446dcd7SPetr Machata test_maxgroups_zero ctl6 port "dev $swp1" 6003446dcd7SPetr Machata} 6013446dcd7SPetr Machata 6023446dcd7SPetr Machatatest_8021q_maxgroups_zero_cfg4() 6033446dcd7SPetr Machata{ 6043446dcd7SPetr Machata test_maxgroups_zero cfg4 port "dev $swp1 vid 10" 6053446dcd7SPetr Machata} 6063446dcd7SPetr Machata 6073446dcd7SPetr Machatatest_8021q_maxgroups_zero_ctl4() 6083446dcd7SPetr Machata{ 6093446dcd7SPetr Machata test_maxgroups_zero ctl4 port "dev $swp1 vid 10" 6103446dcd7SPetr Machata} 6113446dcd7SPetr Machata 6123446dcd7SPetr Machatatest_8021q_maxgroups_zero_cfg6() 6133446dcd7SPetr Machata{ 6143446dcd7SPetr Machata test_maxgroups_zero cfg6 port "dev $swp1 vid 10" 6153446dcd7SPetr Machata} 6163446dcd7SPetr Machata 6173446dcd7SPetr Machatatest_8021q_maxgroups_zero_ctl6() 6183446dcd7SPetr Machata{ 6193446dcd7SPetr Machata test_maxgroups_zero ctl6 port "dev $swp1 vid 10" 6203446dcd7SPetr Machata} 6213446dcd7SPetr Machata 6223446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cfg4() 6233446dcd7SPetr Machata{ 6243446dcd7SPetr Machata test_maxgroups_zero cfg4 port_vlan "dev $swp1 vid 10" 6253446dcd7SPetr Machata} 6263446dcd7SPetr Machata 6273446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_ctl4() 6283446dcd7SPetr Machata{ 6293446dcd7SPetr Machata test_maxgroups_zero ctl4 port_vlan "dev $swp1 vid 10" 6303446dcd7SPetr Machata} 6313446dcd7SPetr Machata 6323446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cfg6() 6333446dcd7SPetr Machata{ 6343446dcd7SPetr Machata test_maxgroups_zero cfg6 port_vlan "dev $swp1 vid 10" 6353446dcd7SPetr Machata} 6363446dcd7SPetr Machata 6373446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_ctl6() 6383446dcd7SPetr Machata{ 6393446dcd7SPetr Machata test_maxgroups_zero ctl6 port_vlan "dev $swp1 vid 10" 6403446dcd7SPetr Machata} 6413446dcd7SPetr Machata 6423446dcd7SPetr Machatatest_maxgroups_zero_cross_vlan() 6433446dcd7SPetr Machata{ 6443446dcd7SPetr Machata local CFG=$1; shift 6453446dcd7SPetr Machata 6463446dcd7SPetr Machata local locus0="dev $swp1" 6473446dcd7SPetr Machata local locus1="dev $swp1 vid 10" 6483446dcd7SPetr Machata local locus2="dev $swp1 vid 20" 6493446dcd7SPetr Machata local max 6503446dcd7SPetr Machata 6513446dcd7SPetr Machata RET=0 6523446dcd7SPetr Machata 6533446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" 100 6543446dcd7SPetr Machata check_err $? "$locus1: Failed to set max to 100" 6553446dcd7SPetr Machata 6563446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6573446dcd7SPetr Machata ((max == 0)) 6583446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 0, but $max reported" 6593446dcd7SPetr Machata 6603446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6613446dcd7SPetr Machata ((max == 0)) 6623446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 0, but $max reported" 6633446dcd7SPetr Machata 6643446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus2" 100 6653446dcd7SPetr Machata check_err $? "$locus2: Failed to set max to 100" 6663446dcd7SPetr Machata 6673446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6683446dcd7SPetr Machata ((max == 0)) 6693446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 0, but $max reported" 6703446dcd7SPetr Machata 6713446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6723446dcd7SPetr Machata ((max == 100)) 6733446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 100, but $max reported" 6743446dcd7SPetr Machata 6753446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" 100 6763446dcd7SPetr Machata check_err $? "$locus0: Failed to set max to 100" 6773446dcd7SPetr Machata 6783446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6793446dcd7SPetr Machata ((max == 100)) 6803446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 100, but $max reported" 6813446dcd7SPetr Machata 6823446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6833446dcd7SPetr Machata ((max == 100)) 6843446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 100, but $max reported" 6853446dcd7SPetr Machata 6863446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" 0 6873446dcd7SPetr Machata check_err $? "$locus1: Failed to set max to 0" 6883446dcd7SPetr Machata 6893446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6903446dcd7SPetr Machata ((max == 100)) 6913446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 100, but $max reported" 6923446dcd7SPetr Machata 6933446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6943446dcd7SPetr Machata ((max == 100)) 6953446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 100, but $max reported" 6963446dcd7SPetr Machata 6973446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus2" 0 6983446dcd7SPetr Machata check_err $? "$locus2: Failed to set max to 0" 6993446dcd7SPetr Machata 7003446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 7013446dcd7SPetr Machata ((max == 100)) 7023446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 100, but $max reported" 7033446dcd7SPetr Machata 7043446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 7053446dcd7SPetr Machata ((max == 0)) 7063446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 0 but $max reported" 7073446dcd7SPetr Machata 7083446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" 0 7093446dcd7SPetr Machata check_err $? "$locus0: Failed to set max to 0" 7103446dcd7SPetr Machata 7113446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 7123446dcd7SPetr Machata ((max == 0)) 7133446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 0, but $max reported" 7143446dcd7SPetr Machata 7153446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 7163446dcd7SPetr Machata ((max == 0)) 7173446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 0, but $max reported" 7183446dcd7SPetr Machata 7193446dcd7SPetr Machata log_test "$CFG: port_vlan maxgroups: isolation of port and per-VLAN maximums" 7203446dcd7SPetr Machata} 7213446dcd7SPetr Machata 7223446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_cfg4() 7233446dcd7SPetr Machata{ 7243446dcd7SPetr Machata test_maxgroups_zero_cross_vlan cfg4 7253446dcd7SPetr Machata} 7263446dcd7SPetr Machata 7273446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_ctl4() 7283446dcd7SPetr Machata{ 7293446dcd7SPetr Machata test_maxgroups_zero_cross_vlan ctl4 7303446dcd7SPetr Machata} 7313446dcd7SPetr Machata 7323446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_cfg6() 7333446dcd7SPetr Machata{ 7343446dcd7SPetr Machata test_maxgroups_zero_cross_vlan cfg6 7353446dcd7SPetr Machata} 7363446dcd7SPetr Machata 7373446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_ctl6() 7383446dcd7SPetr Machata{ 7393446dcd7SPetr Machata test_maxgroups_zero_cross_vlan ctl6 7403446dcd7SPetr Machata} 7413446dcd7SPetr Machata 7423446dcd7SPetr Machatatest_maxgroups_too_low() 7433446dcd7SPetr Machata{ 7443446dcd7SPetr Machata local CFG=$1; shift 7453446dcd7SPetr Machata local context=$1; shift 7463446dcd7SPetr Machata local locus=$1; shift 7473446dcd7SPetr Machata 7483446dcd7SPetr Machata RET=0 7493446dcd7SPetr Machata 7503446dcd7SPetr Machata local n=$(bridge_${context}_ngroups_get "$locus") 7513446dcd7SPetr Machata local msg 7523446dcd7SPetr Machata 7533446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 5 111 7543446dcd7SPetr Machata check_err $? "$locus: Couldn't add MDB entries" 7553446dcd7SPetr Machata 7563446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" $((n+2)) 7573446dcd7SPetr Machata check_err $? "$locus: Setting maxgroups to $((n+2)) failed" 7583446dcd7SPetr Machata 7593446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus" temp 2 112 2>&1) 7603446dcd7SPetr Machata check_fail $? "$locus: Adding more entries passed when max<n" 7613446dcd7SPetr Machata bridge_maxgroups_errmsg_check_cfg "$msg" 7623446dcd7SPetr Machata 7633446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 5 111 7643446dcd7SPetr Machata check_err $? "$locus: Couldn't delete MDB entries" 7653446dcd7SPetr Machata 7663446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 2 112 7673446dcd7SPetr Machata check_err $? "$locus: Adding more entries failed" 7683446dcd7SPetr Machata 7693446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 2 112 7703446dcd7SPetr Machata check_err $? "$locus: Deleting more entries failed" 7713446dcd7SPetr Machata 7723446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 7733446dcd7SPetr Machata check_err $? "$locus: Couldn't set maximum to 0" 7743446dcd7SPetr Machata 7753446dcd7SPetr Machata log_test "$CFG: $context maxgroups: configure below ngroups" 7763446dcd7SPetr Machata} 7773446dcd7SPetr Machata 7783446dcd7SPetr Machatatest_8021d_maxgroups_too_low_cfg4() 7793446dcd7SPetr Machata{ 7803446dcd7SPetr Machata test_maxgroups_too_low cfg4 port "dev $swp1" 7813446dcd7SPetr Machata} 7823446dcd7SPetr Machata 7833446dcd7SPetr Machatatest_8021d_maxgroups_too_low_ctl4() 7843446dcd7SPetr Machata{ 7853446dcd7SPetr Machata test_maxgroups_too_low ctl4 port "dev $swp1" 7863446dcd7SPetr Machata} 7873446dcd7SPetr Machata 7883446dcd7SPetr Machatatest_8021d_maxgroups_too_low_cfg6() 7893446dcd7SPetr Machata{ 7903446dcd7SPetr Machata test_maxgroups_too_low cfg6 port "dev $swp1" 7913446dcd7SPetr Machata} 7923446dcd7SPetr Machata 7933446dcd7SPetr Machatatest_8021d_maxgroups_too_low_ctl6() 7943446dcd7SPetr Machata{ 7953446dcd7SPetr Machata test_maxgroups_too_low ctl6 port "dev $swp1" 7963446dcd7SPetr Machata} 7973446dcd7SPetr Machata 7983446dcd7SPetr Machatatest_8021q_maxgroups_too_low_cfg4() 7993446dcd7SPetr Machata{ 8003446dcd7SPetr Machata test_maxgroups_too_low cfg4 port "dev $swp1 vid 10" 8013446dcd7SPetr Machata} 8023446dcd7SPetr Machata 8033446dcd7SPetr Machatatest_8021q_maxgroups_too_low_ctl4() 8043446dcd7SPetr Machata{ 8053446dcd7SPetr Machata test_maxgroups_too_low ctl4 port "dev $swp1 vid 10" 8063446dcd7SPetr Machata} 8073446dcd7SPetr Machata 8083446dcd7SPetr Machatatest_8021q_maxgroups_too_low_cfg6() 8093446dcd7SPetr Machata{ 8103446dcd7SPetr Machata test_maxgroups_too_low cfg6 port "dev $swp1 vid 10" 8113446dcd7SPetr Machata} 8123446dcd7SPetr Machata 8133446dcd7SPetr Machatatest_8021q_maxgroups_too_low_ctl6() 8143446dcd7SPetr Machata{ 8153446dcd7SPetr Machata test_maxgroups_too_low ctl6 port "dev $swp1 vid 10" 8163446dcd7SPetr Machata} 8173446dcd7SPetr Machata 8183446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_cfg4() 8193446dcd7SPetr Machata{ 8203446dcd7SPetr Machata test_maxgroups_too_low cfg4 port_vlan "dev $swp1 vid 10" 8213446dcd7SPetr Machata} 8223446dcd7SPetr Machata 8233446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_ctl4() 8243446dcd7SPetr Machata{ 8253446dcd7SPetr Machata test_maxgroups_too_low ctl4 port_vlan "dev $swp1 vid 10" 8263446dcd7SPetr Machata} 8273446dcd7SPetr Machata 8283446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_cfg6() 8293446dcd7SPetr Machata{ 8303446dcd7SPetr Machata test_maxgroups_too_low cfg6 port_vlan "dev $swp1 vid 10" 8313446dcd7SPetr Machata} 8323446dcd7SPetr Machata 8333446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_ctl6() 8343446dcd7SPetr Machata{ 8353446dcd7SPetr Machata test_maxgroups_too_low ctl6 port_vlan "dev $swp1 vid 10" 8363446dcd7SPetr Machata} 8373446dcd7SPetr Machata 8383446dcd7SPetr Machatatest_maxgroups_too_many_entries() 8393446dcd7SPetr Machata{ 8403446dcd7SPetr Machata local CFG=$1; shift 8413446dcd7SPetr Machata local context=$1; shift 8423446dcd7SPetr Machata local locus=$1; shift 8433446dcd7SPetr Machata 8443446dcd7SPetr Machata RET=0 8453446dcd7SPetr Machata 8463446dcd7SPetr Machata local n=$(bridge_${context}_ngroups_get "$locus") 8473446dcd7SPetr Machata local msg 8483446dcd7SPetr Machata 8493446dcd7SPetr Machata # Configure a low maximum 8503446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" $((n+1)) 8513446dcd7SPetr Machata check_err $? "$locus: Couldn't set maximum" 8523446dcd7SPetr Machata 8533446dcd7SPetr Machata # Try to add more entries than the configured maximum 8543446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus" temp 5 2>&1) 8553446dcd7SPetr Machata check_fail $? "Adding 5 MDB entries passed, but should have failed" 8563446dcd7SPetr Machata bridge_maxgroups_errmsg_check_${CFG} "$msg" 8573446dcd7SPetr Machata 8583446dcd7SPetr Machata # When adding entries through the control path, as many as possible 8593446dcd7SPetr Machata # get created. That's consistent with the mcast_hash_max behavior. 8603446dcd7SPetr Machata # So there, drop the entries explicitly. 8613446dcd7SPetr Machata if [[ ${CFG%[46]} == ctl ]]; then 8623446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 17 2>&1 8633446dcd7SPetr Machata fi 8643446dcd7SPetr Machata 8653446dcd7SPetr Machata local n2=$(bridge_${context}_ngroups_get "$locus") 8663446dcd7SPetr Machata ((n2 == n)) 8673446dcd7SPetr Machata check_err $? "Number of groups was $n, but after a failed attempt to add MDB entries it changed to $n2" 8683446dcd7SPetr Machata 8693446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 8703446dcd7SPetr Machata check_err $? "$locus: Couldn't set maximum to 0" 8713446dcd7SPetr Machata 8723446dcd7SPetr Machata log_test "$CFG: $context maxgroups: add too many MDB entries" 8733446dcd7SPetr Machata} 8743446dcd7SPetr Machata 8753446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_cfg4() 8763446dcd7SPetr Machata{ 8773446dcd7SPetr Machata test_maxgroups_too_many_entries cfg4 port "dev $swp1" 8783446dcd7SPetr Machata} 8793446dcd7SPetr Machata 8803446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_ctl4() 8813446dcd7SPetr Machata{ 8823446dcd7SPetr Machata test_maxgroups_too_many_entries ctl4 port "dev $swp1" 8833446dcd7SPetr Machata} 8843446dcd7SPetr Machata 8853446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_cfg6() 8863446dcd7SPetr Machata{ 8873446dcd7SPetr Machata test_maxgroups_too_many_entries cfg6 port "dev $swp1" 8883446dcd7SPetr Machata} 8893446dcd7SPetr Machata 8903446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_ctl6() 8913446dcd7SPetr Machata{ 8923446dcd7SPetr Machata test_maxgroups_too_many_entries ctl6 port "dev $swp1" 8933446dcd7SPetr Machata} 8943446dcd7SPetr Machata 8953446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_cfg4() 8963446dcd7SPetr Machata{ 8973446dcd7SPetr Machata test_maxgroups_too_many_entries cfg4 port "dev $swp1 vid 10" 8983446dcd7SPetr Machata} 8993446dcd7SPetr Machata 9003446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_ctl4() 9013446dcd7SPetr Machata{ 9023446dcd7SPetr Machata test_maxgroups_too_many_entries ctl4 port "dev $swp1 vid 10" 9033446dcd7SPetr Machata} 9043446dcd7SPetr Machata 9053446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_cfg6() 9063446dcd7SPetr Machata{ 9073446dcd7SPetr Machata test_maxgroups_too_many_entries cfg6 port "dev $swp1 vid 10" 9083446dcd7SPetr Machata} 9093446dcd7SPetr Machata 9103446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_ctl6() 9113446dcd7SPetr Machata{ 9123446dcd7SPetr Machata test_maxgroups_too_many_entries ctl6 port "dev $swp1 vid 10" 9133446dcd7SPetr Machata} 9143446dcd7SPetr Machata 9153446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_cfg4() 9163446dcd7SPetr Machata{ 9173446dcd7SPetr Machata test_maxgroups_too_many_entries cfg4 port_vlan "dev $swp1 vid 10" 9183446dcd7SPetr Machata} 9193446dcd7SPetr Machata 9203446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_ctl4() 9213446dcd7SPetr Machata{ 9223446dcd7SPetr Machata test_maxgroups_too_many_entries ctl4 port_vlan "dev $swp1 vid 10" 9233446dcd7SPetr Machata} 9243446dcd7SPetr Machata 9253446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_cfg6() 9263446dcd7SPetr Machata{ 9273446dcd7SPetr Machata test_maxgroups_too_many_entries cfg6 port_vlan "dev $swp1 vid 10" 9283446dcd7SPetr Machata} 9293446dcd7SPetr Machata 9303446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_ctl6() 9313446dcd7SPetr Machata{ 9323446dcd7SPetr Machata test_maxgroups_too_many_entries ctl6 port_vlan "dev $swp1 vid 10" 9333446dcd7SPetr Machata} 9343446dcd7SPetr Machata 9353446dcd7SPetr Machatatest_maxgroups_too_many_cross_vlan() 9363446dcd7SPetr Machata{ 9373446dcd7SPetr Machata local CFG=$1; shift 9383446dcd7SPetr Machata 9393446dcd7SPetr Machata RET=0 9403446dcd7SPetr Machata 9413446dcd7SPetr Machata local locus0="dev $swp1" 9423446dcd7SPetr Machata local locus1="dev $swp1 vid 10" 9433446dcd7SPetr Machata local locus2="dev $swp1 vid 20" 9443446dcd7SPetr Machata local n1=$(bridge_port_vlan_ngroups_get "$locus1") 9453446dcd7SPetr Machata local n2=$(bridge_port_vlan_ngroups_get "$locus2") 9463446dcd7SPetr Machata local msg 9473446dcd7SPetr Machata 9483446dcd7SPetr Machata if ((n1 > n2)); then 9493446dcd7SPetr Machata local tmp=$n1 9503446dcd7SPetr Machata n1=$n2 9513446dcd7SPetr Machata n2=$tmp 9523446dcd7SPetr Machata 9533446dcd7SPetr Machata tmp="$locus1" 9543446dcd7SPetr Machata locus1="$locus2" 9553446dcd7SPetr Machata locus2="$tmp" 9563446dcd7SPetr Machata fi 9573446dcd7SPetr Machata 9583446dcd7SPetr Machata # Now 0 <= n1 <= n2. 9593446dcd7SPetr Machata ${CFG}_entries_add "$locus2" temp 5 112 9603446dcd7SPetr Machata check_err $? "Couldn't add 5 entries" 9613446dcd7SPetr Machata 9623446dcd7SPetr Machata n2=$(bridge_port_vlan_ngroups_get "$locus2") 9633446dcd7SPetr Machata # Now 0 <= n1 < n2-1. 9643446dcd7SPetr Machata 9653446dcd7SPetr Machata # Setting locus1'maxgroups to n2-1 should pass. The number is 9663446dcd7SPetr Machata # smaller than both the absolute number of MDB entries, and in 9673446dcd7SPetr Machata # particular than number of locus2's number of entries, but it is 9683446dcd7SPetr Machata # large enough to cover locus1's entries. Thus we check that 9693446dcd7SPetr Machata # individual VLAN's ngroups are independent. 9703446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" $((n2-1)) 9713446dcd7SPetr Machata check_err $? "Setting ${locus1}'s maxgroups to $((n2-1)) failed" 9723446dcd7SPetr Machata 9733446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus1" temp $n2 111 2>&1) 9743446dcd7SPetr Machata check_fail $? "$locus1: Adding $n2 MDB entries passed, but should have failed" 9753446dcd7SPetr Machata bridge_maxgroups_errmsg_check_${CFG} "$msg" 9763446dcd7SPetr Machata 9773446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" $((n1 + n2 + 2)) 9783446dcd7SPetr Machata check_err $? "$locus0: Couldn't set maximum" 9793446dcd7SPetr Machata 9803446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus1" temp 5 111 2>&1) 9813446dcd7SPetr Machata check_fail $? "$locus1: Adding 5 MDB entries passed, but should have failed" 9823446dcd7SPetr Machata bridge_maxgroups_errmsg_check_${CFG} "$msg" 9833446dcd7SPetr Machata 9843446dcd7SPetr Machata # IGMP/MLD packets can cause several entries to be added, before 9853446dcd7SPetr Machata # the maximum is hit and the rest is then bounced. Remove what was 9863446dcd7SPetr Machata # committed, if anything. 9873446dcd7SPetr Machata ${CFG}_entries_del "$locus1" temp 5 111 2>/dev/null 9883446dcd7SPetr Machata 9893446dcd7SPetr Machata ${CFG}_entries_add "$locus1" temp 2 111 9903446dcd7SPetr Machata check_err $? "$locus1: Adding 2 MDB entries failed, but should have passed" 9913446dcd7SPetr Machata 9923446dcd7SPetr Machata ${CFG}_entries_del "$locus1" temp 2 111 9933446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 9943446dcd7SPetr Machata 9953446dcd7SPetr Machata ${CFG}_entries_del "$locus2" temp 5 112 9963446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 9973446dcd7SPetr Machata 9983446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" 0 9993446dcd7SPetr Machata check_err $? "$locus1: Couldn't set maximum to 0" 10003446dcd7SPetr Machata 10013446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" 0 10023446dcd7SPetr Machata check_err $? "$locus0: Couldn't set maximum to 0" 10033446dcd7SPetr Machata 10043446dcd7SPetr Machata log_test "$CFG: port_vlan maxgroups: isolation of port and per-VLAN ngroups" 10053446dcd7SPetr Machata} 10063446dcd7SPetr Machata 10073446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_cfg4() 10083446dcd7SPetr Machata{ 10093446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan cfg4 10103446dcd7SPetr Machata} 10113446dcd7SPetr Machata 10123446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_ctl4() 10133446dcd7SPetr Machata{ 10143446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan ctl4 10153446dcd7SPetr Machata} 10163446dcd7SPetr Machata 10173446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_cfg6() 10183446dcd7SPetr Machata{ 10193446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan cfg6 10203446dcd7SPetr Machata} 10213446dcd7SPetr Machata 10223446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_ctl6() 10233446dcd7SPetr Machata{ 10243446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan ctl6 10253446dcd7SPetr Machata} 10263446dcd7SPetr Machata 10273446dcd7SPetr Machatatest_vlan_attributes() 10283446dcd7SPetr Machata{ 10293446dcd7SPetr Machata local locus=$1; shift 10303446dcd7SPetr Machata local expect=$1; shift 10313446dcd7SPetr Machata 10323446dcd7SPetr Machata RET=0 10333446dcd7SPetr Machata 10343446dcd7SPetr Machata local max=$(bridge_port_vlan_maxgroups_get "$locus") 10353446dcd7SPetr Machata local n=$(bridge_port_vlan_ngroups_get "$locus") 10363446dcd7SPetr Machata 10373446dcd7SPetr Machata eval "[[ $max $expect ]]" 10383446dcd7SPetr Machata check_err $? "$locus: maxgroups attribute expected to be $expect, but was $max" 10393446dcd7SPetr Machata 10403446dcd7SPetr Machata eval "[[ $n $expect ]]" 10413446dcd7SPetr Machata check_err $? "$locus: ngroups attribute expected to be $expect, but was $n" 10423446dcd7SPetr Machata 10433446dcd7SPetr Machata log_test "port_vlan: presence of ngroups and maxgroups attributes" 10443446dcd7SPetr Machata} 10453446dcd7SPetr Machata 10463446dcd7SPetr Machatatest_8021q_vlan_attributes() 10473446dcd7SPetr Machata{ 10483446dcd7SPetr Machata test_vlan_attributes "dev $swp1 vid 10" "== null" 10493446dcd7SPetr Machata} 10503446dcd7SPetr Machata 10513446dcd7SPetr Machatatest_8021qvs_vlan_attributes() 10523446dcd7SPetr Machata{ 10533446dcd7SPetr Machata test_vlan_attributes "dev $swp1 vid 10" "-ge 0" 10543446dcd7SPetr Machata} 10553446dcd7SPetr Machata 10563446dcd7SPetr Machatatest_toggle_vlan_snooping() 10573446dcd7SPetr Machata{ 10583446dcd7SPetr Machata local mode=$1; shift 10593446dcd7SPetr Machata 10603446dcd7SPetr Machata RET=0 10613446dcd7SPetr Machata 10623446dcd7SPetr Machata local CFG=cfg4 10633446dcd7SPetr Machata local context=port_vlan 10643446dcd7SPetr Machata local locus="dev $swp1 vid 10" 10653446dcd7SPetr Machata 10663446dcd7SPetr Machata ${CFG}_entries_add "$locus" $mode 5 10673446dcd7SPetr Machata check_err $? "Couldn't add MDB entries" 10683446dcd7SPetr Machata 10693446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 100 10703446dcd7SPetr Machata check_err $? "Failed to set max to 100" 10713446dcd7SPetr Machata 10723446dcd7SPetr Machata ip link set dev br0 type bridge mcast_vlan_snooping 0 10733446dcd7SPetr Machata sleep 1 10743446dcd7SPetr Machata ip link set dev br0 type bridge mcast_vlan_snooping 1 10753446dcd7SPetr Machata 10763446dcd7SPetr Machata local n=$(bridge_${context}_ngroups_get "$locus") 10773446dcd7SPetr Machata local nn=$(bridge mdb show dev br0 | grep $swp1 | wc -l) 10783446dcd7SPetr Machata ((nn == n)) 10793446dcd7SPetr Machata check_err $? "mcast_n_groups expected to be $nn, but $n reported" 10803446dcd7SPetr Machata 10813446dcd7SPetr Machata local max=$(bridge_${context}_maxgroups_get "$locus") 10823446dcd7SPetr Machata ((max == 100)) 10833446dcd7SPetr Machata check_err $? "Max groups expected to be 100 but $max reported" 10843446dcd7SPetr Machata 10853446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 10863446dcd7SPetr Machata check_err $? "Failed to set max to 0" 10873446dcd7SPetr Machata 10883446dcd7SPetr Machata log_test "$CFG: $context: $mode: mcast_vlan_snooping toggle" 10893446dcd7SPetr Machata} 10903446dcd7SPetr Machata 10913446dcd7SPetr Machatatest_toggle_vlan_snooping_temp() 10923446dcd7SPetr Machata{ 10933446dcd7SPetr Machata test_toggle_vlan_snooping temp 10943446dcd7SPetr Machata} 10953446dcd7SPetr Machata 10963446dcd7SPetr Machatatest_toggle_vlan_snooping_permanent() 10973446dcd7SPetr Machata{ 10983446dcd7SPetr Machata test_toggle_vlan_snooping permanent 10993446dcd7SPetr Machata} 11003446dcd7SPetr Machata 11013446dcd7SPetr Machata# ngroup test suites 11023446dcd7SPetr Machata 11033446dcd7SPetr Machatatest_8021d_ngroups_cfg4() 11043446dcd7SPetr Machata{ 11053446dcd7SPetr Machata test_8021d_ngroups_reporting_cfg4 11063446dcd7SPetr Machata} 11073446dcd7SPetr Machata 11083446dcd7SPetr Machatatest_8021d_ngroups_ctl4() 11093446dcd7SPetr Machata{ 11103446dcd7SPetr Machata test_8021d_ngroups_reporting_ctl4 11113446dcd7SPetr Machata} 11123446dcd7SPetr Machata 11133446dcd7SPetr Machatatest_8021d_ngroups_cfg6() 11143446dcd7SPetr Machata{ 11153446dcd7SPetr Machata test_8021d_ngroups_reporting_cfg6 11163446dcd7SPetr Machata} 11173446dcd7SPetr Machata 11183446dcd7SPetr Machatatest_8021d_ngroups_ctl6() 11193446dcd7SPetr Machata{ 11203446dcd7SPetr Machata test_8021d_ngroups_reporting_ctl6 11213446dcd7SPetr Machata} 11223446dcd7SPetr Machata 11233446dcd7SPetr Machatatest_8021q_ngroups_cfg4() 11243446dcd7SPetr Machata{ 11253446dcd7SPetr Machata test_8021q_ngroups_reporting_cfg4 11263446dcd7SPetr Machata} 11273446dcd7SPetr Machata 11283446dcd7SPetr Machatatest_8021q_ngroups_ctl4() 11293446dcd7SPetr Machata{ 11303446dcd7SPetr Machata test_8021q_ngroups_reporting_ctl4 11313446dcd7SPetr Machata} 11323446dcd7SPetr Machata 11333446dcd7SPetr Machatatest_8021q_ngroups_cfg6() 11343446dcd7SPetr Machata{ 11353446dcd7SPetr Machata test_8021q_ngroups_reporting_cfg6 11363446dcd7SPetr Machata} 11373446dcd7SPetr Machata 11383446dcd7SPetr Machatatest_8021q_ngroups_ctl6() 11393446dcd7SPetr Machata{ 11403446dcd7SPetr Machata test_8021q_ngroups_reporting_ctl6 11413446dcd7SPetr Machata} 11423446dcd7SPetr Machata 11433446dcd7SPetr Machatatest_8021qvs_ngroups_cfg4() 11443446dcd7SPetr Machata{ 11453446dcd7SPetr Machata test_8021qvs_ngroups_reporting_cfg4 11463446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_cfg4 11473446dcd7SPetr Machata} 11483446dcd7SPetr Machata 11493446dcd7SPetr Machatatest_8021qvs_ngroups_ctl4() 11503446dcd7SPetr Machata{ 11513446dcd7SPetr Machata test_8021qvs_ngroups_reporting_ctl4 11523446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_ctl4 11533446dcd7SPetr Machata} 11543446dcd7SPetr Machata 11553446dcd7SPetr Machatatest_8021qvs_ngroups_cfg6() 11563446dcd7SPetr Machata{ 11573446dcd7SPetr Machata test_8021qvs_ngroups_reporting_cfg6 11583446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_cfg6 11593446dcd7SPetr Machata} 11603446dcd7SPetr Machata 11613446dcd7SPetr Machatatest_8021qvs_ngroups_ctl6() 11623446dcd7SPetr Machata{ 11633446dcd7SPetr Machata test_8021qvs_ngroups_reporting_ctl6 11643446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_ctl6 11653446dcd7SPetr Machata} 11663446dcd7SPetr Machata 11673446dcd7SPetr Machata# maxgroups test suites 11683446dcd7SPetr Machata 11693446dcd7SPetr Machatatest_8021d_maxgroups_cfg4() 11703446dcd7SPetr Machata{ 11713446dcd7SPetr Machata test_8021d_maxgroups_zero_cfg4 11723446dcd7SPetr Machata test_8021d_maxgroups_too_low_cfg4 11733446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_cfg4 11743446dcd7SPetr Machata} 11753446dcd7SPetr Machata 11763446dcd7SPetr Machatatest_8021d_maxgroups_ctl4() 11773446dcd7SPetr Machata{ 11783446dcd7SPetr Machata test_8021d_maxgroups_zero_ctl4 11793446dcd7SPetr Machata test_8021d_maxgroups_too_low_ctl4 11803446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_ctl4 11813446dcd7SPetr Machata} 11823446dcd7SPetr Machata 11833446dcd7SPetr Machatatest_8021d_maxgroups_cfg6() 11843446dcd7SPetr Machata{ 11853446dcd7SPetr Machata test_8021d_maxgroups_zero_cfg6 11863446dcd7SPetr Machata test_8021d_maxgroups_too_low_cfg6 11873446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_cfg6 11883446dcd7SPetr Machata} 11893446dcd7SPetr Machata 11903446dcd7SPetr Machatatest_8021d_maxgroups_ctl6() 11913446dcd7SPetr Machata{ 11923446dcd7SPetr Machata test_8021d_maxgroups_zero_ctl6 11933446dcd7SPetr Machata test_8021d_maxgroups_too_low_ctl6 11943446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_ctl6 11953446dcd7SPetr Machata} 11963446dcd7SPetr Machata 11973446dcd7SPetr Machatatest_8021q_maxgroups_cfg4() 11983446dcd7SPetr Machata{ 11993446dcd7SPetr Machata test_8021q_maxgroups_zero_cfg4 12003446dcd7SPetr Machata test_8021q_maxgroups_too_low_cfg4 12013446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_cfg4 12023446dcd7SPetr Machata} 12033446dcd7SPetr Machata 12043446dcd7SPetr Machatatest_8021q_maxgroups_ctl4() 12053446dcd7SPetr Machata{ 12063446dcd7SPetr Machata test_8021q_maxgroups_zero_ctl4 12073446dcd7SPetr Machata test_8021q_maxgroups_too_low_ctl4 12083446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_ctl4 12093446dcd7SPetr Machata} 12103446dcd7SPetr Machata 12113446dcd7SPetr Machatatest_8021q_maxgroups_cfg6() 12123446dcd7SPetr Machata{ 12133446dcd7SPetr Machata test_8021q_maxgroups_zero_cfg6 12143446dcd7SPetr Machata test_8021q_maxgroups_too_low_cfg6 12153446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_cfg6 12163446dcd7SPetr Machata} 12173446dcd7SPetr Machata 12183446dcd7SPetr Machatatest_8021q_maxgroups_ctl6() 12193446dcd7SPetr Machata{ 12203446dcd7SPetr Machata test_8021q_maxgroups_zero_ctl6 12213446dcd7SPetr Machata test_8021q_maxgroups_too_low_ctl6 12223446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_ctl6 12233446dcd7SPetr Machata} 12243446dcd7SPetr Machata 12253446dcd7SPetr Machatatest_8021qvs_maxgroups_cfg4() 12263446dcd7SPetr Machata{ 12273446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cfg4 12283446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_cfg4 12293446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_cfg4 12303446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_cfg4 12313446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_cfg4 12323446dcd7SPetr Machata} 12333446dcd7SPetr Machata 12343446dcd7SPetr Machatatest_8021qvs_maxgroups_ctl4() 12353446dcd7SPetr Machata{ 12363446dcd7SPetr Machata test_8021qvs_maxgroups_zero_ctl4 12373446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_ctl4 12383446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_ctl4 12393446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_ctl4 12403446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_ctl4 12413446dcd7SPetr Machata} 12423446dcd7SPetr Machata 12433446dcd7SPetr Machatatest_8021qvs_maxgroups_cfg6() 12443446dcd7SPetr Machata{ 12453446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cfg6 12463446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_cfg6 12473446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_cfg6 12483446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_cfg6 12493446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_cfg6 12503446dcd7SPetr Machata} 12513446dcd7SPetr Machata 12523446dcd7SPetr Machatatest_8021qvs_maxgroups_ctl6() 12533446dcd7SPetr Machata{ 12543446dcd7SPetr Machata test_8021qvs_maxgroups_zero_ctl6 12553446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_ctl6 12563446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_ctl6 12573446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_ctl6 12583446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_ctl6 12593446dcd7SPetr Machata} 12603446dcd7SPetr Machata 12613446dcd7SPetr Machata# other test suites 12623446dcd7SPetr Machata 12633446dcd7SPetr Machatatest_8021qvs_toggle_vlan_snooping() 12643446dcd7SPetr Machata{ 12653446dcd7SPetr Machata test_toggle_vlan_snooping_temp 12663446dcd7SPetr Machata test_toggle_vlan_snooping_permanent 12673446dcd7SPetr Machata} 12683446dcd7SPetr Machata 12693446dcd7SPetr Machata# test groups 12703446dcd7SPetr Machata 12713446dcd7SPetr Machatatest_8021d() 12723446dcd7SPetr Machata{ 12733446dcd7SPetr Machata # Tests for vlan_filtering 0 mcast_vlan_snooping 0. 12743446dcd7SPetr Machata 12753446dcd7SPetr Machata switch_create_8021d 12763446dcd7SPetr Machata setup_wait 12773446dcd7SPetr Machata 12783446dcd7SPetr Machata test_8021d_ngroups_cfg4 12793446dcd7SPetr Machata test_8021d_ngroups_ctl4 12803446dcd7SPetr Machata test_8021d_ngroups_cfg6 12813446dcd7SPetr Machata test_8021d_ngroups_ctl6 12823446dcd7SPetr Machata test_8021d_maxgroups_cfg4 12833446dcd7SPetr Machata test_8021d_maxgroups_ctl4 12843446dcd7SPetr Machata test_8021d_maxgroups_cfg6 12853446dcd7SPetr Machata test_8021d_maxgroups_ctl6 12863446dcd7SPetr Machata 12873446dcd7SPetr Machata switch_destroy 12883446dcd7SPetr Machata} 12893446dcd7SPetr Machata 12903446dcd7SPetr Machatatest_8021q() 12913446dcd7SPetr Machata{ 12923446dcd7SPetr Machata # Tests for vlan_filtering 1 mcast_vlan_snooping 0. 12933446dcd7SPetr Machata 12943446dcd7SPetr Machata switch_create_8021q 12953446dcd7SPetr Machata setup_wait 12963446dcd7SPetr Machata 12973446dcd7SPetr Machata test_8021q_vlan_attributes 12983446dcd7SPetr Machata test_8021q_ngroups_cfg4 12993446dcd7SPetr Machata test_8021q_ngroups_ctl4 13003446dcd7SPetr Machata test_8021q_ngroups_cfg6 13013446dcd7SPetr Machata test_8021q_ngroups_ctl6 13023446dcd7SPetr Machata test_8021q_maxgroups_cfg4 13033446dcd7SPetr Machata test_8021q_maxgroups_ctl4 13043446dcd7SPetr Machata test_8021q_maxgroups_cfg6 13053446dcd7SPetr Machata test_8021q_maxgroups_ctl6 13063446dcd7SPetr Machata 13073446dcd7SPetr Machata switch_destroy 13083446dcd7SPetr Machata} 13093446dcd7SPetr Machata 13103446dcd7SPetr Machatatest_8021qvs() 13113446dcd7SPetr Machata{ 13123446dcd7SPetr Machata # Tests for vlan_filtering 1 mcast_vlan_snooping 1. 13133446dcd7SPetr Machata 13143446dcd7SPetr Machata switch_create_8021qvs 13153446dcd7SPetr Machata setup_wait 13163446dcd7SPetr Machata 13173446dcd7SPetr Machata test_8021qvs_vlan_attributes 13183446dcd7SPetr Machata test_8021qvs_ngroups_cfg4 13193446dcd7SPetr Machata test_8021qvs_ngroups_ctl4 13203446dcd7SPetr Machata test_8021qvs_ngroups_cfg6 13213446dcd7SPetr Machata test_8021qvs_ngroups_ctl6 13223446dcd7SPetr Machata test_8021qvs_maxgroups_cfg4 13233446dcd7SPetr Machata test_8021qvs_maxgroups_ctl4 13243446dcd7SPetr Machata test_8021qvs_maxgroups_cfg6 13253446dcd7SPetr Machata test_8021qvs_maxgroups_ctl6 13263446dcd7SPetr Machata test_8021qvs_toggle_vlan_snooping 13273446dcd7SPetr Machata 13283446dcd7SPetr Machata switch_destroy 13293446dcd7SPetr Machata} 13303446dcd7SPetr Machata 1331*6bdf3d97SIdo Schimmelif ! bridge link help 2>&1 | grep -q "mcast_max_groups"; then 1332*6bdf3d97SIdo Schimmel echo "SKIP: iproute2 too old, missing bridge \"mcast_max_groups\" support" 1333*6bdf3d97SIdo Schimmel exit $ksft_skip 1334*6bdf3d97SIdo Schimmelfi 1335*6bdf3d97SIdo Schimmel 13363446dcd7SPetr Machatatrap cleanup EXIT 13373446dcd7SPetr Machata 13383446dcd7SPetr Machatasetup_prepare 13393446dcd7SPetr Machatatests_run 13403446dcd7SPetr Machata 13413446dcd7SPetr Machataexit $EXIT_STATUS 1342