diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 31 | 
1 files changed, 3 insertions, 28 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index d1fb63f4aeb..3c9fa618b69 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -531,20 +531,6 @@ static int tcp_v6_rtx_synack(struct sock *sk, struct request_sock *req,  	return tcp_v6_send_synack(sk, req, rvp);  } -static inline void syn_flood_warning(struct sk_buff *skb) -{ -#ifdef CONFIG_SYN_COOKIES -	if (sysctl_tcp_syncookies) -		printk(KERN_INFO -		       "TCPv6: Possible SYN flooding on port %d. " -		       "Sending cookies.\n", ntohs(tcp_hdr(skb)->dest)); -	else -#endif -		printk(KERN_INFO -		       "TCPv6: Possible SYN flooding on port %d. " -		       "Dropping request.\n", ntohs(tcp_hdr(skb)->dest)); -} -  static void tcp_v6_reqsk_destructor(struct request_sock *req)  {  	kfree_skb(inet6_rsk(req)->pktopts); @@ -1179,11 +1165,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)  	struct tcp_sock *tp = tcp_sk(sk);  	__u32 isn = TCP_SKB_CB(skb)->when;  	struct dst_entry *dst = NULL; -#ifdef CONFIG_SYN_COOKIES  	int want_cookie = 0; -#else -#define want_cookie 0 -#endif  	if (skb->protocol == htons(ETH_P_IP))  		return tcp_v4_conn_request(sk, skb); @@ -1192,14 +1174,9 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)  		goto drop;  	if (inet_csk_reqsk_queue_is_full(sk) && !isn) { -		if (net_ratelimit()) -			syn_flood_warning(skb); -#ifdef CONFIG_SYN_COOKIES -		if (sysctl_tcp_syncookies) -			want_cookie = 1; -		else -#endif -		goto drop; +		want_cookie = tcp_syn_flood_action(sk, skb, "TCPv6"); +		if (!want_cookie) +			goto drop;  	}  	if (sk_acceptq_is_full(sk) && inet_csk_reqsk_queue_young(sk) > 1) @@ -1249,9 +1226,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)  		while (l-- > 0)  			*c++ ^= *hash_location++; -#ifdef CONFIG_SYN_COOKIES  		want_cookie = 0;	/* not our kind of cookie */ -#endif  		tmp_ext.cookie_out_never = 0; /* false */  		tmp_ext.cookie_plus = tmp_opt.cookie_plus;  	} else if (!tp->rx_opt.cookie_in_always) {  |