aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-09-04 12:28:02 -0400
committerDavid S. Miller <davem@davemloft.net>2013-09-04 12:28:02 -0400
commit48f8e0af8668351e249f817406c770a36e2274db (patch)
treeccc4d0f20ab64aba3de1ab6b0c797bbf6b1d678c /net/ipv6
parentc995ae2259ee36caf48bbfacf40111998dacd4af (diff)
parent1205e1fa615805c9efa97303b552cf445965752a (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
Pablo Neira Ayuso says: ==================== The following batch contains: * Three fixes for the new synproxy target available in your net-next tree, from Jesper D. Brouer and Patrick McHardy. * One fix for TCPMSS to correctly handling the fragmentation case, from Phil Oester. I'll pass this one to -stable. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/netfilter/ip6t_SYNPROXY.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/net/ipv6/netfilter/ip6t_SYNPROXY.c b/net/ipv6/netfilter/ip6t_SYNPROXY.c
index 4270a9b145e5..19cfea8dbcaa 100644
--- a/net/ipv6/netfilter/ip6t_SYNPROXY.c
+++ b/net/ipv6/netfilter/ip6t_SYNPROXY.c
@@ -284,7 +284,7 @@ synproxy_tg6(struct sk_buff *skb, const struct xt_action_param *par)
284 284
285 synproxy_parse_options(skb, par->thoff, th, &opts); 285 synproxy_parse_options(skb, par->thoff, th, &opts);
286 286
287 if (th->syn) { 287 if (th->syn && !(th->ack || th->fin || th->rst)) {
288 /* Initial SYN from client */ 288 /* Initial SYN from client */
289 this_cpu_inc(snet->stats->syn_received); 289 this_cpu_inc(snet->stats->syn_received);
290 290
@@ -300,11 +300,15 @@ synproxy_tg6(struct sk_buff *skb, const struct xt_action_param *par)
300 XT_SYNPROXY_OPT_ECN); 300 XT_SYNPROXY_OPT_ECN);
301 301
302 synproxy_send_client_synack(skb, th, &opts); 302 synproxy_send_client_synack(skb, th, &opts);
303 } else if (th->ack && !(th->fin || th->rst)) 303 return NF_DROP;
304
305 } else if (th->ack && !(th->fin || th->rst || th->syn)) {
304 /* ACK from client */ 306 /* ACK from client */
305 synproxy_recv_client_ack(snet, skb, th, &opts, ntohl(th->seq)); 307 synproxy_recv_client_ack(snet, skb, th, &opts, ntohl(th->seq));
308 return NF_DROP;
309 }
306 310
307 return NF_DROP; 311 return XT_CONTINUE;
308} 312}
309 313
310static unsigned int ipv6_synproxy_hook(unsigned int hooknum, 314static unsigned int ipv6_synproxy_hook(unsigned int hooknum,