selftests: fcnal: Test SO_DONTROUTE on raw and ping sockets.
authorGuillaume Nault <gnault@redhat.com>
Thu, 11 May 2023 14:39:46 +0000 (16:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 May 2023 08:43:56 +0000 (09:43 +0100)
Use ping -r to test the kernel behaviour with raw and ping sockets
having the SO_DONTROUTE option.

Since ipv4_ping_novrf() is called with different values of
net.ipv4.ping_group_range, then it tests both raw and ping sockets
(ping uses ping sockets if its user ID belongs to ping_group_range
and raw sockets otherwise).

With both socket types, 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 08b4b96..05b5c4a 100755 (executable)
@@ -585,6 +585,20 @@ ipv4_ping_novrf()
        done
 
        #
+       # out, but don't use gateway if peer is not on link
+       #
+       a=${NSB_IP}
+       log_start
+       run_cmd ping -c 1 -w 1 -r ${a}
+       log_test_addr ${a} $? 0 "ping out (don't route), peer on link"
+
+       a=${NSB_LO_IP}
+       log_start
+       show_hint "Fails since peer is not on link"
+       run_cmd ping -c 1 -w 1 -r ${a}
+       log_test_addr ${a} $? 1 "ping out (don't route), peer not on link"
+
+       #
        # in
        #
        for a in ${NSA_IP} ${NSA_LO_IP}