diff options
Diffstat (limited to 'include/net/ip6_fib.h')
| -rw-r--r-- | include/net/ip6_fib.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 6268963d9599..fa4e6af382e2 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -472,13 +472,10 @@ void rt6_get_prefsrc(const struct rt6_info *rt, struct in6_addr *addr) rcu_read_lock(); from = rcu_dereference(rt->from); - if (from) { + if (from) *addr = from->fib6_prefsrc.addr; - } else { - struct in6_addr in6_zero = {}; - - *addr = in6_zero; - } + else + *addr = in6addr_any; rcu_read_unlock(); } @@ -610,7 +607,10 @@ static inline bool fib6_rules_early_flow_dissect(struct net *net, if (!net->ipv6.fib6_rules_require_fldissect) return false; - skb_flow_dissect_flow_keys(skb, flkeys, flag); + memset(flkeys, 0, sizeof(*flkeys)); + __skb_flow_dissect(net, skb, &flow_keys_dissector, + flkeys, NULL, 0, 0, 0, flag); + fl6->fl6_sport = flkeys->ports.src; fl6->fl6_dport = flkeys->ports.dst; fl6->flowi6_proto = flkeys->basic.ip_proto; |
