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} 255*cb034948SIdo Schimmel local dmac=01:00:5e:01:01:$(printf "%02x" $grp) 256*cb034948SIdo Schimmel $MZ $peer -a own -b $dmac -c 1 -A 192.0.2.1 -B $GRP \ 2573446dcd7SPetr Machata -t ip proto=2,p=$(igmpv3_is_in_get $GRP $IPs) -q 2583446dcd7SPetr Machata sleep 1 2593446dcd7SPetr Machata 2603446dcd7SPetr Machata local nn=$(bridge mdb show dev br0 | grep $GRP | wc -l) 2613446dcd7SPetr Machata if ((nn != n)); then 2623446dcd7SPetr Machata echo mcast_max_groups > /dev/stderr 2633446dcd7SPetr Machata false 2643446dcd7SPetr Machata fi 2653446dcd7SPetr Machata} 2663446dcd7SPetr Machata 2673446dcd7SPetr Machatactl4_entries_del() 2683446dcd7SPetr Machata{ 2693446dcd7SPetr Machata local locus=$1; shift 2703446dcd7SPetr Machata local state=$1; shift 2713446dcd7SPetr Machata local n=$1; shift 2723446dcd7SPetr Machata local grp=${1:-1}; shift 2733446dcd7SPetr Machata 2743446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 2753446dcd7SPetr Machata local GRP=239.1.1.${grp} 276*cb034948SIdo Schimmel local dmac=01:00:5e:00:00:02 277*cb034948SIdo Schimmel $MZ $peer -a own -b $dmac -c 1 -A 192.0.2.1 -B 224.0.0.2 \ 2783446dcd7SPetr Machata -t ip proto=2,p=$(igmpv2_leave_get $GRP) -q 2793446dcd7SPetr Machata sleep 1 2803446dcd7SPetr Machata ! bridge mdb show dev br0 | grep -q $GRP 2813446dcd7SPetr Machata} 2823446dcd7SPetr Machata 2833446dcd7SPetr Machatactl6_entries_add() 2843446dcd7SPetr Machata{ 2853446dcd7SPetr Machata local locus=$1; shift 2863446dcd7SPetr Machata local state=$1; shift 2873446dcd7SPetr Machata local n=$1; shift 2883446dcd7SPetr Machata local grp=${1:-1}; shift 2893446dcd7SPetr Machata 2903446dcd7SPetr Machata local IPs=$(printf "2001:db8:1::%x\n" $(seq 1 $((n - 1)))) 2913446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 2923446dcd7SPetr Machata local SIP=fe80::1 2933446dcd7SPetr Machata local GRP=ff0e::${grp} 294*cb034948SIdo Schimmel local dmac=33:33:00:00:00:$(printf "%02x" $grp) 2953446dcd7SPetr Machata local p=$(mldv2_is_in_get $SIP $GRP $IPs) 296*cb034948SIdo Schimmel $MZ -6 $peer -a own -b $dmac -c 1 -A $SIP -B $GRP \ 297*cb034948SIdo Schimmel -t ip hop=1,next=0,p="$p" -q 2983446dcd7SPetr Machata sleep 1 2993446dcd7SPetr Machata 3003446dcd7SPetr Machata local nn=$(bridge mdb show dev br0 | grep $GRP | wc -l) 3013446dcd7SPetr Machata if ((nn != n)); then 3023446dcd7SPetr Machata echo mcast_max_groups > /dev/stderr 3033446dcd7SPetr Machata false 3043446dcd7SPetr Machata fi 3053446dcd7SPetr Machata} 3063446dcd7SPetr Machata 3073446dcd7SPetr Machatactl6_entries_del() 3083446dcd7SPetr Machata{ 3093446dcd7SPetr Machata local locus=$1; shift 3103446dcd7SPetr Machata local state=$1; shift 3113446dcd7SPetr Machata local n=$1; shift 3123446dcd7SPetr Machata local grp=${1:-1}; shift 3133446dcd7SPetr Machata 3143446dcd7SPetr Machata local peer=$(locus_dev_peer $locus) 3153446dcd7SPetr Machata local SIP=fe80::1 3163446dcd7SPetr Machata local GRP=ff0e::${grp} 317*cb034948SIdo Schimmel local dmac=33:33:00:00:00:$(printf "%02x" $grp) 3183446dcd7SPetr Machata local p=$(mldv1_done_get $SIP $GRP) 319*cb034948SIdo Schimmel $MZ -6 $peer -a own -b $dmac -c 1 -A $SIP -B $GRP \ 320*cb034948SIdo Schimmel -t ip hop=1,next=0,p="$p" -q 3213446dcd7SPetr Machata sleep 1 3223446dcd7SPetr Machata ! bridge mdb show dev br0 | grep -q $GRP 3233446dcd7SPetr Machata} 3243446dcd7SPetr Machata 3253446dcd7SPetr Machatabridge_maxgroups_errmsg_check_cfg() 3263446dcd7SPetr Machata{ 3273446dcd7SPetr Machata local msg=$1; shift 3283446dcd7SPetr Machata local needle=$1; shift 3293446dcd7SPetr Machata 3303446dcd7SPetr Machata echo "$msg" | grep -q mcast_max_groups 3313446dcd7SPetr Machata check_err $? "Adding MDB entries failed for the wrong reason: $msg" 3323446dcd7SPetr Machata} 3333446dcd7SPetr Machata 3343446dcd7SPetr Machatabridge_maxgroups_errmsg_check_cfg4() 3353446dcd7SPetr Machata{ 3363446dcd7SPetr Machata bridge_maxgroups_errmsg_check_cfg "$@" 3373446dcd7SPetr Machata} 3383446dcd7SPetr Machata 3393446dcd7SPetr Machatabridge_maxgroups_errmsg_check_cfg6() 3403446dcd7SPetr Machata{ 3413446dcd7SPetr Machata bridge_maxgroups_errmsg_check_cfg "$@" 3423446dcd7SPetr Machata} 3433446dcd7SPetr Machata 3443446dcd7SPetr Machatabridge_maxgroups_errmsg_check_ctl4() 3453446dcd7SPetr Machata{ 3463446dcd7SPetr Machata : 3473446dcd7SPetr Machata} 3483446dcd7SPetr Machata 3493446dcd7SPetr Machatabridge_maxgroups_errmsg_check_ctl6() 3503446dcd7SPetr Machata{ 3513446dcd7SPetr Machata : 3523446dcd7SPetr Machata} 3533446dcd7SPetr Machata 3543446dcd7SPetr Machatabridge_port_ngroups_get() 3553446dcd7SPetr Machata{ 3563446dcd7SPetr Machata local locus=$1; shift 3573446dcd7SPetr Machata 3583446dcd7SPetr Machata bridge -j -d link show $locus | 3593446dcd7SPetr Machata jq '.[].mcast_n_groups' 3603446dcd7SPetr Machata} 3613446dcd7SPetr Machata 3623446dcd7SPetr Machatabridge_port_maxgroups_get() 3633446dcd7SPetr Machata{ 3643446dcd7SPetr Machata local locus=$1; shift 3653446dcd7SPetr Machata 3663446dcd7SPetr Machata bridge -j -d link show $locus | 3673446dcd7SPetr Machata jq '.[].mcast_max_groups' 3683446dcd7SPetr Machata} 3693446dcd7SPetr Machata 3703446dcd7SPetr Machatabridge_port_maxgroups_set() 3713446dcd7SPetr Machata{ 3723446dcd7SPetr Machata local locus=$1; shift 3733446dcd7SPetr Machata local max=$1; shift 3743446dcd7SPetr Machata 3753446dcd7SPetr Machata bridge link set dev $(locus_dev $locus) mcast_max_groups $max 3763446dcd7SPetr Machata} 3773446dcd7SPetr Machata 3783446dcd7SPetr Machatabridge_port_vlan_ngroups_get() 3793446dcd7SPetr Machata{ 3803446dcd7SPetr Machata local locus=$1; shift 3813446dcd7SPetr Machata 3823446dcd7SPetr Machata bridge -j -d vlan show $locus | 3833446dcd7SPetr Machata jq '.[].vlans[].mcast_n_groups' 3843446dcd7SPetr Machata} 3853446dcd7SPetr Machata 3863446dcd7SPetr Machatabridge_port_vlan_maxgroups_get() 3873446dcd7SPetr Machata{ 3883446dcd7SPetr Machata local locus=$1; shift 3893446dcd7SPetr Machata 3903446dcd7SPetr Machata bridge -j -d vlan show $locus | 3913446dcd7SPetr Machata jq '.[].vlans[].mcast_max_groups' 3923446dcd7SPetr Machata} 3933446dcd7SPetr Machata 3943446dcd7SPetr Machatabridge_port_vlan_maxgroups_set() 3953446dcd7SPetr Machata{ 3963446dcd7SPetr Machata local locus=$1; shift 3973446dcd7SPetr Machata local max=$1; shift 3983446dcd7SPetr Machata 3993446dcd7SPetr Machata bridge vlan set $locus mcast_max_groups $max 4003446dcd7SPetr Machata} 4013446dcd7SPetr Machata 4023446dcd7SPetr Machatatest_ngroups_reporting() 4033446dcd7SPetr Machata{ 4043446dcd7SPetr Machata local CFG=$1; shift 4053446dcd7SPetr Machata local context=$1; shift 4063446dcd7SPetr Machata local locus=$1; shift 4073446dcd7SPetr Machata 4083446dcd7SPetr Machata RET=0 4093446dcd7SPetr Machata 4103446dcd7SPetr Machata local n0=$(bridge_${context}_ngroups_get "$locus") 4113446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 5 4123446dcd7SPetr Machata check_err $? "Couldn't add MDB entries" 4133446dcd7SPetr Machata local n1=$(bridge_${context}_ngroups_get "$locus") 4143446dcd7SPetr Machata 4153446dcd7SPetr Machata ((n1 == n0 + 5)) 4163446dcd7SPetr Machata check_err $? "Number of groups was $n0, now is $n1, but $((n0 + 5)) expected" 4173446dcd7SPetr Machata 4183446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 5 4193446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 4203446dcd7SPetr Machata local n2=$(bridge_${context}_ngroups_get "$locus") 4213446dcd7SPetr Machata 4223446dcd7SPetr Machata ((n2 == n0)) 4233446dcd7SPetr Machata check_err $? "Number of groups was $n0, now is $n2, but should be back to $n0" 4243446dcd7SPetr Machata 4253446dcd7SPetr Machata log_test "$CFG: $context: ngroups reporting" 4263446dcd7SPetr Machata} 4273446dcd7SPetr Machata 4283446dcd7SPetr Machatatest_8021d_ngroups_reporting_cfg4() 4293446dcd7SPetr Machata{ 4303446dcd7SPetr Machata test_ngroups_reporting cfg4 port "dev $swp1" 4313446dcd7SPetr Machata} 4323446dcd7SPetr Machata 4333446dcd7SPetr Machatatest_8021d_ngroups_reporting_ctl4() 4343446dcd7SPetr Machata{ 4353446dcd7SPetr Machata test_ngroups_reporting ctl4 port "dev $swp1" 4363446dcd7SPetr Machata} 4373446dcd7SPetr Machata 4383446dcd7SPetr Machatatest_8021d_ngroups_reporting_cfg6() 4393446dcd7SPetr Machata{ 4403446dcd7SPetr Machata test_ngroups_reporting cfg6 port "dev $swp1" 4413446dcd7SPetr Machata} 4423446dcd7SPetr Machata 4433446dcd7SPetr Machatatest_8021d_ngroups_reporting_ctl6() 4443446dcd7SPetr Machata{ 4453446dcd7SPetr Machata test_ngroups_reporting ctl6 port "dev $swp1" 4463446dcd7SPetr Machata} 4473446dcd7SPetr Machata 4483446dcd7SPetr Machatatest_8021q_ngroups_reporting_cfg4() 4493446dcd7SPetr Machata{ 4503446dcd7SPetr Machata test_ngroups_reporting cfg4 port "dev $swp1 vid 10" 4513446dcd7SPetr Machata} 4523446dcd7SPetr Machata 4533446dcd7SPetr Machatatest_8021q_ngroups_reporting_ctl4() 4543446dcd7SPetr Machata{ 4553446dcd7SPetr Machata test_ngroups_reporting ctl4 port "dev $swp1 vid 10" 4563446dcd7SPetr Machata} 4573446dcd7SPetr Machata 4583446dcd7SPetr Machatatest_8021q_ngroups_reporting_cfg6() 4593446dcd7SPetr Machata{ 4603446dcd7SPetr Machata test_ngroups_reporting cfg6 port "dev $swp1 vid 10" 4613446dcd7SPetr Machata} 4623446dcd7SPetr Machata 4633446dcd7SPetr Machatatest_8021q_ngroups_reporting_ctl6() 4643446dcd7SPetr Machata{ 4653446dcd7SPetr Machata test_ngroups_reporting ctl6 port "dev $swp1 vid 10" 4663446dcd7SPetr Machata} 4673446dcd7SPetr Machata 4683446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_cfg4() 4693446dcd7SPetr Machata{ 4703446dcd7SPetr Machata test_ngroups_reporting cfg4 port_vlan "dev $swp1 vid 10" 4713446dcd7SPetr Machata} 4723446dcd7SPetr Machata 4733446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_ctl4() 4743446dcd7SPetr Machata{ 4753446dcd7SPetr Machata test_ngroups_reporting ctl4 port_vlan "dev $swp1 vid 10" 4763446dcd7SPetr Machata} 4773446dcd7SPetr Machata 4783446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_cfg6() 4793446dcd7SPetr Machata{ 4803446dcd7SPetr Machata test_ngroups_reporting cfg6 port_vlan "dev $swp1 vid 10" 4813446dcd7SPetr Machata} 4823446dcd7SPetr Machata 4833446dcd7SPetr Machatatest_8021qvs_ngroups_reporting_ctl6() 4843446dcd7SPetr Machata{ 4853446dcd7SPetr Machata test_ngroups_reporting ctl6 port_vlan "dev $swp1 vid 10" 4863446dcd7SPetr Machata} 4873446dcd7SPetr Machata 4883446dcd7SPetr Machatatest_ngroups_cross_vlan() 4893446dcd7SPetr Machata{ 4903446dcd7SPetr Machata local CFG=$1; shift 4913446dcd7SPetr Machata 4923446dcd7SPetr Machata local locus1="dev $swp1 vid 10" 4933446dcd7SPetr Machata local locus2="dev $swp1 vid 20" 4943446dcd7SPetr Machata 4953446dcd7SPetr Machata RET=0 4963446dcd7SPetr Machata 4973446dcd7SPetr Machata local n10=$(bridge_port_vlan_ngroups_get "$locus1") 4983446dcd7SPetr Machata local n20=$(bridge_port_vlan_ngroups_get "$locus2") 4993446dcd7SPetr Machata ${CFG}_entries_add "$locus1" temp 5 111 5003446dcd7SPetr Machata check_err $? "Couldn't add MDB entries to VLAN 10" 5013446dcd7SPetr Machata local n11=$(bridge_port_vlan_ngroups_get "$locus1") 5023446dcd7SPetr Machata local n21=$(bridge_port_vlan_ngroups_get "$locus2") 5033446dcd7SPetr Machata 5043446dcd7SPetr Machata ((n11 == n10 + 5)) 5053446dcd7SPetr Machata check_err $? "Number of groups at VLAN 10 was $n10, now is $n11, but 5 entries added on VLAN 10, $((n10 + 5)) expected" 5063446dcd7SPetr Machata 5073446dcd7SPetr Machata ((n21 == n20)) 5083446dcd7SPetr Machata check_err $? "Number of groups at VLAN 20 was $n20, now is $n21, but no change expected on VLAN 20" 5093446dcd7SPetr Machata 5103446dcd7SPetr Machata ${CFG}_entries_add "$locus2" temp 5 112 5113446dcd7SPetr Machata check_err $? "Couldn't add MDB entries to VLAN 20" 5123446dcd7SPetr Machata local n12=$(bridge_port_vlan_ngroups_get "$locus1") 5133446dcd7SPetr Machata local n22=$(bridge_port_vlan_ngroups_get "$locus2") 5143446dcd7SPetr Machata 5153446dcd7SPetr Machata ((n12 == n11)) 5163446dcd7SPetr Machata check_err $? "Number of groups at VLAN 10 was $n11, now is $n12, but no change expected on VLAN 10" 5173446dcd7SPetr Machata 5183446dcd7SPetr Machata ((n22 == n21 + 5)) 5193446dcd7SPetr Machata check_err $? "Number of groups at VLAN 20 was $n21, now is $n22, but 5 entries added on VLAN 20, $((n21 + 5)) expected" 5203446dcd7SPetr Machata 5213446dcd7SPetr Machata ${CFG}_entries_del "$locus1" temp 5 111 5223446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries from VLAN 10" 5233446dcd7SPetr Machata ${CFG}_entries_del "$locus2" temp 5 112 5243446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries from VLAN 20" 5253446dcd7SPetr Machata local n13=$(bridge_port_vlan_ngroups_get "$locus1") 5263446dcd7SPetr Machata local n23=$(bridge_port_vlan_ngroups_get "$locus2") 5273446dcd7SPetr Machata 5283446dcd7SPetr Machata ((n13 == n10)) 5293446dcd7SPetr Machata check_err $? "Number of groups at VLAN 10 was $n10, now is $n13, but should be back to $n10" 5303446dcd7SPetr Machata 5313446dcd7SPetr Machata ((n23 == n20)) 5323446dcd7SPetr Machata check_err $? "Number of groups at VLAN 20 was $n20, now is $n23, but should be back to $n20" 5333446dcd7SPetr Machata 5343446dcd7SPetr Machata log_test "$CFG: port_vlan: isolation of port and per-VLAN ngroups" 5353446dcd7SPetr Machata} 5363446dcd7SPetr Machata 5373446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_cfg4() 5383446dcd7SPetr Machata{ 5393446dcd7SPetr Machata test_ngroups_cross_vlan cfg4 5403446dcd7SPetr Machata} 5413446dcd7SPetr Machata 5423446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_ctl4() 5433446dcd7SPetr Machata{ 5443446dcd7SPetr Machata test_ngroups_cross_vlan ctl4 5453446dcd7SPetr Machata} 5463446dcd7SPetr Machata 5473446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_cfg6() 5483446dcd7SPetr Machata{ 5493446dcd7SPetr Machata test_ngroups_cross_vlan cfg6 5503446dcd7SPetr Machata} 5513446dcd7SPetr Machata 5523446dcd7SPetr Machatatest_8021qvs_ngroups_cross_vlan_ctl6() 5533446dcd7SPetr Machata{ 5543446dcd7SPetr Machata test_ngroups_cross_vlan ctl6 5553446dcd7SPetr Machata} 5563446dcd7SPetr Machata 5573446dcd7SPetr Machatatest_maxgroups_zero() 5583446dcd7SPetr Machata{ 5593446dcd7SPetr Machata local CFG=$1; shift 5603446dcd7SPetr Machata local context=$1; shift 5613446dcd7SPetr Machata local locus=$1; shift 5623446dcd7SPetr Machata 5633446dcd7SPetr Machata RET=0 5643446dcd7SPetr Machata local max 5653446dcd7SPetr Machata 5663446dcd7SPetr Machata max=$(bridge_${context}_maxgroups_get "$locus") 5673446dcd7SPetr Machata ((max == 0)) 5683446dcd7SPetr Machata check_err $? "Max groups on $locus should be 0, but $max reported" 5693446dcd7SPetr Machata 5703446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 100 5713446dcd7SPetr Machata check_err $? "Failed to set max to 100" 5723446dcd7SPetr Machata max=$(bridge_${context}_maxgroups_get "$locus") 5733446dcd7SPetr Machata ((max == 100)) 5743446dcd7SPetr Machata check_err $? "Max groups expected to be 100, but $max reported" 5753446dcd7SPetr Machata 5763446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 5773446dcd7SPetr Machata check_err $? "Couldn't set maximum to 0" 5783446dcd7SPetr Machata 5793446dcd7SPetr Machata # Test that setting 0 explicitly still serves as infinity. 5803446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 5 5813446dcd7SPetr Machata check_err $? "Adding 5 MDB entries failed but should have passed" 5823446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 5 5833446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 5843446dcd7SPetr Machata 5853446dcd7SPetr Machata log_test "$CFG: $context maxgroups: reporting and treatment of 0" 5863446dcd7SPetr Machata} 5873446dcd7SPetr Machata 5883446dcd7SPetr Machatatest_8021d_maxgroups_zero_cfg4() 5893446dcd7SPetr Machata{ 5903446dcd7SPetr Machata test_maxgroups_zero cfg4 port "dev $swp1" 5913446dcd7SPetr Machata} 5923446dcd7SPetr Machata 5933446dcd7SPetr Machatatest_8021d_maxgroups_zero_ctl4() 5943446dcd7SPetr Machata{ 5953446dcd7SPetr Machata test_maxgroups_zero ctl4 port "dev $swp1" 5963446dcd7SPetr Machata} 5973446dcd7SPetr Machata 5983446dcd7SPetr Machatatest_8021d_maxgroups_zero_cfg6() 5993446dcd7SPetr Machata{ 6003446dcd7SPetr Machata test_maxgroups_zero cfg6 port "dev $swp1" 6013446dcd7SPetr Machata} 6023446dcd7SPetr Machata 6033446dcd7SPetr Machatatest_8021d_maxgroups_zero_ctl6() 6043446dcd7SPetr Machata{ 6053446dcd7SPetr Machata test_maxgroups_zero ctl6 port "dev $swp1" 6063446dcd7SPetr Machata} 6073446dcd7SPetr Machata 6083446dcd7SPetr Machatatest_8021q_maxgroups_zero_cfg4() 6093446dcd7SPetr Machata{ 6103446dcd7SPetr Machata test_maxgroups_zero cfg4 port "dev $swp1 vid 10" 6113446dcd7SPetr Machata} 6123446dcd7SPetr Machata 6133446dcd7SPetr Machatatest_8021q_maxgroups_zero_ctl4() 6143446dcd7SPetr Machata{ 6153446dcd7SPetr Machata test_maxgroups_zero ctl4 port "dev $swp1 vid 10" 6163446dcd7SPetr Machata} 6173446dcd7SPetr Machata 6183446dcd7SPetr Machatatest_8021q_maxgroups_zero_cfg6() 6193446dcd7SPetr Machata{ 6203446dcd7SPetr Machata test_maxgroups_zero cfg6 port "dev $swp1 vid 10" 6213446dcd7SPetr Machata} 6223446dcd7SPetr Machata 6233446dcd7SPetr Machatatest_8021q_maxgroups_zero_ctl6() 6243446dcd7SPetr Machata{ 6253446dcd7SPetr Machata test_maxgroups_zero ctl6 port "dev $swp1 vid 10" 6263446dcd7SPetr Machata} 6273446dcd7SPetr Machata 6283446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cfg4() 6293446dcd7SPetr Machata{ 6303446dcd7SPetr Machata test_maxgroups_zero cfg4 port_vlan "dev $swp1 vid 10" 6313446dcd7SPetr Machata} 6323446dcd7SPetr Machata 6333446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_ctl4() 6343446dcd7SPetr Machata{ 6353446dcd7SPetr Machata test_maxgroups_zero ctl4 port_vlan "dev $swp1 vid 10" 6363446dcd7SPetr Machata} 6373446dcd7SPetr Machata 6383446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cfg6() 6393446dcd7SPetr Machata{ 6403446dcd7SPetr Machata test_maxgroups_zero cfg6 port_vlan "dev $swp1 vid 10" 6413446dcd7SPetr Machata} 6423446dcd7SPetr Machata 6433446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_ctl6() 6443446dcd7SPetr Machata{ 6453446dcd7SPetr Machata test_maxgroups_zero ctl6 port_vlan "dev $swp1 vid 10" 6463446dcd7SPetr Machata} 6473446dcd7SPetr Machata 6483446dcd7SPetr Machatatest_maxgroups_zero_cross_vlan() 6493446dcd7SPetr Machata{ 6503446dcd7SPetr Machata local CFG=$1; shift 6513446dcd7SPetr Machata 6523446dcd7SPetr Machata local locus0="dev $swp1" 6533446dcd7SPetr Machata local locus1="dev $swp1 vid 10" 6543446dcd7SPetr Machata local locus2="dev $swp1 vid 20" 6553446dcd7SPetr Machata local max 6563446dcd7SPetr Machata 6573446dcd7SPetr Machata RET=0 6583446dcd7SPetr Machata 6593446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" 100 6603446dcd7SPetr Machata check_err $? "$locus1: Failed to set max to 100" 6613446dcd7SPetr Machata 6623446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6633446dcd7SPetr Machata ((max == 0)) 6643446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 0, but $max reported" 6653446dcd7SPetr Machata 6663446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6673446dcd7SPetr Machata ((max == 0)) 6683446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 0, but $max reported" 6693446dcd7SPetr Machata 6703446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus2" 100 6713446dcd7SPetr Machata check_err $? "$locus2: Failed to set max to 100" 6723446dcd7SPetr Machata 6733446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6743446dcd7SPetr Machata ((max == 0)) 6753446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 0, but $max reported" 6763446dcd7SPetr Machata 6773446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6783446dcd7SPetr Machata ((max == 100)) 6793446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 100, but $max reported" 6803446dcd7SPetr Machata 6813446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" 100 6823446dcd7SPetr Machata check_err $? "$locus0: Failed to set max to 100" 6833446dcd7SPetr Machata 6843446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6853446dcd7SPetr Machata ((max == 100)) 6863446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 100, but $max reported" 6873446dcd7SPetr Machata 6883446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 6893446dcd7SPetr Machata ((max == 100)) 6903446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 100, but $max reported" 6913446dcd7SPetr Machata 6923446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" 0 6933446dcd7SPetr Machata check_err $? "$locus1: Failed to set max to 0" 6943446dcd7SPetr Machata 6953446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 6963446dcd7SPetr Machata ((max == 100)) 6973446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 100, but $max reported" 6983446dcd7SPetr Machata 6993446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 7003446dcd7SPetr Machata ((max == 100)) 7013446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 100, but $max reported" 7023446dcd7SPetr Machata 7033446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus2" 0 7043446dcd7SPetr Machata check_err $? "$locus2: Failed to set max to 0" 7053446dcd7SPetr Machata 7063446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 7073446dcd7SPetr Machata ((max == 100)) 7083446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 100, but $max reported" 7093446dcd7SPetr Machata 7103446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 7113446dcd7SPetr Machata ((max == 0)) 7123446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 0 but $max reported" 7133446dcd7SPetr Machata 7143446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" 0 7153446dcd7SPetr Machata check_err $? "$locus0: Failed to set max to 0" 7163446dcd7SPetr Machata 7173446dcd7SPetr Machata max=$(bridge_port_maxgroups_get "$locus0") 7183446dcd7SPetr Machata ((max == 0)) 7193446dcd7SPetr Machata check_err $? "$locus0: Max groups expected to be 0, but $max reported" 7203446dcd7SPetr Machata 7213446dcd7SPetr Machata max=$(bridge_port_vlan_maxgroups_get "$locus2") 7223446dcd7SPetr Machata ((max == 0)) 7233446dcd7SPetr Machata check_err $? "$locus2: Max groups expected to be 0, but $max reported" 7243446dcd7SPetr Machata 7253446dcd7SPetr Machata log_test "$CFG: port_vlan maxgroups: isolation of port and per-VLAN maximums" 7263446dcd7SPetr Machata} 7273446dcd7SPetr Machata 7283446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_cfg4() 7293446dcd7SPetr Machata{ 7303446dcd7SPetr Machata test_maxgroups_zero_cross_vlan cfg4 7313446dcd7SPetr Machata} 7323446dcd7SPetr Machata 7333446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_ctl4() 7343446dcd7SPetr Machata{ 7353446dcd7SPetr Machata test_maxgroups_zero_cross_vlan ctl4 7363446dcd7SPetr Machata} 7373446dcd7SPetr Machata 7383446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_cfg6() 7393446dcd7SPetr Machata{ 7403446dcd7SPetr Machata test_maxgroups_zero_cross_vlan cfg6 7413446dcd7SPetr Machata} 7423446dcd7SPetr Machata 7433446dcd7SPetr Machatatest_8021qvs_maxgroups_zero_cross_vlan_ctl6() 7443446dcd7SPetr Machata{ 7453446dcd7SPetr Machata test_maxgroups_zero_cross_vlan ctl6 7463446dcd7SPetr Machata} 7473446dcd7SPetr Machata 7483446dcd7SPetr Machatatest_maxgroups_too_low() 7493446dcd7SPetr Machata{ 7503446dcd7SPetr Machata local CFG=$1; shift 7513446dcd7SPetr Machata local context=$1; shift 7523446dcd7SPetr Machata local locus=$1; shift 7533446dcd7SPetr Machata 7543446dcd7SPetr Machata RET=0 7553446dcd7SPetr Machata 7563446dcd7SPetr Machata local n=$(bridge_${context}_ngroups_get "$locus") 7573446dcd7SPetr Machata local msg 7583446dcd7SPetr Machata 7593446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 5 111 7603446dcd7SPetr Machata check_err $? "$locus: Couldn't add MDB entries" 7613446dcd7SPetr Machata 7623446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" $((n+2)) 7633446dcd7SPetr Machata check_err $? "$locus: Setting maxgroups to $((n+2)) failed" 7643446dcd7SPetr Machata 7653446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus" temp 2 112 2>&1) 7663446dcd7SPetr Machata check_fail $? "$locus: Adding more entries passed when max<n" 7673446dcd7SPetr Machata bridge_maxgroups_errmsg_check_cfg "$msg" 7683446dcd7SPetr Machata 7693446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 5 111 7703446dcd7SPetr Machata check_err $? "$locus: Couldn't delete MDB entries" 7713446dcd7SPetr Machata 7723446dcd7SPetr Machata ${CFG}_entries_add "$locus" temp 2 112 7733446dcd7SPetr Machata check_err $? "$locus: Adding more entries failed" 7743446dcd7SPetr Machata 7753446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 2 112 7763446dcd7SPetr Machata check_err $? "$locus: Deleting more entries failed" 7773446dcd7SPetr Machata 7783446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 7793446dcd7SPetr Machata check_err $? "$locus: Couldn't set maximum to 0" 7803446dcd7SPetr Machata 7813446dcd7SPetr Machata log_test "$CFG: $context maxgroups: configure below ngroups" 7823446dcd7SPetr Machata} 7833446dcd7SPetr Machata 7843446dcd7SPetr Machatatest_8021d_maxgroups_too_low_cfg4() 7853446dcd7SPetr Machata{ 7863446dcd7SPetr Machata test_maxgroups_too_low cfg4 port "dev $swp1" 7873446dcd7SPetr Machata} 7883446dcd7SPetr Machata 7893446dcd7SPetr Machatatest_8021d_maxgroups_too_low_ctl4() 7903446dcd7SPetr Machata{ 7913446dcd7SPetr Machata test_maxgroups_too_low ctl4 port "dev $swp1" 7923446dcd7SPetr Machata} 7933446dcd7SPetr Machata 7943446dcd7SPetr Machatatest_8021d_maxgroups_too_low_cfg6() 7953446dcd7SPetr Machata{ 7963446dcd7SPetr Machata test_maxgroups_too_low cfg6 port "dev $swp1" 7973446dcd7SPetr Machata} 7983446dcd7SPetr Machata 7993446dcd7SPetr Machatatest_8021d_maxgroups_too_low_ctl6() 8003446dcd7SPetr Machata{ 8013446dcd7SPetr Machata test_maxgroups_too_low ctl6 port "dev $swp1" 8023446dcd7SPetr Machata} 8033446dcd7SPetr Machata 8043446dcd7SPetr Machatatest_8021q_maxgroups_too_low_cfg4() 8053446dcd7SPetr Machata{ 8063446dcd7SPetr Machata test_maxgroups_too_low cfg4 port "dev $swp1 vid 10" 8073446dcd7SPetr Machata} 8083446dcd7SPetr Machata 8093446dcd7SPetr Machatatest_8021q_maxgroups_too_low_ctl4() 8103446dcd7SPetr Machata{ 8113446dcd7SPetr Machata test_maxgroups_too_low ctl4 port "dev $swp1 vid 10" 8123446dcd7SPetr Machata} 8133446dcd7SPetr Machata 8143446dcd7SPetr Machatatest_8021q_maxgroups_too_low_cfg6() 8153446dcd7SPetr Machata{ 8163446dcd7SPetr Machata test_maxgroups_too_low cfg6 port "dev $swp1 vid 10" 8173446dcd7SPetr Machata} 8183446dcd7SPetr Machata 8193446dcd7SPetr Machatatest_8021q_maxgroups_too_low_ctl6() 8203446dcd7SPetr Machata{ 8213446dcd7SPetr Machata test_maxgroups_too_low ctl6 port "dev $swp1 vid 10" 8223446dcd7SPetr Machata} 8233446dcd7SPetr Machata 8243446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_cfg4() 8253446dcd7SPetr Machata{ 8263446dcd7SPetr Machata test_maxgroups_too_low cfg4 port_vlan "dev $swp1 vid 10" 8273446dcd7SPetr Machata} 8283446dcd7SPetr Machata 8293446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_ctl4() 8303446dcd7SPetr Machata{ 8313446dcd7SPetr Machata test_maxgroups_too_low ctl4 port_vlan "dev $swp1 vid 10" 8323446dcd7SPetr Machata} 8333446dcd7SPetr Machata 8343446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_cfg6() 8353446dcd7SPetr Machata{ 8363446dcd7SPetr Machata test_maxgroups_too_low cfg6 port_vlan "dev $swp1 vid 10" 8373446dcd7SPetr Machata} 8383446dcd7SPetr Machata 8393446dcd7SPetr Machatatest_8021qvs_maxgroups_too_low_ctl6() 8403446dcd7SPetr Machata{ 8413446dcd7SPetr Machata test_maxgroups_too_low ctl6 port_vlan "dev $swp1 vid 10" 8423446dcd7SPetr Machata} 8433446dcd7SPetr Machata 8443446dcd7SPetr Machatatest_maxgroups_too_many_entries() 8453446dcd7SPetr Machata{ 8463446dcd7SPetr Machata local CFG=$1; shift 8473446dcd7SPetr Machata local context=$1; shift 8483446dcd7SPetr Machata local locus=$1; shift 8493446dcd7SPetr Machata 8503446dcd7SPetr Machata RET=0 8513446dcd7SPetr Machata 8523446dcd7SPetr Machata local n=$(bridge_${context}_ngroups_get "$locus") 8533446dcd7SPetr Machata local msg 8543446dcd7SPetr Machata 8553446dcd7SPetr Machata # Configure a low maximum 8563446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" $((n+1)) 8573446dcd7SPetr Machata check_err $? "$locus: Couldn't set maximum" 8583446dcd7SPetr Machata 8593446dcd7SPetr Machata # Try to add more entries than the configured maximum 8603446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus" temp 5 2>&1) 8613446dcd7SPetr Machata check_fail $? "Adding 5 MDB entries passed, but should have failed" 8623446dcd7SPetr Machata bridge_maxgroups_errmsg_check_${CFG} "$msg" 8633446dcd7SPetr Machata 8643446dcd7SPetr Machata # When adding entries through the control path, as many as possible 8653446dcd7SPetr Machata # get created. That's consistent with the mcast_hash_max behavior. 8663446dcd7SPetr Machata # So there, drop the entries explicitly. 8673446dcd7SPetr Machata if [[ ${CFG%[46]} == ctl ]]; then 8683446dcd7SPetr Machata ${CFG}_entries_del "$locus" temp 17 2>&1 8693446dcd7SPetr Machata fi 8703446dcd7SPetr Machata 8713446dcd7SPetr Machata local n2=$(bridge_${context}_ngroups_get "$locus") 8723446dcd7SPetr Machata ((n2 == n)) 8733446dcd7SPetr Machata check_err $? "Number of groups was $n, but after a failed attempt to add MDB entries it changed to $n2" 8743446dcd7SPetr Machata 8753446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 8763446dcd7SPetr Machata check_err $? "$locus: Couldn't set maximum to 0" 8773446dcd7SPetr Machata 8783446dcd7SPetr Machata log_test "$CFG: $context maxgroups: add too many MDB entries" 8793446dcd7SPetr Machata} 8803446dcd7SPetr Machata 8813446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_cfg4() 8823446dcd7SPetr Machata{ 8833446dcd7SPetr Machata test_maxgroups_too_many_entries cfg4 port "dev $swp1" 8843446dcd7SPetr Machata} 8853446dcd7SPetr Machata 8863446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_ctl4() 8873446dcd7SPetr Machata{ 8883446dcd7SPetr Machata test_maxgroups_too_many_entries ctl4 port "dev $swp1" 8893446dcd7SPetr Machata} 8903446dcd7SPetr Machata 8913446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_cfg6() 8923446dcd7SPetr Machata{ 8933446dcd7SPetr Machata test_maxgroups_too_many_entries cfg6 port "dev $swp1" 8943446dcd7SPetr Machata} 8953446dcd7SPetr Machata 8963446dcd7SPetr Machatatest_8021d_maxgroups_too_many_entries_ctl6() 8973446dcd7SPetr Machata{ 8983446dcd7SPetr Machata test_maxgroups_too_many_entries ctl6 port "dev $swp1" 8993446dcd7SPetr Machata} 9003446dcd7SPetr Machata 9013446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_cfg4() 9023446dcd7SPetr Machata{ 9033446dcd7SPetr Machata test_maxgroups_too_many_entries cfg4 port "dev $swp1 vid 10" 9043446dcd7SPetr Machata} 9053446dcd7SPetr Machata 9063446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_ctl4() 9073446dcd7SPetr Machata{ 9083446dcd7SPetr Machata test_maxgroups_too_many_entries ctl4 port "dev $swp1 vid 10" 9093446dcd7SPetr Machata} 9103446dcd7SPetr Machata 9113446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_cfg6() 9123446dcd7SPetr Machata{ 9133446dcd7SPetr Machata test_maxgroups_too_many_entries cfg6 port "dev $swp1 vid 10" 9143446dcd7SPetr Machata} 9153446dcd7SPetr Machata 9163446dcd7SPetr Machatatest_8021q_maxgroups_too_many_entries_ctl6() 9173446dcd7SPetr Machata{ 9183446dcd7SPetr Machata test_maxgroups_too_many_entries ctl6 port "dev $swp1 vid 10" 9193446dcd7SPetr Machata} 9203446dcd7SPetr Machata 9213446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_cfg4() 9223446dcd7SPetr Machata{ 9233446dcd7SPetr Machata test_maxgroups_too_many_entries cfg4 port_vlan "dev $swp1 vid 10" 9243446dcd7SPetr Machata} 9253446dcd7SPetr Machata 9263446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_ctl4() 9273446dcd7SPetr Machata{ 9283446dcd7SPetr Machata test_maxgroups_too_many_entries ctl4 port_vlan "dev $swp1 vid 10" 9293446dcd7SPetr Machata} 9303446dcd7SPetr Machata 9313446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_cfg6() 9323446dcd7SPetr Machata{ 9333446dcd7SPetr Machata test_maxgroups_too_many_entries cfg6 port_vlan "dev $swp1 vid 10" 9343446dcd7SPetr Machata} 9353446dcd7SPetr Machata 9363446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_entries_ctl6() 9373446dcd7SPetr Machata{ 9383446dcd7SPetr Machata test_maxgroups_too_many_entries ctl6 port_vlan "dev $swp1 vid 10" 9393446dcd7SPetr Machata} 9403446dcd7SPetr Machata 9413446dcd7SPetr Machatatest_maxgroups_too_many_cross_vlan() 9423446dcd7SPetr Machata{ 9433446dcd7SPetr Machata local CFG=$1; shift 9443446dcd7SPetr Machata 9453446dcd7SPetr Machata RET=0 9463446dcd7SPetr Machata 9473446dcd7SPetr Machata local locus0="dev $swp1" 9483446dcd7SPetr Machata local locus1="dev $swp1 vid 10" 9493446dcd7SPetr Machata local locus2="dev $swp1 vid 20" 9503446dcd7SPetr Machata local n1=$(bridge_port_vlan_ngroups_get "$locus1") 9513446dcd7SPetr Machata local n2=$(bridge_port_vlan_ngroups_get "$locus2") 9523446dcd7SPetr Machata local msg 9533446dcd7SPetr Machata 9543446dcd7SPetr Machata if ((n1 > n2)); then 9553446dcd7SPetr Machata local tmp=$n1 9563446dcd7SPetr Machata n1=$n2 9573446dcd7SPetr Machata n2=$tmp 9583446dcd7SPetr Machata 9593446dcd7SPetr Machata tmp="$locus1" 9603446dcd7SPetr Machata locus1="$locus2" 9613446dcd7SPetr Machata locus2="$tmp" 9623446dcd7SPetr Machata fi 9633446dcd7SPetr Machata 9643446dcd7SPetr Machata # Now 0 <= n1 <= n2. 9653446dcd7SPetr Machata ${CFG}_entries_add "$locus2" temp 5 112 9663446dcd7SPetr Machata check_err $? "Couldn't add 5 entries" 9673446dcd7SPetr Machata 9683446dcd7SPetr Machata n2=$(bridge_port_vlan_ngroups_get "$locus2") 9693446dcd7SPetr Machata # Now 0 <= n1 < n2-1. 9703446dcd7SPetr Machata 9713446dcd7SPetr Machata # Setting locus1'maxgroups to n2-1 should pass. The number is 9723446dcd7SPetr Machata # smaller than both the absolute number of MDB entries, and in 9733446dcd7SPetr Machata # particular than number of locus2's number of entries, but it is 9743446dcd7SPetr Machata # large enough to cover locus1's entries. Thus we check that 9753446dcd7SPetr Machata # individual VLAN's ngroups are independent. 9763446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" $((n2-1)) 9773446dcd7SPetr Machata check_err $? "Setting ${locus1}'s maxgroups to $((n2-1)) failed" 9783446dcd7SPetr Machata 9793446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus1" temp $n2 111 2>&1) 9803446dcd7SPetr Machata check_fail $? "$locus1: Adding $n2 MDB entries passed, but should have failed" 9813446dcd7SPetr Machata bridge_maxgroups_errmsg_check_${CFG} "$msg" 9823446dcd7SPetr Machata 9833446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" $((n1 + n2 + 2)) 9843446dcd7SPetr Machata check_err $? "$locus0: Couldn't set maximum" 9853446dcd7SPetr Machata 9863446dcd7SPetr Machata msg=$(${CFG}_entries_add "$locus1" temp 5 111 2>&1) 9873446dcd7SPetr Machata check_fail $? "$locus1: Adding 5 MDB entries passed, but should have failed" 9883446dcd7SPetr Machata bridge_maxgroups_errmsg_check_${CFG} "$msg" 9893446dcd7SPetr Machata 9903446dcd7SPetr Machata # IGMP/MLD packets can cause several entries to be added, before 9913446dcd7SPetr Machata # the maximum is hit and the rest is then bounced. Remove what was 9923446dcd7SPetr Machata # committed, if anything. 9933446dcd7SPetr Machata ${CFG}_entries_del "$locus1" temp 5 111 2>/dev/null 9943446dcd7SPetr Machata 9953446dcd7SPetr Machata ${CFG}_entries_add "$locus1" temp 2 111 9963446dcd7SPetr Machata check_err $? "$locus1: Adding 2 MDB entries failed, but should have passed" 9973446dcd7SPetr Machata 9983446dcd7SPetr Machata ${CFG}_entries_del "$locus1" temp 2 111 9993446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 10003446dcd7SPetr Machata 10013446dcd7SPetr Machata ${CFG}_entries_del "$locus2" temp 5 112 10023446dcd7SPetr Machata check_err $? "Couldn't delete MDB entries" 10033446dcd7SPetr Machata 10043446dcd7SPetr Machata bridge_port_vlan_maxgroups_set "$locus1" 0 10053446dcd7SPetr Machata check_err $? "$locus1: Couldn't set maximum to 0" 10063446dcd7SPetr Machata 10073446dcd7SPetr Machata bridge_port_maxgroups_set "$locus0" 0 10083446dcd7SPetr Machata check_err $? "$locus0: Couldn't set maximum to 0" 10093446dcd7SPetr Machata 10103446dcd7SPetr Machata log_test "$CFG: port_vlan maxgroups: isolation of port and per-VLAN ngroups" 10113446dcd7SPetr Machata} 10123446dcd7SPetr Machata 10133446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_cfg4() 10143446dcd7SPetr Machata{ 10153446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan cfg4 10163446dcd7SPetr Machata} 10173446dcd7SPetr Machata 10183446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_ctl4() 10193446dcd7SPetr Machata{ 10203446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan ctl4 10213446dcd7SPetr Machata} 10223446dcd7SPetr Machata 10233446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_cfg6() 10243446dcd7SPetr Machata{ 10253446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan cfg6 10263446dcd7SPetr Machata} 10273446dcd7SPetr Machata 10283446dcd7SPetr Machatatest_8021qvs_maxgroups_too_many_cross_vlan_ctl6() 10293446dcd7SPetr Machata{ 10303446dcd7SPetr Machata test_maxgroups_too_many_cross_vlan ctl6 10313446dcd7SPetr Machata} 10323446dcd7SPetr Machata 10333446dcd7SPetr Machatatest_vlan_attributes() 10343446dcd7SPetr Machata{ 10353446dcd7SPetr Machata local locus=$1; shift 10363446dcd7SPetr Machata local expect=$1; shift 10373446dcd7SPetr Machata 10383446dcd7SPetr Machata RET=0 10393446dcd7SPetr Machata 10403446dcd7SPetr Machata local max=$(bridge_port_vlan_maxgroups_get "$locus") 10413446dcd7SPetr Machata local n=$(bridge_port_vlan_ngroups_get "$locus") 10423446dcd7SPetr Machata 10433446dcd7SPetr Machata eval "[[ $max $expect ]]" 10443446dcd7SPetr Machata check_err $? "$locus: maxgroups attribute expected to be $expect, but was $max" 10453446dcd7SPetr Machata 10463446dcd7SPetr Machata eval "[[ $n $expect ]]" 10473446dcd7SPetr Machata check_err $? "$locus: ngroups attribute expected to be $expect, but was $n" 10483446dcd7SPetr Machata 10493446dcd7SPetr Machata log_test "port_vlan: presence of ngroups and maxgroups attributes" 10503446dcd7SPetr Machata} 10513446dcd7SPetr Machata 10523446dcd7SPetr Machatatest_8021q_vlan_attributes() 10533446dcd7SPetr Machata{ 10543446dcd7SPetr Machata test_vlan_attributes "dev $swp1 vid 10" "== null" 10553446dcd7SPetr Machata} 10563446dcd7SPetr Machata 10573446dcd7SPetr Machatatest_8021qvs_vlan_attributes() 10583446dcd7SPetr Machata{ 10593446dcd7SPetr Machata test_vlan_attributes "dev $swp1 vid 10" "-ge 0" 10603446dcd7SPetr Machata} 10613446dcd7SPetr Machata 10623446dcd7SPetr Machatatest_toggle_vlan_snooping() 10633446dcd7SPetr Machata{ 10643446dcd7SPetr Machata local mode=$1; shift 10653446dcd7SPetr Machata 10663446dcd7SPetr Machata RET=0 10673446dcd7SPetr Machata 10683446dcd7SPetr Machata local CFG=cfg4 10693446dcd7SPetr Machata local context=port_vlan 10703446dcd7SPetr Machata local locus="dev $swp1 vid 10" 10713446dcd7SPetr Machata 10723446dcd7SPetr Machata ${CFG}_entries_add "$locus" $mode 5 10733446dcd7SPetr Machata check_err $? "Couldn't add MDB entries" 10743446dcd7SPetr Machata 10753446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 100 10763446dcd7SPetr Machata check_err $? "Failed to set max to 100" 10773446dcd7SPetr Machata 10783446dcd7SPetr Machata ip link set dev br0 type bridge mcast_vlan_snooping 0 10793446dcd7SPetr Machata sleep 1 10803446dcd7SPetr Machata ip link set dev br0 type bridge mcast_vlan_snooping 1 10813446dcd7SPetr Machata 10823446dcd7SPetr Machata local n=$(bridge_${context}_ngroups_get "$locus") 10833446dcd7SPetr Machata local nn=$(bridge mdb show dev br0 | grep $swp1 | wc -l) 10843446dcd7SPetr Machata ((nn == n)) 10853446dcd7SPetr Machata check_err $? "mcast_n_groups expected to be $nn, but $n reported" 10863446dcd7SPetr Machata 10873446dcd7SPetr Machata local max=$(bridge_${context}_maxgroups_get "$locus") 10883446dcd7SPetr Machata ((max == 100)) 10893446dcd7SPetr Machata check_err $? "Max groups expected to be 100 but $max reported" 10903446dcd7SPetr Machata 10913446dcd7SPetr Machata bridge_${context}_maxgroups_set "$locus" 0 10923446dcd7SPetr Machata check_err $? "Failed to set max to 0" 10933446dcd7SPetr Machata 10943446dcd7SPetr Machata log_test "$CFG: $context: $mode: mcast_vlan_snooping toggle" 10953446dcd7SPetr Machata} 10963446dcd7SPetr Machata 10973446dcd7SPetr Machatatest_toggle_vlan_snooping_temp() 10983446dcd7SPetr Machata{ 10993446dcd7SPetr Machata test_toggle_vlan_snooping temp 11003446dcd7SPetr Machata} 11013446dcd7SPetr Machata 11023446dcd7SPetr Machatatest_toggle_vlan_snooping_permanent() 11033446dcd7SPetr Machata{ 11043446dcd7SPetr Machata test_toggle_vlan_snooping permanent 11053446dcd7SPetr Machata} 11063446dcd7SPetr Machata 11073446dcd7SPetr Machata# ngroup test suites 11083446dcd7SPetr Machata 11093446dcd7SPetr Machatatest_8021d_ngroups_cfg4() 11103446dcd7SPetr Machata{ 11113446dcd7SPetr Machata test_8021d_ngroups_reporting_cfg4 11123446dcd7SPetr Machata} 11133446dcd7SPetr Machata 11143446dcd7SPetr Machatatest_8021d_ngroups_ctl4() 11153446dcd7SPetr Machata{ 11163446dcd7SPetr Machata test_8021d_ngroups_reporting_ctl4 11173446dcd7SPetr Machata} 11183446dcd7SPetr Machata 11193446dcd7SPetr Machatatest_8021d_ngroups_cfg6() 11203446dcd7SPetr Machata{ 11213446dcd7SPetr Machata test_8021d_ngroups_reporting_cfg6 11223446dcd7SPetr Machata} 11233446dcd7SPetr Machata 11243446dcd7SPetr Machatatest_8021d_ngroups_ctl6() 11253446dcd7SPetr Machata{ 11263446dcd7SPetr Machata test_8021d_ngroups_reporting_ctl6 11273446dcd7SPetr Machata} 11283446dcd7SPetr Machata 11293446dcd7SPetr Machatatest_8021q_ngroups_cfg4() 11303446dcd7SPetr Machata{ 11313446dcd7SPetr Machata test_8021q_ngroups_reporting_cfg4 11323446dcd7SPetr Machata} 11333446dcd7SPetr Machata 11343446dcd7SPetr Machatatest_8021q_ngroups_ctl4() 11353446dcd7SPetr Machata{ 11363446dcd7SPetr Machata test_8021q_ngroups_reporting_ctl4 11373446dcd7SPetr Machata} 11383446dcd7SPetr Machata 11393446dcd7SPetr Machatatest_8021q_ngroups_cfg6() 11403446dcd7SPetr Machata{ 11413446dcd7SPetr Machata test_8021q_ngroups_reporting_cfg6 11423446dcd7SPetr Machata} 11433446dcd7SPetr Machata 11443446dcd7SPetr Machatatest_8021q_ngroups_ctl6() 11453446dcd7SPetr Machata{ 11463446dcd7SPetr Machata test_8021q_ngroups_reporting_ctl6 11473446dcd7SPetr Machata} 11483446dcd7SPetr Machata 11493446dcd7SPetr Machatatest_8021qvs_ngroups_cfg4() 11503446dcd7SPetr Machata{ 11513446dcd7SPetr Machata test_8021qvs_ngroups_reporting_cfg4 11523446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_cfg4 11533446dcd7SPetr Machata} 11543446dcd7SPetr Machata 11553446dcd7SPetr Machatatest_8021qvs_ngroups_ctl4() 11563446dcd7SPetr Machata{ 11573446dcd7SPetr Machata test_8021qvs_ngroups_reporting_ctl4 11583446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_ctl4 11593446dcd7SPetr Machata} 11603446dcd7SPetr Machata 11613446dcd7SPetr Machatatest_8021qvs_ngroups_cfg6() 11623446dcd7SPetr Machata{ 11633446dcd7SPetr Machata test_8021qvs_ngroups_reporting_cfg6 11643446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_cfg6 11653446dcd7SPetr Machata} 11663446dcd7SPetr Machata 11673446dcd7SPetr Machatatest_8021qvs_ngroups_ctl6() 11683446dcd7SPetr Machata{ 11693446dcd7SPetr Machata test_8021qvs_ngroups_reporting_ctl6 11703446dcd7SPetr Machata test_8021qvs_ngroups_cross_vlan_ctl6 11713446dcd7SPetr Machata} 11723446dcd7SPetr Machata 11733446dcd7SPetr Machata# maxgroups test suites 11743446dcd7SPetr Machata 11753446dcd7SPetr Machatatest_8021d_maxgroups_cfg4() 11763446dcd7SPetr Machata{ 11773446dcd7SPetr Machata test_8021d_maxgroups_zero_cfg4 11783446dcd7SPetr Machata test_8021d_maxgroups_too_low_cfg4 11793446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_cfg4 11803446dcd7SPetr Machata} 11813446dcd7SPetr Machata 11823446dcd7SPetr Machatatest_8021d_maxgroups_ctl4() 11833446dcd7SPetr Machata{ 11843446dcd7SPetr Machata test_8021d_maxgroups_zero_ctl4 11853446dcd7SPetr Machata test_8021d_maxgroups_too_low_ctl4 11863446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_ctl4 11873446dcd7SPetr Machata} 11883446dcd7SPetr Machata 11893446dcd7SPetr Machatatest_8021d_maxgroups_cfg6() 11903446dcd7SPetr Machata{ 11913446dcd7SPetr Machata test_8021d_maxgroups_zero_cfg6 11923446dcd7SPetr Machata test_8021d_maxgroups_too_low_cfg6 11933446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_cfg6 11943446dcd7SPetr Machata} 11953446dcd7SPetr Machata 11963446dcd7SPetr Machatatest_8021d_maxgroups_ctl6() 11973446dcd7SPetr Machata{ 11983446dcd7SPetr Machata test_8021d_maxgroups_zero_ctl6 11993446dcd7SPetr Machata test_8021d_maxgroups_too_low_ctl6 12003446dcd7SPetr Machata test_8021d_maxgroups_too_many_entries_ctl6 12013446dcd7SPetr Machata} 12023446dcd7SPetr Machata 12033446dcd7SPetr Machatatest_8021q_maxgroups_cfg4() 12043446dcd7SPetr Machata{ 12053446dcd7SPetr Machata test_8021q_maxgroups_zero_cfg4 12063446dcd7SPetr Machata test_8021q_maxgroups_too_low_cfg4 12073446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_cfg4 12083446dcd7SPetr Machata} 12093446dcd7SPetr Machata 12103446dcd7SPetr Machatatest_8021q_maxgroups_ctl4() 12113446dcd7SPetr Machata{ 12123446dcd7SPetr Machata test_8021q_maxgroups_zero_ctl4 12133446dcd7SPetr Machata test_8021q_maxgroups_too_low_ctl4 12143446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_ctl4 12153446dcd7SPetr Machata} 12163446dcd7SPetr Machata 12173446dcd7SPetr Machatatest_8021q_maxgroups_cfg6() 12183446dcd7SPetr Machata{ 12193446dcd7SPetr Machata test_8021q_maxgroups_zero_cfg6 12203446dcd7SPetr Machata test_8021q_maxgroups_too_low_cfg6 12213446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_cfg6 12223446dcd7SPetr Machata} 12233446dcd7SPetr Machata 12243446dcd7SPetr Machatatest_8021q_maxgroups_ctl6() 12253446dcd7SPetr Machata{ 12263446dcd7SPetr Machata test_8021q_maxgroups_zero_ctl6 12273446dcd7SPetr Machata test_8021q_maxgroups_too_low_ctl6 12283446dcd7SPetr Machata test_8021q_maxgroups_too_many_entries_ctl6 12293446dcd7SPetr Machata} 12303446dcd7SPetr Machata 12313446dcd7SPetr Machatatest_8021qvs_maxgroups_cfg4() 12323446dcd7SPetr Machata{ 12333446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cfg4 12343446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_cfg4 12353446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_cfg4 12363446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_cfg4 12373446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_cfg4 12383446dcd7SPetr Machata} 12393446dcd7SPetr Machata 12403446dcd7SPetr Machatatest_8021qvs_maxgroups_ctl4() 12413446dcd7SPetr Machata{ 12423446dcd7SPetr Machata test_8021qvs_maxgroups_zero_ctl4 12433446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_ctl4 12443446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_ctl4 12453446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_ctl4 12463446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_ctl4 12473446dcd7SPetr Machata} 12483446dcd7SPetr Machata 12493446dcd7SPetr Machatatest_8021qvs_maxgroups_cfg6() 12503446dcd7SPetr Machata{ 12513446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cfg6 12523446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_cfg6 12533446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_cfg6 12543446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_cfg6 12553446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_cfg6 12563446dcd7SPetr Machata} 12573446dcd7SPetr Machata 12583446dcd7SPetr Machatatest_8021qvs_maxgroups_ctl6() 12593446dcd7SPetr Machata{ 12603446dcd7SPetr Machata test_8021qvs_maxgroups_zero_ctl6 12613446dcd7SPetr Machata test_8021qvs_maxgroups_zero_cross_vlan_ctl6 12623446dcd7SPetr Machata test_8021qvs_maxgroups_too_low_ctl6 12633446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_entries_ctl6 12643446dcd7SPetr Machata test_8021qvs_maxgroups_too_many_cross_vlan_ctl6 12653446dcd7SPetr Machata} 12663446dcd7SPetr Machata 12673446dcd7SPetr Machata# other test suites 12683446dcd7SPetr Machata 12693446dcd7SPetr Machatatest_8021qvs_toggle_vlan_snooping() 12703446dcd7SPetr Machata{ 12713446dcd7SPetr Machata test_toggle_vlan_snooping_temp 12723446dcd7SPetr Machata test_toggle_vlan_snooping_permanent 12733446dcd7SPetr Machata} 12743446dcd7SPetr Machata 12753446dcd7SPetr Machata# test groups 12763446dcd7SPetr Machata 12773446dcd7SPetr Machatatest_8021d() 12783446dcd7SPetr Machata{ 12793446dcd7SPetr Machata # Tests for vlan_filtering 0 mcast_vlan_snooping 0. 12803446dcd7SPetr Machata 12813446dcd7SPetr Machata switch_create_8021d 12823446dcd7SPetr Machata setup_wait 12833446dcd7SPetr Machata 12843446dcd7SPetr Machata test_8021d_ngroups_cfg4 12853446dcd7SPetr Machata test_8021d_ngroups_ctl4 12863446dcd7SPetr Machata test_8021d_ngroups_cfg6 12873446dcd7SPetr Machata test_8021d_ngroups_ctl6 12883446dcd7SPetr Machata test_8021d_maxgroups_cfg4 12893446dcd7SPetr Machata test_8021d_maxgroups_ctl4 12903446dcd7SPetr Machata test_8021d_maxgroups_cfg6 12913446dcd7SPetr Machata test_8021d_maxgroups_ctl6 12923446dcd7SPetr Machata 12933446dcd7SPetr Machata switch_destroy 12943446dcd7SPetr Machata} 12953446dcd7SPetr Machata 12963446dcd7SPetr Machatatest_8021q() 12973446dcd7SPetr Machata{ 12983446dcd7SPetr Machata # Tests for vlan_filtering 1 mcast_vlan_snooping 0. 12993446dcd7SPetr Machata 13003446dcd7SPetr Machata switch_create_8021q 13013446dcd7SPetr Machata setup_wait 13023446dcd7SPetr Machata 13033446dcd7SPetr Machata test_8021q_vlan_attributes 13043446dcd7SPetr Machata test_8021q_ngroups_cfg4 13053446dcd7SPetr Machata test_8021q_ngroups_ctl4 13063446dcd7SPetr Machata test_8021q_ngroups_cfg6 13073446dcd7SPetr Machata test_8021q_ngroups_ctl6 13083446dcd7SPetr Machata test_8021q_maxgroups_cfg4 13093446dcd7SPetr Machata test_8021q_maxgroups_ctl4 13103446dcd7SPetr Machata test_8021q_maxgroups_cfg6 13113446dcd7SPetr Machata test_8021q_maxgroups_ctl6 13123446dcd7SPetr Machata 13133446dcd7SPetr Machata switch_destroy 13143446dcd7SPetr Machata} 13153446dcd7SPetr Machata 13163446dcd7SPetr Machatatest_8021qvs() 13173446dcd7SPetr Machata{ 13183446dcd7SPetr Machata # Tests for vlan_filtering 1 mcast_vlan_snooping 1. 13193446dcd7SPetr Machata 13203446dcd7SPetr Machata switch_create_8021qvs 13213446dcd7SPetr Machata setup_wait 13223446dcd7SPetr Machata 13233446dcd7SPetr Machata test_8021qvs_vlan_attributes 13243446dcd7SPetr Machata test_8021qvs_ngroups_cfg4 13253446dcd7SPetr Machata test_8021qvs_ngroups_ctl4 13263446dcd7SPetr Machata test_8021qvs_ngroups_cfg6 13273446dcd7SPetr Machata test_8021qvs_ngroups_ctl6 13283446dcd7SPetr Machata test_8021qvs_maxgroups_cfg4 13293446dcd7SPetr Machata test_8021qvs_maxgroups_ctl4 13303446dcd7SPetr Machata test_8021qvs_maxgroups_cfg6 13313446dcd7SPetr Machata test_8021qvs_maxgroups_ctl6 13323446dcd7SPetr Machata test_8021qvs_toggle_vlan_snooping 13333446dcd7SPetr Machata 13343446dcd7SPetr Machata switch_destroy 13353446dcd7SPetr Machata} 13363446dcd7SPetr Machata 13376bdf3d97SIdo Schimmelif ! bridge link help 2>&1 | grep -q "mcast_max_groups"; then 13386bdf3d97SIdo Schimmel echo "SKIP: iproute2 too old, missing bridge \"mcast_max_groups\" support" 13396bdf3d97SIdo Schimmel exit $ksft_skip 13406bdf3d97SIdo Schimmelfi 13416bdf3d97SIdo Schimmel 13423446dcd7SPetr Machatatrap cleanup EXIT 13433446dcd7SPetr Machata 13443446dcd7SPetr Machatasetup_prepare 13453446dcd7SPetr Machatatests_run 13463446dcd7SPetr Machata 13473446dcd7SPetr Machataexit $EXIT_STATUS 1348