ipv6: Early TCP socket demux

This is the IPv6 missing bits for infrastructure added in commit
41063e9dd1 (ipv4: Early TCP socket demux.)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet
2012-07-26 12:18:11 +00:00
committed by David S. Miller
parent c6cffba4ff
commit c7109986db
5 changed files with 59 additions and 8 deletions

View File

@@ -47,9 +47,18 @@
inline int ip6_rcv_finish( struct sk_buff *skb)
int ip6_rcv_finish(struct sk_buff *skb)
{
if (skb_dst(skb) == NULL)
if (sysctl_ip_early_demux && !skb_dst(skb)) {
const struct inet6_protocol *ipprot;
rcu_read_lock();
ipprot = rcu_dereference(inet6_protos[ipv6_hdr(skb)->nexthdr]);
if (ipprot && ipprot->early_demux)
ipprot->early_demux(skb);
rcu_read_unlock();
}
if (!skb_dst(skb))
ip6_route_input(skb);
return dst_input(skb);