Skip to content

Commit

Permalink
selftests: forwarding: Add IPv6 GRE remote change tests
Browse files Browse the repository at this point in the history
Test that after changing the remote address of an ip6gre net device
traffic is forwarded as expected. Test with both flat and hierarchical
topologies and with and without an input / output keys.

Signed-off-by: Ido Schimmel <[email protected]>
Reviewed-by: Petr Machata <[email protected]>
Signed-off-by: Petr Machata <[email protected]>
Link: https://patch.msgid.link/02b05246d2cdada0cf2fccffc0faa8a424d0f51b.1729866134.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
idosch authored and kuba-moo committed Oct 31, 2024
1 parent 12ae97c commit d7bd61f
Show file tree
Hide file tree
Showing 7 changed files with 164 additions and 0 deletions.
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_flat.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ALL_TESTS="
gre_flat
gre_mtu_change
gre_flat_remote_change
"

NUM_NETIFS=6
Expand Down Expand Up @@ -44,6 +45,19 @@ gre_mtu_change()
test_mtu_change
}

gre_flat_remote_change()
{
flat_remote_change

test_traffic_ip4ip6 "GRE flat IPv4-in-IPv6 (new remote)"
test_traffic_ip6ip6 "GRE flat IPv6-in-IPv6 (new remote)"

flat_remote_restore

test_traffic_ip4ip6 "GRE flat IPv4-in-IPv6 (old remote)"
test_traffic_ip6ip6 "GRE flat IPv6-in-IPv6 (old remote)"
}

cleanup()
{
pre_cleanup
Expand Down
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_flat_key.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ALL_TESTS="
gre_flat
gre_mtu_change
gre_flat_remote_change
"

NUM_NETIFS=6
Expand Down Expand Up @@ -44,6 +45,19 @@ gre_mtu_change()
test_mtu_change
}

gre_flat_remote_change()
{
flat_remote_change

test_traffic_ip4ip6 "GRE flat IPv4-in-IPv6 with key (new remote)"
test_traffic_ip6ip6 "GRE flat IPv6-in-IPv6 with key (new remote)"

flat_remote_restore

test_traffic_ip4ip6 "GRE flat IPv4-in-IPv6 with key (old remote)"
test_traffic_ip6ip6 "GRE flat IPv6-in-IPv6 with key (old remote)"
}

cleanup()
{
pre_cleanup
Expand Down
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_flat_keys.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ALL_TESTS="
gre_flat
gre_mtu_change
gre_flat_remote_change
"

NUM_NETIFS=6
Expand Down Expand Up @@ -44,6 +45,19 @@ gre_mtu_change()
test_mtu_change gre
}

gre_flat_remote_change()
{
flat_remote_change

test_traffic_ip4ip6 "GRE flat IPv4-in-IPv6 with ikey/okey (new remote)"
test_traffic_ip6ip6 "GRE flat IPv6-in-IPv6 with ikey/okey (new remote)"

flat_remote_restore

test_traffic_ip4ip6 "GRE flat IPv4-in-IPv6 with ikey/okey (old remote)"
test_traffic_ip6ip6 "GRE flat IPv6-in-IPv6 with ikey/okey (old remote)"
}

cleanup()
{
pre_cleanup
Expand Down
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_hier.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ALL_TESTS="
gre_hier
gre_mtu_change
gre_hier_remote_change
"

NUM_NETIFS=6
Expand Down Expand Up @@ -44,6 +45,19 @@ gre_mtu_change()
test_mtu_change gre
}

gre_hier_remote_change()
{
hier_remote_change

test_traffic_ip4ip6 "GRE hierarchical IPv4-in-IPv6 (new remote)"
test_traffic_ip6ip6 "GRE hierarchical IPv6-in-IPv6 (new remote)"

hier_remote_restore

test_traffic_ip4ip6 "GRE hierarchical IPv4-in-IPv6 (old remote)"
test_traffic_ip6ip6 "GRE hierarchical IPv6-in-IPv6 (old remote)"
}

cleanup()
{
pre_cleanup
Expand Down
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_hier_key.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ALL_TESTS="
gre_hier
gre_mtu_change
gre_hier_remote_change
"

NUM_NETIFS=6
Expand Down Expand Up @@ -44,6 +45,19 @@ gre_mtu_change()
test_mtu_change gre
}

gre_hier_remote_change()
{
hier_remote_change

test_traffic_ip4ip6 "GRE hierarchical IPv4-in-IPv6 with key (new remote)"
test_traffic_ip6ip6 "GRE hierarchical IPv6-in-IPv6 with key (new remote)"

hier_remote_restore

test_traffic_ip4ip6 "GRE hierarchical IPv4-in-IPv6 with key (old remote)"
test_traffic_ip6ip6 "GRE hierarchical IPv6-in-IPv6 with key (old remote)"
}

cleanup()
{
pre_cleanup
Expand Down
14 changes: 14 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_hier_keys.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ALL_TESTS="
gre_hier
gre_mtu_change
gre_hier_remote_change
"

NUM_NETIFS=6
Expand Down Expand Up @@ -44,6 +45,19 @@ gre_mtu_change()
test_mtu_change gre
}

gre_hier_remote_change()
{
hier_remote_change

test_traffic_ip4ip6 "GRE hierarchical IPv4-in-IPv6 with ikey/okey (new remote)"
test_traffic_ip6ip6 "GRE hierarchical IPv6-in-IPv6 with ikey/okey (new remote)"

hier_remote_restore

test_traffic_ip4ip6 "GRE hierarchical IPv4-in-IPv6 with ikey/okey (old remote)"
test_traffic_ip6ip6 "GRE hierarchical IPv6-in-IPv6 with ikey/okey (old remote)"
}

cleanup()
{
pre_cleanup
Expand Down
80 changes: 80 additions & 0 deletions tools/testing/selftests/net/forwarding/ip6gre_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -436,3 +436,83 @@ test_mtu_change()
check_err $?
log_test "ping GRE IPv6, packet size 1800 after MTU change"
}

topo_flat_remote_change()
{
local old1=$1; shift
local new1=$1; shift
local old2=$1; shift
local new2=$1; shift

ip link set dev g1a type ip6gre local $new1 remote $new2
__addr_add_del g1a add "$new1/128"
__addr_add_del g1a del "$old1/128"
ip -6 route add $new2/128 via 2001:db8:10::2
ip -6 route del $old2/128

ip link set dev g2a type ip6gre local $new2 remote $new1
__addr_add_del g2a add "$new2/128"
__addr_add_del g2a del "$old2/128"
ip -6 route add vrf v$ol2 $new1/128 via 2001:db8:10::1
ip -6 route del vrf v$ol2 $old1/128
}

flat_remote_change()
{
local old1=2001:db8:3::1
local new1=2001:db8:3::10
local old2=2001:db8:3::2
local new2=2001:db8:3::20

topo_flat_remote_change $old1 $new1 $old2 $new2
}

flat_remote_restore()
{
local old1=2001:db8:3::10
local new1=2001:db8:3::1
local old2=2001:db8:3::20
local new2=2001:db8:3::2

topo_flat_remote_change $old1 $new1 $old2 $new2
}

topo_hier_remote_change()
{
local old1=$1; shift
local new1=$1; shift
local old2=$1; shift
local new2=$1; shift

__addr_add_del dummy1 del "$old1/64"
__addr_add_del dummy1 add "$new1/64"
ip link set dev g1a type ip6gre local $new1 remote $new2
ip -6 route add vrf v$ul1 $new2/128 via 2001:db8:10::2
ip -6 route del vrf v$ul1 $old2/128

__addr_add_del dummy2 del "$old2/64"
__addr_add_del dummy2 add "$new2/64"
ip link set dev g2a type ip6gre local $new2 remote $new1
ip -6 route add vrf v$ul2 $new1/128 via 2001:db8:10::1
ip -6 route del vrf v$ul2 $old1/128
}

hier_remote_change()
{
local old1=2001:db8:3::1
local new1=2001:db8:3::10
local old2=2001:db8:3::2
local new2=2001:db8:3::20

topo_hier_remote_change $old1 $new1 $old2 $new2
}

hier_remote_restore()
{
local old1=2001:db8:3::10
local new1=2001:db8:3::1
local old2=2001:db8:3::20
local new2=2001:db8:3::2

topo_hier_remote_change $old1 $new1 $old2 $new2
}

0 comments on commit d7bd61f

Please sign in to comment.