Commit 2e518551 authored by David S. Miller's avatar David S. Miller

Merge branch 'selftests-forwarding-sysctl'

Petr Machata says:

====================
selftests: forwarding: Updates to sysctl handling

Some selftests need to adjust sysctl settings. In order to be neutral to
the system that the test is run on, it is a good practice to change back
to the original setting after the test ends. That involves some
boilerplate that can be abstracted away.

In patch #1, introduce two functions, sysctl_set() and sysctl_restore().
The former stores the current value of a given setting, and sets a new
value. The latter restores the setting to the previously-stored value.

In patch #2, use these wrappers in a number of tests.

Additionally in patch #3, fix a problem in mirror_gre_nh.sh, which
neglected to set a sysctl that's crucial for the test to work.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 41f40546 7eaaf0bc
...@@ -381,19 +381,33 @@ bridge_ageing_time_get() ...@@ -381,19 +381,33 @@ bridge_ageing_time_get()
echo $((ageing_time / 100)) echo $((ageing_time / 100))
} }
forwarding_enable() declare -A SYSCTL_ORIG
sysctl_set()
{
local key=$1; shift
local value=$1; shift
SYSCTL_ORIG[$key]=$(sysctl -n $key)
sysctl -qw $key=$value
}
sysctl_restore()
{ {
ipv4_fwd=$(sysctl -n net.ipv4.conf.all.forwarding) local key=$1; shift
ipv6_fwd=$(sysctl -n net.ipv6.conf.all.forwarding)
sysctl -q -w net.ipv4.conf.all.forwarding=1 sysctl -qw $key=${SYSCTL_ORIG["$key"]}
sysctl -q -w net.ipv6.conf.all.forwarding=1 }
forwarding_enable()
{
sysctl_set net.ipv4.conf.all.forwarding 1
sysctl_set net.ipv6.conf.all.forwarding 1
} }
forwarding_restore() forwarding_restore()
{ {
sysctl -q -w net.ipv6.conf.all.forwarding=$ipv6_fwd sysctl_restore net.ipv6.conf.all.forwarding
sysctl -q -w net.ipv4.conf.all.forwarding=$ipv4_fwd sysctl_restore net.ipv4.conf.all.forwarding
} }
tc_offload_check() tc_offload_check()
......
...@@ -36,9 +36,7 @@ setup_prepare() ...@@ -36,9 +36,7 @@ setup_prepare()
# This test downs $swp3, which deletes the configured IPv6 address # This test downs $swp3, which deletes the configured IPv6 address
# unless this sysctl is set. # unless this sysctl is set.
local key=net.ipv6.conf.$swp3.keep_addr_on_down sysctl_set net.ipv6.conf.$swp3.keep_addr_on_down 1
SWP3_KEEP_ADDR_ON_DOWN=$(sysctl -n $key)
sysctl -qw $key=1
ip address add dev $swp3 192.0.2.129/28 ip address add dev $swp3 192.0.2.129/28
ip address add dev $h3 192.0.2.130/28 ip address add dev $h3 192.0.2.130/28
...@@ -57,8 +55,7 @@ cleanup() ...@@ -57,8 +55,7 @@ cleanup()
ip address del dev $h3 192.0.2.130/28 ip address del dev $h3 192.0.2.130/28
ip address del dev $swp3 192.0.2.129/28 ip address del dev $swp3 192.0.2.129/28
local key=net.ipv6.conf.$swp3.keep_addr_on_down sysctl_restore net.ipv6.conf.$swp3.keep_addr_on_down
sysctl -qw $key=$SWP3_KEEP_ADDR_ON_DOWN
mirror_gre_topo_destroy mirror_gre_topo_destroy
vrf_cleanup vrf_cleanup
......
...@@ -29,6 +29,9 @@ setup_prepare() ...@@ -29,6 +29,9 @@ setup_prepare()
swp3=${NETIFS[p5]} swp3=${NETIFS[p5]}
h3=${NETIFS[p6]} h3=${NETIFS[p6]}
sysctl_set net.ipv4.conf.all.rp_filter 0
sysctl_set net.ipv4.conf.$h3.rp_filter 0
vrf_prepare vrf_prepare
mirror_gre_topo_create mirror_gre_topo_create
...@@ -60,6 +63,9 @@ cleanup() ...@@ -60,6 +63,9 @@ cleanup()
mirror_gre_topo_destroy mirror_gre_topo_destroy
vrf_cleanup vrf_cleanup
sysctl_restore net.ipv4.conf.$h3.rp_filter
sysctl_restore net.ipv4.conf.all.rp_filter
} }
test_gretap() test_gretap()
......
...@@ -205,13 +205,11 @@ multipath4_test() ...@@ -205,13 +205,11 @@ multipath4_test()
local weight_rp13=$3 local weight_rp13=$3
local t0_rp12 t0_rp13 t1_rp12 t1_rp13 local t0_rp12 t0_rp13 t1_rp12 t1_rp13
local packets_rp12 packets_rp13 local packets_rp12 packets_rp13
local hash_policy
# Transmit multiple flows from h1 to h2 and make sure they are # Transmit multiple flows from h1 to h2 and make sure they are
# distributed between both multipath links (rp12 and rp13) # distributed between both multipath links (rp12 and rp13)
# according to the configured weights. # according to the configured weights.
hash_policy=$(sysctl -n net.ipv4.fib_multipath_hash_policy) sysctl_set net.ipv4.fib_multipath_hash_policy 1
sysctl -q -w net.ipv4.fib_multipath_hash_policy=1
ip route replace 198.51.100.0/24 vrf vrf-r1 \ ip route replace 198.51.100.0/24 vrf vrf-r1 \
nexthop via 169.254.2.22 dev $rp12 weight $weight_rp12 \ nexthop via 169.254.2.22 dev $rp12 weight $weight_rp12 \
nexthop via 169.254.3.23 dev $rp13 weight $weight_rp13 nexthop via 169.254.3.23 dev $rp13 weight $weight_rp13
...@@ -233,7 +231,7 @@ multipath4_test() ...@@ -233,7 +231,7 @@ multipath4_test()
ip route replace 198.51.100.0/24 vrf vrf-r1 \ ip route replace 198.51.100.0/24 vrf vrf-r1 \
nexthop via 169.254.2.22 dev $rp12 \ nexthop via 169.254.2.22 dev $rp12 \
nexthop via 169.254.3.23 dev $rp13 nexthop via 169.254.3.23 dev $rp13
sysctl -q -w net.ipv4.fib_multipath_hash_policy=$hash_policy sysctl_restore net.ipv4.fib_multipath_hash_policy
} }
multipath6_l4_test() multipath6_l4_test()
...@@ -243,13 +241,11 @@ multipath6_l4_test() ...@@ -243,13 +241,11 @@ multipath6_l4_test()
local weight_rp13=$3 local weight_rp13=$3
local t0_rp12 t0_rp13 t1_rp12 t1_rp13 local t0_rp12 t0_rp13 t1_rp12 t1_rp13
local packets_rp12 packets_rp13 local packets_rp12 packets_rp13
local hash_policy
# Transmit multiple flows from h1 to h2 and make sure they are # Transmit multiple flows from h1 to h2 and make sure they are
# distributed between both multipath links (rp12 and rp13) # distributed between both multipath links (rp12 and rp13)
# according to the configured weights. # according to the configured weights.
hash_policy=$(sysctl -n net.ipv6.fib_multipath_hash_policy) sysctl_set net.ipv6.fib_multipath_hash_policy 1
sysctl -q -w net.ipv6.fib_multipath_hash_policy=1
ip route replace 2001:db8:2::/64 vrf vrf-r1 \ ip route replace 2001:db8:2::/64 vrf vrf-r1 \
nexthop via fe80:2::22 dev $rp12 weight $weight_rp12 \ nexthop via fe80:2::22 dev $rp12 weight $weight_rp12 \
...@@ -272,7 +268,7 @@ multipath6_l4_test() ...@@ -272,7 +268,7 @@ multipath6_l4_test()
nexthop via fe80:2::22 dev $rp12 \ nexthop via fe80:2::22 dev $rp12 \
nexthop via fe80:3::23 dev $rp13 nexthop via fe80:3::23 dev $rp13
sysctl -q -w net.ipv6.fib_multipath_hash_policy=$hash_policy sysctl_restore net.ipv6.fib_multipath_hash_policy
} }
multipath6_test() multipath6_test()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment