summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2011-09-05 16:05:44 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2011-12-04 22:44:07 +0100
commitea6e574e34779fbb4526b2160411c163eac25323 (patch)
treeaaf569b7013957b590c4532ac5a6c20ce1d976c3
parent8f97339d3feb662037b86a925e692017c0b32323 (diff)
downloadlinux-stable-ea6e574e34779fbb4526b2160411c163eac25323.tar.gz
linux-stable-ea6e574e34779fbb4526b2160411c163eac25323.tar.bz2
linux-stable-ea6e574e34779fbb4526b2160411c163eac25323.zip
ipv6: add ip6_route_lookup
like rt6_lookup, but allows caller to pass in flowi6 structure. Will be used by the upcoming ipv6 netfilter reverse path filter match. Signed-off-by: Florian Westphal <fw@strlen.de> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--include/net/ip6_route.h2
-rw-r--r--net/ipv6/route.c7
2 files changed, 9 insertions, 0 deletions
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
index 5e91b72fc718..9c9399c98616 100644
--- a/include/net/ip6_route.h
+++ b/include/net/ip6_route.h
@@ -70,6 +70,8 @@ extern void ip6_route_input(struct sk_buff *skb);
extern struct dst_entry * ip6_route_output(struct net *net,
const struct sock *sk,
struct flowi6 *fl6);
+extern struct dst_entry * ip6_route_lookup(struct net *net,
+ struct flowi6 *fl6, int flags);
extern int ip6_route_init(void);
extern void ip6_route_cleanup(void);
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 1138b0a5566d..ab48b02eb56a 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -658,6 +658,13 @@ out:
}
+struct dst_entry * ip6_route_lookup(struct net *net, struct flowi6 *fl6,
+ int flags)
+{
+ return fib6_rule_lookup(net, fl6, flags, ip6_pol_route_lookup);
+}
+EXPORT_SYMBOL_GPL(ip6_route_lookup);
+
struct rt6_info *rt6_lookup(struct net *net, const struct in6_addr *daddr,
const struct in6_addr *saddr, int oif, int strict)
{