Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: fib offload: use sensible tos values

Although both iproute2 and the kernel accept 1 and 2 as tos values for
new routes, those are invalid. These values only set ECN bits, which
are ignored during IPv4 fib lookups. Therefore, no packet can actually
match such routes. This selftest therefore only succeeds because it
doesn't verify that the new routes do actually work in practice (it
just checks if the routes are offloaded or not).

It makes more sense to use tos values that don't conflict with ECN.
This way, the selftest won't be affected if we later decide to warn or
even reject invalid tos configurations for new routes.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://lore.kernel.org/r/5e43b343720360a1c0e4f5947d9e917b26f30fbf.1643826556.git.gnault@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Guillaume Nault and committed by
Jakub Kicinski
bafe517a 25ee1660

+6 -6
+6 -6
tools/testing/selftests/net/forwarding/fib_offload_lib.sh
··· 99 99 fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 0 metric 1024" false 100 100 check_err $? "Route not in hardware when should" 101 101 102 - ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 2 metric 1024 103 - fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 2 metric 1024" false 102 + ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 8 metric 1024 103 + fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 8 metric 1024" false 104 104 check_err $? "Highest TOS route not in hardware when should" 105 105 106 106 fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 0 metric 1024" true 107 107 check_err $? "Lowest TOS route still in hardware when should not" 108 108 109 - ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 1 metric 1024 110 - fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 1 metric 1024" true 109 + ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 4 metric 1024 110 + fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 4 metric 1024" true 111 111 check_err $? "Middle TOS route in hardware when should not" 112 112 113 113 log_test "IPv4 routes with TOS" ··· 277 277 ip -n $ns link set dev dummy1 up 278 278 279 279 ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 0 280 - ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 1 280 + ip -n $ns route add 192.0.2.0/24 dev dummy1 tos 4 281 281 282 282 devlink -N $ns dev reload $devlink_dev 283 283 284 - fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 1" false 284 + fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 4" false 285 285 check_err $? "Highest TOS route not in hardware when should" 286 286 287 287 fib4_trap_check $ns "192.0.2.0/24 dev dummy1 tos 0" true