]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xfrm: Unmask upper DSCP bits in xfrm_get_tos()
authorIdo Schimmel <idosch@nvidia.com>
Thu, 29 Aug 2024 06:54:54 +0000 (09:54 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 31 Aug 2024 16:44:51 +0000 (17:44 +0100)
The function returns a value that is used to initialize 'flowi4_tos'
before being passed to the FIB lookup API in the following call chain:

xfrm_bundle_create()
tos = xfrm_get_tos(fl, family)
xfrm_dst_lookup(..., tos, ...)
__xfrm_dst_lookup(..., tos, ...)
xfrm4_dst_lookup(..., tos, ...)
__xfrm4_dst_lookup(..., tos, ...)
fl4->flowi4_tos = tos
__ip_route_output_key(net, fl4)

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

Remove IPTOS_RT_MASK since it is no longer used.

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

index b896f086ec8ed8bfac59a8cfbae2316aac63701b..1789f1e6640b466f7eaa9efb7765c53b3748df66 100644 (file)
@@ -266,8 +266,6 @@ static inline void ip_rt_put(struct rtable *rt)
        dst_release(&rt->dst);
 }
 
-#define IPTOS_RT_MASK  (IPTOS_TOS_MASK & ~3)
-
 extern const __u8 ip_tos2prio[16];
 
 static inline char rt_tos2priority(u8 tos)
index c56c61b0c12ef2a99faa58792715de25f35c5ad6..b22767c0c078c66ba06cc944cd2b0a40848008d4 100644 (file)
@@ -45,6 +45,7 @@
 #ifdef CONFIG_XFRM_ESPINTCP
 #include <net/espintcp.h>
 #endif
+#include <net/inet_dscp.h>
 
 #include "xfrm_hash.h"
 
@@ -2561,7 +2562,7 @@ xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl,
 static int xfrm_get_tos(const struct flowi *fl, int family)
 {
        if (family == AF_INET)
-               return IPTOS_RT_MASK & fl->u.ip4.flowi4_tos;
+               return fl->u.ip4.flowi4_tos & INET_DSCP_MASK;
 
        return 0;
 }