tproxy: added udp6_lib_lookup function
authorBalazs Scheidler <bazsi@balabit.hu>
Thu, 21 Oct 2010 14:05:41 +0000 (16:05 +0200)
committerPatrick McHardy <kaber@trash.net>
Thu, 21 Oct 2010 14:05:41 +0000 (16:05 +0200)
Just like with IPv4, we need access to the UDP hash table to look up local
sockets, but instead of exporting the global udp_table, export a lookup
function.

Signed-off-by: Balazs Scheidler <bazsi@balabit.hu>
Signed-off-by: KOVACS Krisztian <hidden@balabit.hu>
Signed-off-by: Patrick McHardy <kaber@trash.net>
include/net/udp.h
net/ipv6/udp.c

index a184d3496b1369deefd62aba376f04320f76a773..200b82848c9a3606b0076c3f8621fb63342af6a9 100644 (file)
@@ -183,6 +183,9 @@ extern int udp_lib_setsockopt(struct sock *sk, int level, int optname,
 extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
                                    __be32 daddr, __be16 dport,
                                    int dif);
+extern struct sock *udp6_lib_lookup(struct net *net, const struct in6_addr *saddr, __be16 sport,
+                                   const struct in6_addr *daddr, __be16 dport,
+                                   int dif);
 
 /*
  *     SNMP statistics for UDP and UDP-Lite
index 33e368318d47b84b66b981c4482a73aa7e6c647c..c84dad432114ef0d885b29244bf9df0854f750e2 100644 (file)
@@ -320,6 +320,14 @@ static struct sock *__udp6_lib_lookup_skb(struct sk_buff *skb,
                                 udptable);
 }
 
+struct sock *udp6_lib_lookup(struct net *net, const struct in6_addr *saddr, __be16 sport,
+                            const struct in6_addr *daddr, __be16 dport, int dif)
+{
+       return __udp6_lib_lookup(net, saddr, sport, daddr, dport, dif, &udp_table);
+}
+EXPORT_SYMBOL_GPL(udp6_lib_lookup);
+
+
 /*
  *     This should be easy, if there is something there we
  *     return it, otherwise we block.