diff options
author | Ido Schimmel <idosch@nvidia.com> | 2024-08-29 09:54:56 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2024-08-31 19:44:51 +0300 |
commit | 6a59526628ad6dadf389f45ddb3f75db44930897 (patch) | |
tree | fb03d55a487e2c9fa34815f5cd9c9a25e9a9a3de /net/ipv6 | |
parent | 13f6538de2b845650e68996621489de547b0337e (diff) | |
download | linux-6a59526628ad6dadf389f45ddb3f75db44930897.tar.xz |
ipv6: sit: Unmask upper DSCP bits in ipip6_tunnel_xmit()
The function calls flowi4_init_output() to initialize an IPv4 flow key
with which it then performs a FIB lookup using ip_route_output_flow().
The 'tos' variable with which the TOS value in the IPv4 flow key
(flowi4_tos) is initialized contains the full DS field. Unmask the upper
DSCP bits so that in the future the FIB 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>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/sit.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 83b195f09561..3b2eed7fc765 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c @@ -51,6 +51,7 @@ #include <net/dsfield.h> #include <net/net_namespace.h> #include <net/netns/generic.h> +#include <net/inet_dscp.h> /* This version of net/ipv6/sit.c is cloned of net/ipv4/ip_gre.c @@ -935,8 +936,8 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb, } flowi4_init_output(&fl4, tunnel->parms.link, tunnel->fwmark, - RT_TOS(tos), RT_SCOPE_UNIVERSE, IPPROTO_IPV6, - 0, dst, tiph->saddr, 0, 0, + tos & INET_DSCP_MASK, RT_SCOPE_UNIVERSE, + IPPROTO_IPV6, 0, dst, tiph->saddr, 0, 0, sock_net_uid(tunnel->net, NULL)); rt = dst_cache_get_ip4(&tunnel->dst_cache, &fl4.saddr); |