selftests: net: bridge: igmp: add IGMPv3 entries' state helpers
Add helpers which will be used in subsequent tests, they are: - check_sg_entries: check for proper source list and S,G entry existence - check_sg_fwding: check for proper traffic forwarding/blocking - check_sg_state: check for proper blocked/forwarding entry state Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
f0e260db4c
commit
68d3163a4b
@ -143,6 +143,73 @@ v2reportleave_test()
|
||||
log_test "IGMPv2 leave $TEST_GROUP"
|
||||
}
|
||||
|
||||
check_sg_entries()
|
||||
{
|
||||
local report=$1; shift
|
||||
local slist=("$@")
|
||||
local sarg=""
|
||||
|
||||
for src in "${slist[@]}"; do
|
||||
sarg="${sarg} and .source_list[].address == \"$src\""
|
||||
done
|
||||
bridge -j -d -s mdb show dev br0 \
|
||||
| jq -e ".[].mdb[] | \
|
||||
select(.grp == \"$TEST_GROUP\" and .source_list != null $sarg)" &>/dev/null
|
||||
check_err $? "Wrong *,G entry source list after $report report"
|
||||
|
||||
for sgent in "${slist[@]}"; do
|
||||
bridge -j -d -s mdb show dev br0 \
|
||||
| jq -e ".[].mdb[] | \
|
||||
select(.grp == \"$TEST_GROUP\" and .src == \"$sgent\")" &>/dev/null
|
||||
check_err $? "Missing S,G entry ($sgent, $TEST_GROUP)"
|
||||
done
|
||||
}
|
||||
|
||||
check_sg_fwding()
|
||||
{
|
||||
local should_fwd=$1; shift
|
||||
local sources=("$@")
|
||||
|
||||
for src in "${sources[@]}"; do
|
||||
local retval=0
|
||||
|
||||
mcast_packet_test $TEST_GROUP_MAC $src $TEST_GROUP $h2 $h1
|
||||
retval=$?
|
||||
if [ $should_fwd -eq 1 ]; then
|
||||
check_fail $retval "Didn't forward traffic from S,G ($src, $TEST_GROUP)"
|
||||
else
|
||||
check_err $retval "Forwarded traffic for blocked S,G ($src, $TEST_GROUP)"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
check_sg_state()
|
||||
{
|
||||
local is_blocked=$1; shift
|
||||
local sources=("$@")
|
||||
local should_fail=1
|
||||
|
||||
if [ $is_blocked -eq 1 ]; then
|
||||
should_fail=0
|
||||
fi
|
||||
|
||||
for src in "${sources[@]}"; do
|
||||
bridge -j -d -s mdb show dev br0 \
|
||||
| jq -e ".[].mdb[] | \
|
||||
select(.grp == \"$TEST_GROUP\" and .source_list != null) |
|
||||
.source_list[] |
|
||||
select(.address == \"$src\") |
|
||||
select(.timer == \"0.00\")" &>/dev/null
|
||||
check_err_fail $should_fail $? "Entry $src has zero timer"
|
||||
|
||||
bridge -j -d -s mdb show dev br0 \
|
||||
| jq -e ".[].mdb[] | \
|
||||
select(.grp == \"$TEST_GROUP\" and .src == \"$src\" and \
|
||||
.flags[] == \"blocked\")" &>/dev/null
|
||||
check_err_fail $should_fail $? "Entry $src has blocked flag"
|
||||
done
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
setup_prepare
|
||||
|
Loading…
x
Reference in New Issue
Block a user