ipv4: Unmask upper DSCP bits in NETLINK_FIB_LOOKUP family
authorIdo Schimmel <idosch@nvidia.com>
Wed, 21 Aug 2024 12:52:41 +0000 (15:52 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 22 Aug 2024 23:59:56 +0000 (16:59 -0700)
The NETLINK_FIB_LOOKUP netlink family can be used to perform a FIB
lookup according to user provided parameters and communicate the result
back to user space.

Unmask the upper DSCP bits of the user-provided DS field before invoking
the IPv4 FIB lookup API so that in the future the lookup could be
performed according to the full DSCP value.

No functional changes intended since the upper DSCP bits are masked when
comparing against the TOS selectors in FIB rules and routes.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Acked-by: Florian Westphal <fw@strlen.de>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://patch.msgid.link/20240821125251.1571445-3-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/fib_frontend.c

index da540ddb7af65185a7f3e1c08409355d514ba4c5..8b740f575da1a5a25ac0d09f1f2beaae769646f8 100644 (file)
@@ -1343,7 +1343,7 @@ static void nl_fib_lookup(struct net *net, struct fib_result_nl *frn)
        struct flowi4           fl4 = {
                .flowi4_mark = frn->fl_mark,
                .daddr = frn->fl_addr,
-               .flowi4_tos = frn->fl_tos & IPTOS_RT_MASK,
+               .flowi4_tos = frn->fl_tos & INET_DSCP_MASK,
                .flowi4_scope = frn->fl_scope,
        };
        struct fib_table *tb;