File Index
Files and directories
Sign in
FILE

test_vxlan_fdb_changelink.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/test_vxlan_fdb_changelink.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4ALL_TESTS="
  5	test_set_remote
  6	test_change_mc_remote
  7"
  8source lib.sh
  9
 10check_remotes()
 11{
 12	local what=$1; shift
 13	local N=$(bridge fdb sh dev vx | grep 00:00:00:00:00:00 | wc -l)
 14
 15	((N == 2))
 16	check_err $? "expected 2 remotes after $what, got $N"
 17}
 18
 19# Check FDB default-remote handling across "ip link set".
 20test_set_remote()
 21{
 22	RET=0
 23
 24	adf_ip_link_add vx up type vxlan id 2000 dstport 4789
 25	bridge fdb ap dev vx 00:00:00:00:00:00 dst 192.0.2.20 self permanent
 26	bridge fdb ap dev vx 00:00:00:00:00:00 dst 192.0.2.30 self permanent
 27	check_remotes "fdb append"
 28
 29	ip link set dev vx type vxlan remote 192.0.2.30
 30	check_remotes "link set"
 31
 32	log_test 'FDB default-remote handling across "ip link set"'
 33}
 34
 35fmt_remote()
 36{
 37	local addr=$1; shift
 38
 39	if [[ $addr == 224.* ]]; then
 40		echo "group $addr"
 41	else
 42		echo "remote $addr"
 43	fi
 44}
 45
 46change_remote()
 47{
 48	local remote=$1; shift
 49
 50	ip link set dev vx type vxlan $(fmt_remote $remote) dev v1
 51}
 52
 53check_membership()
 54{
 55	local check_vec=("$@")
 56
 57	local memberships
 58	memberships=$(
 59	    netstat -n --groups |
 60		sed -n '/^v1\b/p' |
 61		grep -o '[^ ]*$'
 62	)
 63	check_err $? "Couldn't obtain group memberships"
 64
 65	local item
 66	for item in "${check_vec[@]}"; do
 67		eval "local $item"
 68		echo "$memberships" | grep -q "\b$group\b"
 69		check_err_fail $fail $? "$group is_ex reported in IGMP query response"
 70	done
 71}
 72
 73test_change_mc_remote()
 74{
 75	check_command netstat || return
 76
 77	adf_ip_link_add v1 up type veth peer name v2
 78	adf_ip_link_set_up v2
 79
 80	RET=0
 81
 82	adf_ip_link_add vx up type vxlan dstport 4789 \
 83		local 192.0.2.1 $(fmt_remote 224.1.1.1) dev v1 vni 1000
 84
 85	check_membership "group=224.1.1.1 fail=0" \
 86			 "group=224.1.1.2 fail=1" \
 87			 "group=224.1.1.3 fail=1"
 88
 89	log_test "MC group report after VXLAN creation"
 90
 91	RET=0
 92
 93	change_remote 224.1.1.2
 94	check_membership "group=224.1.1.1 fail=1" \
 95			 "group=224.1.1.2 fail=0" \
 96			 "group=224.1.1.3 fail=1"
 97
 98	log_test "MC group report after changing VXLAN remote MC->MC"
 99
100	RET=0
101
102	change_remote 192.0.2.2
103	check_membership "group=224.1.1.1 fail=1" \
104			 "group=224.1.1.2 fail=1" \
105			 "group=224.1.1.3 fail=1"
106
107	log_test "MC group report after changing VXLAN remote MC->UC"
108}
109
110trap defer_scopes_cleanup EXIT
111
112tests_run
113
114exit $EXIT_STATUS
~/ Read-only file preview.