mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
selftests: traceroute: Test traceroute with different source IPs
When generating ICMP error messages, the kernel will prefer a source IP that is on the same subnet as the destination IP (see inet_select_addr()). Test this behavior by invoking traceroute with different source IPs and checking that the ICMP error message is generated with a source IP in the same subnet. Reviewed-by: Petr Machata <petrm@nvidia.com> Reviewed-by: David Ahern <dsahern@kernel.org> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Link: https://patch.msgid.link/20250908073238.119240-8-idosch@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
5c9c78224f
commit
2e6428100b
|
|
@ -196,9 +196,10 @@ run_traceroute6()
|
|||
################################################################################
|
||||
# traceroute test
|
||||
#
|
||||
# Verify that traceroute from H1 to H2 shows 1.0.1.1 in this scenario
|
||||
# Verify that traceroute from H1 to H2 shows 1.0.3.1 and 1.0.1.1 when
|
||||
# traceroute uses 1.0.3.3 and 1.0.1.3 as the source IP, respectively.
|
||||
#
|
||||
# 1.0.3.1/24
|
||||
# 1.0.3.3/24 1.0.3.1/24
|
||||
# ---- 1.0.1.3/24 1.0.1.1/24 ---- 1.0.2.1/24 1.0.2.4/24 ----
|
||||
# |H1|--------------------------|R1|--------------------------|H2|
|
||||
# ---- N1 ---- N2 ----
|
||||
|
|
@ -226,6 +227,7 @@ setup_traceroute()
|
|||
|
||||
connect_ns $h1 eth0 1.0.1.3/24 - \
|
||||
$router eth1 1.0.3.1/24 -
|
||||
ip -n "$h1" addr add 1.0.3.3/24 dev eth0
|
||||
ip netns exec $h1 ip route add default via 1.0.1.1
|
||||
|
||||
ip netns exec $router ip addr add 1.0.1.1/24 dev eth1
|
||||
|
|
@ -248,9 +250,12 @@ run_traceroute()
|
|||
|
||||
RET=0
|
||||
|
||||
# traceroute host-2 from host-1 (expects 1.0.1.1). Takes a while.
|
||||
run_cmd $h1 "traceroute 1.0.2.4 | grep -q 1.0.1.1"
|
||||
# traceroute host-2 from host-1. Expect a source IP that is on the same
|
||||
# subnet as destination IP of the ICMP error message.
|
||||
run_cmd "$h1" "traceroute -s 1.0.1.3 1.0.2.4 | grep -q 1.0.1.1"
|
||||
check_err $? "traceroute did not return 1.0.1.1"
|
||||
run_cmd "$h1" "traceroute -s 1.0.3.3 1.0.2.4 | grep -q 1.0.3.1"
|
||||
check_err $? "traceroute did not return 1.0.3.1"
|
||||
log_test "IPv4 traceroute"
|
||||
|
||||
cleanup_traceroute
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user