diff options
author | David Ahern <dsahern@gmail.com> | 2019-09-17 19:39:49 +0200 |
---|---|---|
committer | Jakub Kicinski <jakub.kicinski@netronome.com> | 2019-09-21 03:23:33 +0200 |
commit | 77d5bc7e6a6cf8bbeca31aab7f0c5449a5eee762 (patch) | |
tree | c9eb74276e11bbe3b2deecda27f2ebd2fcb3c0a2 /include/net | |
parent | selftests: Update fib_nexthop_multiprefix to handle missing ping6 (diff) | |
download | linux-77d5bc7e6a6cf8bbeca31aab7f0c5449a5eee762.tar.xz linux-77d5bc7e6a6cf8bbeca31aab7f0c5449a5eee762.zip |
ipv4: Revert removal of rt_uses_gateway
Julian noted that rt_uses_gateway has a more subtle use than 'is gateway
set':
https://lore.kernel.org/netdev/alpine.LFD.2.21.1909151104060.2546@ja.home.ssi.bg/
Revert that part of the commit referenced in the Fixes tag.
Currently, there are no u8 holes in 'struct rtable'. There is a 4-byte hole
in the second cacheline which contains the gateway declaration. So move
rt_gw_family down to the gateway declarations since they are always used
together, and then re-use that u8 for rt_uses_gateway. End result is that
rtable size is unchanged.
Fixes: 1550c171935d ("ipv4: Prepare rtable for IPv6 gateway")
Reported-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David Ahern <dsahern@gmail.com>
Reviewed-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/route.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/route.h b/include/net/route.h index dfce19c9fa96..6c516840380d 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -53,10 +53,11 @@ struct rtable { unsigned int rt_flags; __u16 rt_type; __u8 rt_is_input; - u8 rt_gw_family; + __u8 rt_uses_gateway; int rt_iif; + u8 rt_gw_family; /* Info on neighbour */ union { __be32 rt_gw4; |