[ICSK]: Generalise tcp_listen_{start,stop}

This also moved inet_iif from tcp to inet_hashtables.h, as it is
needed by the inet_lookup callers, perhaps this needs a bit of
polishing, but for now seems fine.

Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index f0c21c0..646b6ea 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -26,6 +26,7 @@
 #include <linux/wait.h>
 
 #include <net/inet_connection_sock.h>
+#include <net/route.h>
 #include <net/sock.h>
 #include <net/tcp_states.h>
 
@@ -280,6 +281,11 @@
 		wake_up(&hashinfo->lhash_wait);
 }
 
+static inline int inet_iif(const struct sk_buff *skb)
+{
+	return ((struct rtable *)skb->dst)->rt_iif;
+}
+
 extern struct sock *__inet_lookup_listener(const struct hlist_head *head,
 					   const u32 daddr,
 					   const unsigned short hnum,
diff --git a/include/net/sock.h b/include/net/sock.h
index 48cc337..8678313 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -558,6 +558,7 @@
 
 	kmem_cache_t		*twsk_slab;
 	unsigned int		twsk_obj_size;
+	atomic_t		*orphan_count;
 
 	struct request_sock_ops	*rsk_prot;
 
diff --git a/include/net/tcp.h b/include/net/tcp.h
index dd9a5a2..68f1ec1 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -860,7 +860,7 @@
 	tp->snd_wl1 = seq;
 }
 
-extern void tcp_destroy_sock(struct sock *sk);
+extern void inet_csk_destroy_sock(struct sock *sk);
 
 
 /*
@@ -987,7 +987,7 @@
 	if (!sock_flag(sk, SOCK_DEAD))
 		sk->sk_state_change(sk);
 	else
-		tcp_destroy_sock(sk);
+		inet_csk_destroy_sock(sk);
 }
 
 static __inline__ void tcp_sack_reset(struct tcp_options_received *rx_opt)