ipv4: Mask upper DSCP bits and ECN bits in NETLINK_FIB_LOOKUP family
The NETLINK_FIB_LOOKUP netlink family can be used to perform a FIB lookup according to user provided parameters and communicate the result back to user space. However, unlike other users of the FIB lookup API, the upper DSCP bits and the ECN bits of the DS field are not masked, which can result in the wrong result being returned. Solve this by masking the upper DSCP bits and the ECN bits using IPTOS_RT_MASK. The structure that communicates the request and the response is not exported to user space, so it is unlikely that this netlink family is actually in use [1]. [1] https://lore.kernel.org/netdev/ZpqpB8vJU%2FQ6LSqa@debian/ Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Guillaume Nault <gnault@redhat.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
ccb445ae46
commit
8fed54758c
@@ -1343,7 +1343,7 @@ static void nl_fib_lookup(struct net *net, struct fib_result_nl *frn)
|
||||
struct flowi4 fl4 = {
|
||||
.flowi4_mark = frn->fl_mark,
|
||||
.daddr = frn->fl_addr,
|
||||
.flowi4_tos = frn->fl_tos,
|
||||
.flowi4_tos = frn->fl_tos & IPTOS_RT_MASK,
|
||||
.flowi4_scope = frn->fl_scope,
|
||||
};
|
||||
struct fib_table *tb;
|
||||
|
||||
Reference in New Issue
Block a user