aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_minisocks.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_minisocks.c')
-rw-r--r--net/ipv4/tcp_minisocks.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index f206ee5dda80..f25b56cb85cb 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -20,6 +20,7 @@
20 20
21#include <linux/mm.h> 21#include <linux/mm.h>
22#include <linux/module.h> 22#include <linux/module.h>
23#include <linux/slab.h>
23#include <linux/sysctl.h> 24#include <linux/sysctl.h>
24#include <linux/workqueue.h> 25#include <linux/workqueue.h>
25#include <net/tcp.h> 26#include <net/tcp.h>
@@ -46,7 +47,6 @@ struct inet_timewait_death_row tcp_death_row = {
46 .twcal_timer = TIMER_INITIALIZER(inet_twdr_twcal_tick, 0, 47 .twcal_timer = TIMER_INITIALIZER(inet_twdr_twcal_tick, 0,
47 (unsigned long)&tcp_death_row), 48 (unsigned long)&tcp_death_row),
48}; 49};
49
50EXPORT_SYMBOL_GPL(tcp_death_row); 50EXPORT_SYMBOL_GPL(tcp_death_row);
51 51
52static __inline__ int tcp_in_window(u32 seq, u32 end_seq, u32 s_win, u32 e_win) 52static __inline__ int tcp_in_window(u32 seq, u32 end_seq, u32 s_win, u32 e_win)
@@ -261,6 +261,7 @@ kill:
261 inet_twsk_put(tw); 261 inet_twsk_put(tw);
262 return TCP_TW_SUCCESS; 262 return TCP_TW_SUCCESS;
263} 263}
264EXPORT_SYMBOL(tcp_timewait_state_process);
264 265
265/* 266/*
266 * Move a socket to time-wait or dead fin-wait-2 state. 267 * Move a socket to time-wait or dead fin-wait-2 state.
@@ -361,7 +362,6 @@ void tcp_twsk_destructor(struct sock *sk)
361 tcp_free_md5sig_pool(); 362 tcp_free_md5sig_pool();
362#endif 363#endif
363} 364}
364
365EXPORT_SYMBOL_GPL(tcp_twsk_destructor); 365EXPORT_SYMBOL_GPL(tcp_twsk_destructor);
366 366
367static inline void TCP_ECN_openreq_child(struct tcp_sock *tp, 367static inline void TCP_ECN_openreq_child(struct tcp_sock *tp,
@@ -509,6 +509,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
509 } 509 }
510 return newsk; 510 return newsk;
511} 511}
512EXPORT_SYMBOL(tcp_create_openreq_child);
512 513
513/* 514/*
514 * Process an incoming packet for SYN_RECV sockets represented 515 * Process an incoming packet for SYN_RECV sockets represented
@@ -671,6 +672,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
671 if (req->retrans < inet_csk(sk)->icsk_accept_queue.rskq_defer_accept && 672 if (req->retrans < inet_csk(sk)->icsk_accept_queue.rskq_defer_accept &&
672 TCP_SKB_CB(skb)->end_seq == tcp_rsk(req)->rcv_isn + 1) { 673 TCP_SKB_CB(skb)->end_seq == tcp_rsk(req)->rcv_isn + 1) {
673 inet_rsk(req)->acked = 1; 674 inet_rsk(req)->acked = 1;
675 NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPDEFERACCEPTDROP);
674 return NULL; 676 return NULL;
675 } 677 }
676 678
@@ -704,6 +706,7 @@ embryonic_reset:
704 inet_csk_reqsk_queue_drop(sk, req, prev); 706 inet_csk_reqsk_queue_drop(sk, req, prev);
705 return NULL; 707 return NULL;
706} 708}
709EXPORT_SYMBOL(tcp_check_req);
707 710
708/* 711/*
709 * Queue segment on the new socket if the new socket is active, 712 * Queue segment on the new socket if the new socket is active,
@@ -728,15 +731,11 @@ int tcp_child_process(struct sock *parent, struct sock *child,
728 * in main socket hash table and lock on listening 731 * in main socket hash table and lock on listening
729 * socket does not protect us more. 732 * socket does not protect us more.
730 */ 733 */
731 sk_add_backlog(child, skb); 734 __sk_add_backlog(child, skb);
732 } 735 }
733 736
734 bh_unlock_sock(child); 737 bh_unlock_sock(child);
735 sock_put(child); 738 sock_put(child);
736 return ret; 739 return ret;
737} 740}
738
739EXPORT_SYMBOL(tcp_check_req);
740EXPORT_SYMBOL(tcp_child_process); 741EXPORT_SYMBOL(tcp_child_process);
741EXPORT_SYMBOL(tcp_create_openreq_child);
742EXPORT_SYMBOL(tcp_timewait_state_process);