]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ipv4: Unmask upper DSCP bits when building flow key
authorIdo Schimmel <idosch@nvidia.com>
Thu, 29 Aug 2024 06:54:53 +0000 (09:54 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 31 Aug 2024 16:44:51 +0000 (17:44 +0100)
build_sk_flow_key() and __build_flow_key() are used to build an IPv4
flow key before calling one of the FIB lookup APIs.

Unmask the upper DSCP bits so that in the future the lookup could be
performed according to the full DSCP value.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c

index 5a77dc6d9c720be2b47c94707612908544e9f84d..723ac9181558c3240204d7b6830a9557d06b10f3 100644 (file)
@@ -512,7 +512,7 @@ static void __build_flow_key(const struct net *net, struct flowi4 *fl4,
                                                    sk->sk_protocol;
        }
 
-       flowi4_init_output(fl4, oif, mark, tos & IPTOS_RT_MASK, scope,
+       flowi4_init_output(fl4, oif, mark, tos & INET_DSCP_MASK, scope,
                           prot, flow_flags, iph->daddr, iph->saddr, 0, 0,
                           sock_net_uid(net, sk));
 }
@@ -541,7 +541,7 @@ static void build_sk_flow_key(struct flowi4 *fl4, const struct sock *sk)
        if (inet_opt && inet_opt->opt.srr)
                daddr = inet_opt->opt.faddr;
        flowi4_init_output(fl4, sk->sk_bound_dev_if, READ_ONCE(sk->sk_mark),
-                          ip_sock_rt_tos(sk) & IPTOS_RT_MASK,
+                          ip_sock_rt_tos(sk),
                           ip_sock_rt_scope(sk),
                           inet_test_bit(HDRINCL, sk) ?
                                IPPROTO_RAW : sk->sk_protocol,