selftests: fcnal: Test SO_DONTROUTE on UDP sockets.
authorGuillaume Nault <gnault@redhat.com>
Thu, 11 May 2023 14:39:39 +0000 (16:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 May 2023 08:43:56 +0000 (09:43 +0100)
Use nettest --client-dontroute to test the kernel behaviour with UDP
sockets having the SO_DONTROUTE option. Sending packets to a neighbour
(on link) host, should work. When the host is behind a router, sending
should fail.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/fcnal-test.sh

index 3a1f305..08b4b96 100755 (executable)
@@ -1641,6 +1641,23 @@ ipv4_udp_novrf()
        log_start
        run_cmd nettest -D -d ${NSA_DEV} -r ${a}
        log_test_addr ${a} $? 2 "No server, device client, local conn"
+
+       #
+       # Link local connection tests (SO_DONTROUTE).
+       # Connections should succeed only when the remote IP address is
+       # on link (doesn't need to be routed through a gateway).
+       #
+
+       a=${NSB_IP}
+       log_start
+       do_run_cmd nettest -B -D -N "${NSA}" -O "${NSB}" -r ${a} --client-dontroute
+       log_test_addr ${a} $? 0 "SO_DONTROUTE client"
+
+       a=${NSB_LO_IP}
+       log_start
+       show_hint "Should fail 'Network is unreachable' since server is not on link"
+       do_run_cmd nettest -B -D -N "${NSA}" -O "${NSB}" -r ${a} --client-dontroute
+       log_test_addr ${a} $? 1 "SO_DONTROUTE client"
 }
 
 ipv4_udp_vrf()