ipv6: route: dissect flow in input path if fib rules need it
Dissect flow in fwd path if fib rules require it. Controlled by a flag to avoid penatly for the common case. Flag is set when fib rules with sport, dport and proto match that require flow dissect are installed. Also passes the dissected hash keys to the multipath hash function when applicable to avoid dissecting the flow again. icmp packets will continue to use inner header for hash calculations (Thanks to Nikolay Aleksandrov for some review here). Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Acked-by: Paolo Abeni <pabeni@redhat.com> Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
bb0ad1987e
commit
e37b1e978b
@@ -1770,7 +1770,7 @@ void fib_select_path(struct net *net, struct fib_result *res,
|
||||
|
||||
#ifdef CONFIG_IP_ROUTE_MULTIPATH
|
||||
if (res->fi->fib_nhs > 1) {
|
||||
int h = fib_multipath_hash(res->fi, fl4, skb);
|
||||
int h = fib_multipath_hash(res->fi, fl4, skb, NULL);
|
||||
|
||||
fib_select_multipath(res, h);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user