mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
selftests: test_vxlan_fdb_changelink: Add a test for MC remote change
Changes to MC remote need to be reflected in actual group memberships. Add a test to verify that it is the case. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
24adf47ea9
commit
eae1e92a1d
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
ALL_TESTS="
|
||||
test_set_remote
|
||||
test_change_mc_remote
|
||||
"
|
||||
source lib.sh
|
||||
|
||||
|
|
@ -31,6 +32,81 @@ test_set_remote()
|
|||
log_test 'FDB default-remote handling across "ip link set"'
|
||||
}
|
||||
|
||||
fmt_remote()
|
||||
{
|
||||
local addr=$1; shift
|
||||
|
||||
if [[ $addr == 224.* ]]; then
|
||||
echo "group $addr"
|
||||
else
|
||||
echo "remote $addr"
|
||||
fi
|
||||
}
|
||||
|
||||
change_remote()
|
||||
{
|
||||
local remote=$1; shift
|
||||
|
||||
ip link set dev vx type vxlan $(fmt_remote $remote) dev v1
|
||||
}
|
||||
|
||||
check_membership()
|
||||
{
|
||||
local check_vec=("$@")
|
||||
|
||||
local memberships
|
||||
memberships=$(
|
||||
netstat -n --groups |
|
||||
sed -n '/^v1\b/p' |
|
||||
grep -o '[^ ]*$'
|
||||
)
|
||||
check_err $? "Couldn't obtain group memberships"
|
||||
|
||||
local item
|
||||
for item in "${check_vec[@]}"; do
|
||||
eval "local $item"
|
||||
echo "$memberships" | grep -q "\b$group\b"
|
||||
check_err_fail $fail $? "$group is_ex reported in IGMP query response"
|
||||
done
|
||||
}
|
||||
|
||||
test_change_mc_remote()
|
||||
{
|
||||
check_command netstat || return
|
||||
|
||||
ip_link_add v1 up type veth peer name v2
|
||||
ip_link_set_up v2
|
||||
|
||||
RET=0
|
||||
|
||||
ip_link_add vx up type vxlan dstport 4789 \
|
||||
local 192.0.2.1 $(fmt_remote 224.1.1.1) dev v1 vni 1000
|
||||
|
||||
check_membership "group=224.1.1.1 fail=0" \
|
||||
"group=224.1.1.2 fail=1" \
|
||||
"group=224.1.1.3 fail=1"
|
||||
|
||||
log_test "MC group report after VXLAN creation"
|
||||
|
||||
RET=0
|
||||
|
||||
change_remote 224.1.1.2
|
||||
check_membership "group=224.1.1.1 fail=1" \
|
||||
"group=224.1.1.2 fail=0" \
|
||||
"group=224.1.1.3 fail=1"
|
||||
|
||||
log_test "MC group report after changing VXLAN remote MC->MC"
|
||||
|
||||
RET=0
|
||||
|
||||
change_remote 192.0.2.2
|
||||
check_membership "group=224.1.1.1 fail=1" \
|
||||
"group=224.1.1.2 fail=1" \
|
||||
"group=224.1.1.3 fail=1"
|
||||
|
||||
log_test "MC group report after changing VXLAN remote MC->UC"
|
||||
}
|
||||
|
||||
trap defer_scopes_cleanup EXIT
|
||||
|
||||
tests_run
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user