Merge branch 'selftests-mark-auto-deferring-functions-clearly'

Petr Machata says:

====================
selftests: Mark auto-deferring functions clearly

selftests/net/lib.sh contains a suite of iproute2 wrappers that
automatically schedule the corresponding cleanup through defer. The fact
they do so is however not immediately obvious, one needs to know which
functions are handling the deferral behind the scenes, and which expect the
caller to handle cleanups themselves.

A convention for these auto-deferring functions would help both writing and
patch review. This patchset does so by marking these functions with an adf_
prefix. We already have a few such functions: forwarding/lib.sh has
adf_mcd_start() and a few selftests add private helpers that conform to
this convention.

Patches #1 to #8 gradually convert individual functions, one per patch.

Patch #9 renames an auto-deferring private helpers named dfr_* to adf_*.
The plan is not to retro-rename all private helpers, but I happened to know
about this one.

Patches #10 to #12 introduce several autodefer helpers for commonly used
forwarding/lib.sh functions, and opportunistically convert straightforward
instances of 'action; defer counteraction' to the new helpers.

Patch #13 adds some README verbiage to pitch defer and the adf_*
convention.
====================

Link: https://patch.msgid.link/cover.1758821127.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski 2025-09-26 17:54:36 -07:00
commit 1493c18fe8
18 changed files with 225 additions and 237 deletions

View File

@ -44,8 +44,7 @@ source $lib_dir/devlink_lib.sh
h1_create()
{
simple_if_init $h1 192.0.2.1/24
defer simple_if_fini $h1 192.0.2.1/24
adf_simple_if_init $h1 192.0.2.1/24
mtu_set $h1 10000
defer mtu_restore $h1
@ -56,8 +55,7 @@ h1_create()
h2_create()
{
simple_if_init $h2 198.51.100.1/24
defer simple_if_fini $h2 198.51.100.1/24
adf_simple_if_init $h2 198.51.100.1/24
mtu_set $h2 10000
defer mtu_restore $h2
@ -106,8 +104,7 @@ setup_prepare()
# Reload to ensure devlink-trap settings are back to default.
defer devlink_reload
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -57,8 +57,7 @@ source qos_lib.sh
h1_create()
{
simple_if_init $h1
defer simple_if_fini $h1
adf_simple_if_init $h1
mtu_set $h1 10000
defer mtu_restore $h1
@ -70,8 +69,7 @@ h1_create()
h2_create()
{
simple_if_init $h2
defer simple_if_fini $h2
adf_simple_if_init $h2
mtu_set $h2 10000
defer mtu_restore $h2
@ -83,8 +81,7 @@ h2_create()
h3_create()
{
simple_if_init $h3
defer simple_if_fini $h3
adf_simple_if_init $h3
mtu_set $h3 10000
defer mtu_restore $h3
@ -225,8 +222,7 @@ setup_prepare()
h3mac=$(mac_get $h3)
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -68,8 +68,7 @@ mlxsw_only_on_spectrum 2+ || exit
h1_create()
{
simple_if_init $h1
defer simple_if_fini $h1
adf_simple_if_init $h1
vlan_create $h1 111 v$h1 192.0.2.33/28
defer vlan_destroy $h1 111
@ -78,8 +77,7 @@ h1_create()
h2_create()
{
simple_if_init $h2
defer simple_if_fini $h2
adf_simple_if_init $h2
vlan_create $h2 111 v$h2 192.0.2.34/28
defer vlan_destroy $h2 111
@ -178,8 +176,7 @@ setup_prepare()
h2mac=$(mac_get $h2)
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -72,8 +72,7 @@ source qos_lib.sh
h1_create()
{
simple_if_init $h1 192.0.2.65/28
defer simple_if_fini $h1 192.0.2.65/28
adf_simple_if_init $h1 192.0.2.65/28
mtu_set $h1 10000
defer mtu_restore $h1
@ -81,8 +80,7 @@ h1_create()
h2_create()
{
simple_if_init $h2
defer simple_if_fini $h2
adf_simple_if_init $h2
mtu_set $h2 10000
defer mtu_restore $h2
@ -94,8 +92,7 @@ h2_create()
h3_create()
{
simple_if_init $h3 192.0.2.66/28
defer simple_if_fini $h3 192.0.2.66/28
adf_simple_if_init $h3 192.0.2.66/28
mtu_set $h3 10000
defer mtu_restore $h3
@ -196,8 +193,7 @@ setup_prepare()
h3mac=$(mac_get $h3)
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -100,8 +100,7 @@ host_create()
local dev=$1; shift
local host=$1; shift
simple_if_init $dev
defer simple_if_fini $dev
adf_simple_if_init $dev
mtu_set $dev 10000
defer mtu_restore $dev
@ -250,8 +249,7 @@ setup_prepare()
h3_mac=$(mac_get $h3)
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -40,16 +40,16 @@ do_test_dup()
test_dup_bridge()
{
ip_link_add br up type bridge vlan_filtering 1
adf_ip_link_add br up type bridge vlan_filtering 1
do_test_dup add "bridge" dev br self
do_test_dup del "bridge" dev br self
}
test_dup_vxlan_self()
{
ip_link_add br up type bridge vlan_filtering 1
ip_link_add vx up type vxlan id 2000 dstport 4789
ip_link_set_master vx br
adf_ip_link_add br up type bridge vlan_filtering 1
adf_ip_link_add vx up type vxlan id 2000 dstport 4789
adf_ip_link_set_master vx br
do_test_dup add "vxlan" dev vx self dst 192.0.2.1
do_test_dup del "vxlan" dev vx self dst 192.0.2.1
@ -57,9 +57,9 @@ test_dup_vxlan_self()
test_dup_vxlan_master()
{
ip_link_add br up type bridge vlan_filtering 1
ip_link_add vx up type vxlan id 2000 dstport 4789
ip_link_set_master vx br
adf_ip_link_add br up type bridge vlan_filtering 1
adf_ip_link_add vx up type vxlan id 2000 dstport 4789
adf_ip_link_set_master vx br
do_test_dup add "vxlan master" dev vx master
do_test_dup del "vxlan master" dev vx master
@ -67,8 +67,8 @@ test_dup_vxlan_master()
test_dup_macvlan_self()
{
ip_link_add dd up type dummy
ip_link_add mv up link dd type macvlan mode passthru
adf_ip_link_add dd up type dummy
adf_ip_link_add mv up link dd type macvlan mode passthru
do_test_dup add "macvlan self" dev mv self
do_test_dup del "macvlan self" dev mv self
@ -76,10 +76,10 @@ test_dup_macvlan_self()
test_dup_macvlan_master()
{
ip_link_add br up type bridge vlan_filtering 1
ip_link_add dd up type dummy
ip_link_add mv up link dd type macvlan mode passthru
ip_link_set_master mv br
adf_ip_link_add br up type bridge vlan_filtering 1
adf_ip_link_add dd up type dummy
adf_ip_link_add mv up link dd type macvlan mode passthru
adf_ip_link_set_master mv br
do_test_dup add "macvlan master" dev mv self
do_test_dup del "macvlan master" dev mv self

View File

@ -57,6 +57,21 @@ o Code shall be checked using ShellCheck [1] prior to submission.
1. https://www.shellcheck.net/
Cleanups
--------
o lib.sh brings in defer.sh (by way of ../lib.sh) by default. Consider
making use of the defer primitive to schedule automatic cleanups. This
makes it harder to forget to remove a temporary netdevice, kill a running
process or perform other cleanup when the test script is interrupted.
o When adding a helper that dirties the environment, but schedules all
necessary cleanups through defer, consider prefixing it adf_ for
consistency with lib.sh and ../lib.sh helpers. This serves as an
immediately visible bit of documentation about the helper API.
o Definitely do the above for any new code in lib.sh, if practical.
Customization
=============

View File

@ -26,27 +26,25 @@ source lib.sh
h1_create()
{
simple_if_init "$h1" 192.0.2.1/28
defer simple_if_fini "$h1" 192.0.2.1/28
adf_simple_if_init "$h1" 192.0.2.1/28
}
h2_create()
{
simple_if_init "$h2" 192.0.2.2/28
defer simple_if_fini "$h2" 192.0.2.2/28
adf_simple_if_init "$h2" 192.0.2.2/28
}
switch_create()
{
ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0 \
adf_ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0 \
ageing_time "$LOW_AGEING_TIME"
ip_link_set_up br1
adf_ip_link_set_up br1
ip_link_set_master "$swp1" br1
ip_link_set_up "$swp1"
adf_ip_link_set_master "$swp1" br1
adf_ip_link_set_up "$swp1"
ip_link_set_master "$swp2" br1
ip_link_set_up "$swp2"
adf_ip_link_set_master "$swp2" br1
adf_ip_link_set_up "$swp2"
}
setup_prepare()
@ -57,8 +55,7 @@ setup_prepare()
swp2=${NETIFS[p3]}
h2=${NETIFS[p4]}
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -44,20 +44,16 @@ host_create()
local ipv4=$1; shift
local ipv6=$1; shift
simple_if_init "$h" "$ipv4" "$ipv6"
defer simple_if_fini "$h" "$ipv4" "$ipv6"
ip_route_add vrf "v$h" 192.0.2.16/28 nexthop via 192.0.2.3
ip_route_add vrf "v$h" 2001:db8:2::/64 nexthop via 2001:db8:1::3
adf_simple_if_init "$h" "$ipv4" "$ipv6"
adf_ip_route_add vrf "v$h" 192.0.2.16/28 nexthop via 192.0.2.3
adf_ip_route_add vrf "v$h" 2001:db8:2::/64 nexthop via 2001:db8:1::3
}
h3_create()
{
simple_if_init "$h3" 192.0.2.18/28 2001:db8:2::2/64
defer simple_if_fini "$h3" 192.0.2.18/28 2001:db8:2::2/64
ip_route_add vrf "v$h3" 192.0.2.0/28 nexthop via 192.0.2.17
ip_route_add vrf "v$h3" 2001:db8:1::/64 nexthop via 2001:db8:2::1
adf_simple_if_init "$h3" 192.0.2.18/28 2001:db8:2::2/64
adf_ip_route_add vrf "v$h3" 192.0.2.0/28 nexthop via 192.0.2.17
adf_ip_route_add vrf "v$h3" 2001:db8:1::/64 nexthop via 2001:db8:2::1
tc qdisc add dev "$h3" clsact
defer tc qdisc del dev "$h3" clsact
@ -78,13 +74,13 @@ h3_create()
switch_create()
{
ip_link_set_up "$swp1"
adf_ip_link_set_up "$swp1"
ip_link_set_up "$swp2"
adf_ip_link_set_up "$swp2"
ip_addr_add "$swp3" 192.0.2.17/28
ip_addr_add "$swp3" 2001:db8:2::1/64
ip_link_set_up "$swp3"
adf_ip_addr_add "$swp3" 192.0.2.17/28
adf_ip_addr_add "$swp3" 2001:db8:2::1/64
adf_ip_link_set_up "$swp3"
}
setup_prepare()
@ -98,11 +94,8 @@ setup_prepare()
swp3=${NETIFS[p5]}
h3=${NETIFS[p6]}
vrf_prepare
defer vrf_cleanup
forwarding_enable
defer forwarding_restore
adf_vrf_prepare
adf_forwarding_enable
host_create "$h1" 192.0.2.1/28 2001:db8:1::1/64
host_create "$h2" 192.0.2.2/28 2001:db8:1::2/64
@ -115,18 +108,18 @@ adf_bridge_configure()
{
local dev
ip_addr_add br 192.0.2.3/28
ip_addr_add br 2001:db8:1::3/64
adf_ip_addr_add br 192.0.2.3/28
adf_ip_addr_add br 2001:db8:1::3/64
bridge_vlan_add dev br vid 1 pvid untagged self
bridge_vlan_add dev br vid 2 self
bridge_vlan_add dev br vid 3 self
adf_bridge_vlan_add dev br vid 1 pvid untagged self
adf_bridge_vlan_add dev br vid 2 self
adf_bridge_vlan_add dev br vid 3 self
for dev in "$swp1" "$swp2"; do
ip_link_set_master "$dev" br
bridge_vlan_add dev "$dev" vid 1 pvid untagged
bridge_vlan_add dev "$dev" vid 2
bridge_vlan_add dev "$dev" vid 3
adf_ip_link_set_master "$dev" br
adf_bridge_vlan_add dev "$dev" vid 1 pvid untagged
adf_bridge_vlan_add dev "$dev" vid 2
adf_bridge_vlan_add dev "$dev" vid 3
done
}
@ -134,16 +127,16 @@ adf_bridge_create()
{
local mac
ip_link_add br up type bridge vlan_default_pvid 0 "$@"
adf_ip_link_add br up type bridge vlan_default_pvid 0 "$@"
mac=$(mac_get br)
adf_bridge_configure
ip_link_set_addr br "$mac"
adf_ip_link_set_addr br "$mac"
}
check_fdb_local_vlan_0_support()
{
if ip_link_add XXbr up type bridge vlan_filtering 1 fdb_local_vlan_0 1 \
&>/dev/null; then
if adf_ip_link_add XXbr up type bridge vlan_filtering 1 \
fdb_local_vlan_0 1 &>/dev/null; then
return 0
fi
@ -296,7 +289,7 @@ change_mac()
cur_mac=$(mac_get "$dev")
log_info "Change $dev MAC $cur_mac -> $mac"
ip_link_set_addr "$dev" "$mac"
adf_ip_link_set_addr "$dev" "$mac"
defer log_info "Change $dev MAC back"
}
@ -375,8 +368,8 @@ test_q_sharing()
adf_addr_set_bridge_create()
{
ip_link_add br up type bridge vlan_filtering 0
ip_link_set_addr br "$(mac_get br)"
adf_ip_link_add br up type bridge vlan_filtering 0
adf_ip_link_set_addr br "$(mac_get br)"
adf_bridge_configure
}

View File

@ -599,6 +599,12 @@ vrf_cleanup()
ip -4 rule del pref 32765
}
adf_vrf_prepare()
{
vrf_prepare
defer vrf_cleanup
}
__last_tb_id=0
declare -A __TB_IDS
@ -711,6 +717,12 @@ simple_if_fini()
vrf_destroy $vrf_name
}
adf_simple_if_init()
{
simple_if_init "$@"
defer simple_if_fini "$@"
}
tunnel_create()
{
local name=$1; shift
@ -1011,6 +1023,12 @@ forwarding_restore()
sysctl_restore net.ipv4.conf.all.forwarding
}
adf_forwarding_enable()
{
forwarding_enable
defer forwarding_restore
}
declare -A MTU_ORIG
mtu_set()
{

View File

@ -165,8 +165,7 @@ h1_create()
{
local i;
simple_if_init $h1
defer simple_if_fini $h1
adf_simple_if_init $h1
mtu_set $h1 9900
defer mtu_restore $h1
@ -182,8 +181,7 @@ h2_create()
{
local i
simple_if_init $h2
defer simple_if_fini $h2
adf_simple_if_init $h2
mtu_set $h2 9900
defer mtu_restore $h2
@ -251,8 +249,7 @@ setup_prepare()
put=$swp2
hut=$h2
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -52,8 +52,7 @@ PKTSZ=1400
h1_create()
{
simple_if_init $h1 192.0.2.1/28
defer simple_if_fini $h1 192.0.2.1/28
adf_simple_if_init $h1 192.0.2.1/28
mtu_set $h1 10000
defer mtu_restore $h1
@ -65,8 +64,7 @@ h1_create()
h2_create()
{
simple_if_init $h2 192.0.2.2/28
defer simple_if_fini $h2 192.0.2.2/28
adf_simple_if_init $h2 192.0.2.2/28
mtu_set $h2 10000
defer mtu_restore $h2
@ -74,8 +72,7 @@ h2_create()
h3_create()
{
simple_if_init $h3 192.0.2.3/28
defer simple_if_fini $h3 192.0.2.3/28
adf_simple_if_init $h3 192.0.2.3/28
mtu_set $h3 10000
defer mtu_restore $h3
@ -125,8 +122,7 @@ setup_prepare()
h3_mac=$(mac_get $h3)
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -59,8 +59,7 @@ host_create()
local dev=$1; shift
local host=$1; shift
simple_if_init $dev
defer simple_if_fini $dev
adf_simple_if_init $dev
mtu_set $dev 10000
defer mtu_restore $dev
@ -149,8 +148,7 @@ setup_prepare()
h2_mac=$(mac_get $h2)
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
h1_create
h2_create

View File

@ -119,16 +119,15 @@ source lib.sh
h1_create()
{
simple_if_init "$h1"
defer simple_if_fini "$h1"
adf_simple_if_init "$h1"
ip_link_add "$h1.10" master "v$h1" link "$h1" type vlan id 10
ip_link_set_up "$h1.10"
ip_addr_add "$h1.10" 192.0.2.1/28
adf_ip_link_add "$h1.10" master "v$h1" link "$h1" type vlan id 10
adf_ip_link_set_up "$h1.10"
adf_ip_addr_add "$h1.10" 192.0.2.1/28
ip_link_add "$h1.20" master "v$h1" link "$h1" type vlan id 20
ip_link_set_up "$h1.20"
ip_addr_add "$h1.20" 2001:db8:1::1/64
adf_ip_link_add "$h1.20" master "v$h1" link "$h1" type vlan id 20
adf_ip_link_set_up "$h1.20"
adf_ip_addr_add "$h1.20" 2001:db8:1::1/64
}
install_capture()
@ -152,51 +151,51 @@ install_capture()
h2_create()
{
# $h2
ip_link_set_up "$h2"
adf_ip_link_set_up "$h2"
# H2
vrf_create "v$h2"
defer vrf_destroy "v$h2"
ip_link_set_up "v$h2"
adf_ip_link_set_up "v$h2"
# br2
ip_link_add br2 type bridge vlan_filtering 0 mcast_snooping 0
ip_link_set_master br2 "v$h2"
ip_link_set_up br2
adf_ip_link_add br2 type bridge vlan_filtering 0 mcast_snooping 0
adf_ip_link_set_master br2 "v$h2"
adf_ip_link_set_up br2
# $h2
ip_link_set_master "$h2" br2
adf_ip_link_set_master "$h2" br2
install_capture "$h2"
# v1$h2
ip_link_set_up "v1$h2"
ip_link_set_master "v1$h2" br2
adf_ip_link_set_up "v1$h2"
adf_ip_link_set_master "v1$h2" br2
}
h3_create()
{
# $h3
ip_link_set_up "$h3"
adf_ip_link_set_up "$h3"
# H3
vrf_create "v$h3"
defer vrf_destroy "v$h3"
ip_link_set_up "v$h3"
adf_ip_link_set_up "v$h3"
# br3
ip_link_add br3 type bridge vlan_filtering 0 mcast_snooping 0
ip_link_set_master br3 "v$h3"
ip_link_set_up br3
adf_ip_link_add br3 type bridge vlan_filtering 0 mcast_snooping 0
adf_ip_link_set_master br3 "v$h3"
adf_ip_link_set_up br3
# $h3
ip_link_set_master "$h3" br3
adf_ip_link_set_master "$h3" br3
install_capture "$h3"
# v1$h3
ip_link_set_up "v1$h3"
ip_link_set_master "v1$h3" br3
adf_ip_link_set_up "v1$h3"
adf_ip_link_set_master "v1$h3" br3
}
switch_create()
@ -205,35 +204,35 @@ switch_create()
# br1
swp1_mac=$(mac_get "$swp1")
ip_link_add br1 type bridge vlan_filtering 1 \
adf_ip_link_add br1 type bridge vlan_filtering 1 \
vlan_default_pvid 0 mcast_snooping 0
ip_link_set_addr br1 "$swp1_mac"
ip_link_set_up br1
adf_ip_link_set_addr br1 "$swp1_mac"
adf_ip_link_set_up br1
# A dummy to force the IPv6 OIF=0 test to install a suitable MC route on
# $IPMR to be deterministic. Also used for the IPv6 RX!=TX ping test.
ip_link_add "X$IPMR" up type dummy
adf_ip_link_add "X$IPMR" up type dummy
# IPMR
ip_link_add "$IPMR" up type dummy
ip_addr_add "$IPMR" 192.0.2.100/28
ip_addr_add "$IPMR" 2001:db8:4::1/64
adf_ip_link_add "$IPMR" up type dummy
adf_ip_addr_add "$IPMR" 192.0.2.100/28
adf_ip_addr_add "$IPMR" 2001:db8:4::1/64
# $swp1
ip_link_set_up "$swp1"
ip_link_set_master "$swp1" br1
bridge_vlan_add vid 10 dev "$swp1"
bridge_vlan_add vid 20 dev "$swp1"
adf_ip_link_set_up "$swp1"
adf_ip_link_set_master "$swp1" br1
adf_bridge_vlan_add vid 10 dev "$swp1"
adf_bridge_vlan_add vid 20 dev "$swp1"
# $swp2
ip_link_set_up "$swp2"
ip_addr_add "$swp2" 192.0.2.33/28
ip_addr_add "$swp2" 2001:db8:2::1/64
adf_ip_link_set_up "$swp2"
adf_ip_addr_add "$swp2" 192.0.2.33/28
adf_ip_addr_add "$swp2" 2001:db8:2::1/64
# $swp3
ip_link_set_up "$swp3"
ip_addr_add "$swp3" 192.0.2.65/28
ip_addr_add "$swp3" 2001:db8:3::1/64
adf_ip_link_set_up "$swp3"
adf_ip_addr_add "$swp3" 192.0.2.65/28
adf_ip_addr_add "$swp3" 2001:db8:3::1/64
}
vx_create()
@ -241,11 +240,11 @@ vx_create()
local name=$1; shift
local vid=$1; shift
ip_link_add "$name" up type vxlan dstport "$VXPORT" \
adf_ip_link_add "$name" up type vxlan dstport "$VXPORT" \
nolearning noudpcsum tos inherit ttl 16 \
"$@"
ip_link_set_master "$name" br1
bridge_vlan_add vid "$vid" dev "$name" pvid untagged
adf_ip_link_set_master "$name" br1
adf_bridge_vlan_add vid "$vid" dev "$name" pvid untagged
}
export -f vx_create
@ -290,39 +289,38 @@ ns_init_common()
local ipv6_host=$1; shift
# v2$h2 / v2$h3
ip_link_set_up "$if_in"
ip_addr_add "$if_in" "$ipv4_in"
ip_addr_add "$if_in" "$ipv6_in"
adf_ip_link_set_up "$if_in"
adf_ip_addr_add "$if_in" "$ipv4_in"
adf_ip_addr_add "$if_in" "$ipv6_in"
# br1
ip_link_add br1 type bridge vlan_filtering 1 \
adf_ip_link_add br1 type bridge vlan_filtering 1 \
vlan_default_pvid 0 mcast_snooping 0
ip_link_set_up br1
adf_ip_link_set_up br1
# vx10, vx20
vx10_create local "${ipv4_in%/*}" group "$GROUP4" dev "$if_in"
vx20_create local "${ipv6_in%/*}" group "$GROUP6" dev "$if_in"
# w1
ip_link_add w1 type veth peer name w2
ip_link_set_master w1 br1
ip_link_set_up w1
bridge_vlan_add vid 10 dev w1
bridge_vlan_add vid 20 dev w1
adf_ip_link_add w1 type veth peer name w2
adf_ip_link_set_master w1 br1
adf_ip_link_set_up w1
adf_bridge_vlan_add vid 10 dev w1
adf_bridge_vlan_add vid 20 dev w1
# w2
simple_if_init w2
defer simple_if_fini w2
adf_simple_if_init w2
# w2.10
ip_link_add w2.10 master vw2 link w2 type vlan id 10
ip_link_set_up w2.10
ip_addr_add w2.10 "$ipv4_host"
adf_ip_link_add w2.10 master vw2 link w2 type vlan id 10
adf_ip_link_set_up w2.10
adf_ip_addr_add w2.10 "$ipv4_host"
# w2.20
ip_link_add w2.20 master vw2 link w2 type vlan id 20
ip_link_set_up w2.20
ip_addr_add w2.20 "$ipv6_host"
adf_ip_link_add w2.20 master vw2 link w2 type vlan id 20
adf_ip_link_set_up w2.20
adf_ip_addr_add w2.20 "$ipv6_host"
}
export -f ns_init_common
@ -371,14 +369,11 @@ setup_prepare()
swp3=${NETIFS[p5]}
h3=${NETIFS[p6]}
vrf_prepare
defer vrf_cleanup
adf_vrf_prepare
adf_forwarding_enable
forwarding_enable
defer forwarding_restore
ip_link_add "v1$h2" type veth peer name "v2$h2"
ip_link_add "v1$h3" type veth peer name "v2$h3"
adf_ip_link_add "v1$h2" type veth peer name "v2$h2"
adf_ip_link_add "v1$h3" type veth peer name "v2$h3"
h1_create
h2_create
@ -720,7 +715,7 @@ ipv4_mcroute_fdb_oif0_sep()
{
adf_install_sg_sep
ip_addr_add lo 192.0.2.120/28
adf_ip_addr_add lo 192.0.2.120/28
vx10_create_wait local 192.0.2.120 group "$GROUP4" dev "$IPMR" mcroute
bridge fdb del dev vx10 00:00:00:00:00:00
bridge fdb add dev vx10 00:00:00:00:00:00 self static dst "$GROUP4"
@ -731,7 +726,7 @@ ipv4_mcroute_fdb_oif0_sep_rx()
{
adf_install_sg_sep_rx lo
ip_addr_add lo 192.0.2.120/28
adf_ip_addr_add lo 192.0.2.120/28
vx10_create_wait local 192.0.2.120 group "$GROUP4" dev "$IPMR" mcroute
bridge fdb del dev vx10 00:00:00:00:00:00
bridge fdb add dev vx10 00:00:00:00:00:00 self static dst "$GROUP4"
@ -742,7 +737,7 @@ ipv4_mcroute_fdb_sep_rx()
{
adf_install_sg_sep_rx lo
ip_addr_add lo 192.0.2.120/28
adf_ip_addr_add lo 192.0.2.120/28
vx10_create_wait local 192.0.2.120 group "$GROUP4" dev "$IPMR" mcroute
bridge fdb del dev vx10 00:00:00:00:00:00
bridge fdb add \
@ -754,7 +749,7 @@ ipv6_mcroute_fdb_sep_rx()
{
adf_install_sg_sep_rx "X$IPMR"
ip_addr_add "X$IPMR" 2001:db8:5::1/64
adf_ip_addr_add "X$IPMR" 2001:db8:5::1/64
vx20_create_wait local 2001:db8:5::1 group "$GROUP6" dev "$IPMR" mcroute
bridge -6 fdb del dev vx20 00:00:00:00:00:00
bridge -6 fdb add dev vx20 00:00:00:00:00:00 \

View File

@ -47,8 +47,7 @@ source lib.sh
h1_create()
{
simple_if_init $h1 192.0.2.1/28
defer simple_if_fini $h1 192.0.2.1/28
adf_simple_if_init $h1 192.0.2.1/28
tc qdisc add dev $h1 clsact
defer tc qdisc del dev $h1 clsact
@ -60,24 +59,23 @@ h1_create()
switch_create()
{
ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0
adf_ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0
# Make sure the bridge uses the MAC address of the local port and not
# that of the VxLAN's device.
ip_link_set_addr br1 $(mac_get $swp1)
ip_link_set_up br1
adf_ip_link_set_addr br1 $(mac_get $swp1)
adf_ip_link_set_up br1
ip_link_set_up $rp1
ip_addr_add $rp1 192.0.2.17/28
ip_route_add 192.0.2.32/28 nexthop via 192.0.2.18
adf_ip_link_set_up $rp1
adf_ip_addr_add $rp1 192.0.2.17/28
adf_ip_route_add 192.0.2.32/28 nexthop via 192.0.2.18
ip_link_set_master $swp1 br1
ip_link_set_up $swp1
adf_ip_link_set_master $swp1 br1
adf_ip_link_set_up $swp1
}
vrp2_create()
{
simple_if_init $rp2 192.0.2.18/28
defer simple_if_fini $rp2 192.0.2.18/28
adf_simple_if_init $rp2 192.0.2.18/28
}
setup_prepare()
@ -88,11 +86,8 @@ setup_prepare()
rp1=${NETIFS[p3]}
rp2=${NETIFS[p4]}
vrf_prepare
defer vrf_cleanup
forwarding_enable
defer forwarding_restore
adf_vrf_prepare
adf_forwarding_enable
h1_create
switch_create
@ -200,10 +195,10 @@ vxlan_ping_do()
vxlan_device_add()
{
ip_link_add vx1 up type vxlan id 1000 \
adf_ip_link_add vx1 up type vxlan id 1000 \
local 192.0.2.17 dstport "$VXPORT" \
nolearning noudpcsum tos inherit ttl 100 "$@"
ip_link_set_master vx1 br1
adf_ip_link_set_master vx1 br1
}
vxlan_all_reserved_bits()

View File

@ -543,7 +543,7 @@ require_command()
fi
}
ip_link_add()
adf_ip_link_add()
{
local name=$1; shift
@ -551,7 +551,7 @@ ip_link_add()
defer ip link del dev "$name"
}
ip_link_set_master()
adf_ip_link_set_master()
{
local member=$1; shift
local master=$1; shift
@ -560,7 +560,7 @@ ip_link_set_master()
defer ip link set dev "$member" nomaster
}
ip_link_set_addr()
adf_ip_link_set_addr()
{
local name=$1; shift
local addr=$1; shift
@ -585,7 +585,7 @@ ip_link_is_up()
ip_link_has_flag "$1" UP
}
ip_link_set_up()
adf_ip_link_set_up()
{
local name=$1; shift
@ -595,7 +595,7 @@ ip_link_set_up()
fi
}
ip_link_set_down()
adf_ip_link_set_down()
{
local name=$1; shift
@ -605,7 +605,7 @@ ip_link_set_down()
fi
}
ip_addr_add()
adf_ip_addr_add()
{
local name=$1; shift
@ -613,13 +613,13 @@ ip_addr_add()
defer ip addr del dev "$name" "$@"
}
ip_route_add()
adf_ip_route_add()
{
ip route add "$@" && \
defer ip route del "$@"
}
bridge_vlan_add()
adf_bridge_vlan_add()
{
bridge vlan add "$@" && \
defer bridge vlan del "$@"

View File

@ -21,7 +21,7 @@ test_set_remote()
{
RET=0
ip_link_add vx up type vxlan id 2000 dstport 4789
adf_ip_link_add vx up type vxlan id 2000 dstport 4789
bridge fdb ap dev vx 00:00:00:00:00:00 dst 192.0.2.20 self permanent
bridge fdb ap dev vx 00:00:00:00:00:00 dst 192.0.2.30 self permanent
check_remotes "fdb append"
@ -74,12 +74,12 @@ test_change_mc_remote()
{
check_command netstat || return
ip_link_add v1 up type veth peer name v2
ip_link_set_up v2
adf_ip_link_add v1 up type veth peer name v2
adf_ip_link_set_up v2
RET=0
ip_link_add vx up type vxlan dstport 4789 \
adf_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" \

View File

@ -18,29 +18,29 @@ setup_prepare()
{
local port
ip_link_add br up type bridge vlan_filtering 1
adf_ip_link_add br up type bridge vlan_filtering 1
for port in d1 d2 d3; do
ip_link_add $port type veth peer name r$port
ip_link_set_up $port
ip_link_set_up r$port
ip_link_set_master $port br
adf_ip_link_add $port type veth peer name r$port
adf_ip_link_set_up $port
adf_ip_link_set_up r$port
adf_ip_link_set_master $port br
done
bridge_vlan_add vid 11 dev br self
bridge_vlan_add vid 11 dev d1 master
adf_bridge_vlan_add vid 11 dev br self
adf_bridge_vlan_add vid 11 dev d1 master
bridge_vlan_add vid 12 dev br self
bridge_vlan_add vid 12 dev d2 master
adf_bridge_vlan_add vid 12 dev br self
adf_bridge_vlan_add vid 12 dev d2 master
bridge_vlan_add vid 13 dev br self
bridge_vlan_add vid 13 dev d1 master
bridge_vlan_add vid 13 dev d2 master
adf_bridge_vlan_add vid 13 dev br self
adf_bridge_vlan_add vid 13 dev d1 master
adf_bridge_vlan_add vid 13 dev d2 master
bridge_vlan_add vid 14 dev br self
bridge_vlan_add vid 14 dev d1 master
bridge_vlan_add vid 14 dev d2 master
bridge_vlan_add vid 14 dev d3 master
adf_bridge_vlan_add vid 14 dev br self
adf_bridge_vlan_add vid 14 dev d1 master
adf_bridge_vlan_add vid 14 dev d2 master
adf_bridge_vlan_add vid 14 dev d3 master
}
operstate_is()
@ -74,7 +74,7 @@ add_one_vlan()
local link=$1; shift
local id=$1; shift
ip_link_add $link.$id link $link type vlan id $id "$@"
adf_ip_link_add $link.$id link $link type vlan id $id "$@"
}
add_vlans()
@ -98,7 +98,7 @@ down_netdevs()
local dev
for dev in "$@"; do
ip_link_set_down $dev
adf_ip_link_set_down $dev
done
}
@ -207,13 +207,13 @@ test_binding_toggle_off()
do_test_binding_off : "on->off"
}
dfr_set_binding_on()
adf_set_binding_on()
{
set_vlans type vlan bridge_binding on
defer set_vlans type vlan bridge_binding off
}
dfr_set_binding_off()
adf_set_binding_off()
{
set_vlans type vlan bridge_binding off
defer set_vlans type vlan bridge_binding on
@ -223,14 +223,14 @@ test_binding_toggle_on_when_lower_down()
{
add_vlans bridge_binding off
set_vlans up
do_test_binding_on dfr_set_binding_on "off->on when lower down"
do_test_binding_on adf_set_binding_on "off->on when lower down"
}
test_binding_toggle_off_when_lower_down()
{
add_vlans bridge_binding on
set_vlans up
do_test_binding_off dfr_set_binding_off "on->off when lower down"
do_test_binding_off adf_set_binding_off "on->off when lower down"
}
test_binding_toggle_on_when_upper_down()