]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ipv4: icmp: Unmask upper DSCP bits in icmp_route_lookup()
authorIdo Schimmel <idosch@nvidia.com>
Thu, 29 Aug 2024 06:54:50 +0000 (09:54 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 31 Aug 2024 16:44:51 +0000 (17:44 +0100)
The function is called to resolve a route for an ICMP message that is
sent in response to a situation. Based on the type of the generated ICMP
message, the function is either passed the DS field of the packet that
generated the ICMP message or a DS field that is derived from it.

Unmask the upper DSCP bits before resolving and output route via
ip_route_output_key_hash() 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/icmp.c

index 1ed88883e1f2579c875f4e0769789dc2e0c6e15a..d2463b6e390eb9131f866349f427def49c2796c9 100644 (file)
@@ -93,6 +93,7 @@
 #include <net/ip_fib.h>
 #include <net/l3mdev.h>
 #include <net/addrconf.h>
+#include <net/inet_dscp.h>
 #define CREATE_TRACE_POINTS
 #include <trace/events/icmp.h>
 
@@ -497,7 +498,7 @@ static struct rtable *icmp_route_lookup(struct net *net,
        fl4->saddr = saddr;
        fl4->flowi4_mark = mark;
        fl4->flowi4_uid = sock_net_uid(net, NULL);
-       fl4->flowi4_tos = RT_TOS(tos);
+       fl4->flowi4_tos = tos & INET_DSCP_MASK;
        fl4->flowi4_proto = IPPROTO_ICMP;
        fl4->fl4_icmp_type = type;
        fl4->fl4_icmp_code = code;