ipv4: Reject routes specifying ECN bits in rtm_tos
authorGuillaume Nault <gnault@redhat.com>
Fri, 4 Feb 2022 13:58:16 +0000 (14:58 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 8 Feb 2022 04:12:46 +0000 (20:12 -0800)
commitf55fbb6afb8d701e3185e31e73f5ea9503a66744
tree884a144830e7b98ccf4fdf1e138b73aaff01e40a
parent563f8e97e054451d167327336a53b7381517a998
ipv4: Reject routes specifying ECN bits in rtm_tos

Use the new dscp_t type to replace the fc_tos field of fib_config, to
ensure IPv4 routes aren't influenced by ECN bits when configured with
non-zero rtm_tos.

Before this patch, IPv4 routes specifying an rtm_tos with some of the
ECN bits set were accepted. However they wouldn't work (never match) as
IPv4 normally clears the ECN bits with IPTOS_RT_MASK before doing a FIB
lookup (although a few buggy code paths don't).

After this patch, IPv4 routes specifying an rtm_tos with any ECN bit
set is rejected.

Note: IPv6 routes ignore rtm_tos altogether, any rtm_tos is accepted,
but treated as if it were 0.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Acked-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/ip_fib.h
net/ipv4/fib_frontend.c
net/ipv4/fib_trie.c
tools/testing/selftests/net/fib_tests.sh