Commit f6c89e95 authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller

ipv4: Unmask upper DSCP bits when building flow key

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: default avatarIdo Schimmel <idosch@nvidia.com>
Reviewed-by: default avatarGuillaume Nault <gnault@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 356d054a
...@@ -512,7 +512,7 @@ static void __build_flow_key(const struct net *net, struct flowi4 *fl4, ...@@ -512,7 +512,7 @@ static void __build_flow_key(const struct net *net, struct flowi4 *fl4,
sk->sk_protocol; 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, prot, flow_flags, iph->daddr, iph->saddr, 0, 0,
sock_net_uid(net, sk)); sock_net_uid(net, sk));
} }
...@@ -541,7 +541,7 @@ static void build_sk_flow_key(struct flowi4 *fl4, const struct sock *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) if (inet_opt && inet_opt->opt.srr)
daddr = inet_opt->opt.faddr; daddr = inet_opt->opt.faddr;
flowi4_init_output(fl4, sk->sk_bound_dev_if, READ_ONCE(sk->sk_mark), 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), ip_sock_rt_scope(sk),
inet_test_bit(HDRINCL, sk) ? inet_test_bit(HDRINCL, sk) ?
IPPROTO_RAW : sk->sk_protocol, IPPROTO_RAW : sk->sk_protocol,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment