summaryrefslogtreecommitdiff
path: root/include/net
diff options
context:
space:
mode:
authorPeter Nørlund <pch@ordbogen.com>2015-09-30 10:12:22 +0200
committerDavid S. Miller <davem@davemloft.net>2015-10-05 03:00:04 -0700
commit79a131592dbb81a2dba208622a2ffbfc53f28bc0 (patch)
tree16eb6cd39f9475f87223cbca93da02f1853570bd /include/net
parent0e884c78ee19e902f300ed147083c28a0c6302f0 (diff)
ipv4: ICMP packet inspection for multipath
ICMP packets are inspected to let them route together with the flow they belong to, minimizing the chance that a problematic path will affect flows on other paths, and so that anycast environments can work with ECMP. Signed-off-by: Peter Nørlund <pch@ordbogen.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/route.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/include/net/route.h b/include/net/route.h
index e211dc167db1..d32cb76f5302 100644
--- a/include/net/route.h
+++ b/include/net/route.h
@@ -28,6 +28,7 @@
#include <net/inetpeer.h>
#include <net/flow.h>
#include <net/inet_sock.h>
+#include <net/ip_fib.h>
#include <net/l3mdev.h>
#include <linux/in_route.h>
#include <linux/rtnetlink.h>
@@ -113,7 +114,15 @@ struct in_device;
int ip_rt_init(void);
void rt_cache_flush(struct net *net);
void rt_flush_dev(struct net_device *dev);
-struct rtable *__ip_route_output_key(struct net *, struct flowi4 *flp);
+struct rtable *__ip_route_output_key_hash(struct net *, struct flowi4 *flp,
+ int mp_hash);
+
+static inline struct rtable *__ip_route_output_key(struct net *net,
+ struct flowi4 *flp)
+{
+ return __ip_route_output_key_hash(net, flp, -1);
+}
+
struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp,
const struct sock *sk);
struct dst_entry *ipv4_blackhole_route(struct net *net,