diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 15 | 
1 files changed, 7 insertions, 8 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 6e1649d58533..5c71501fc917 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c  | |||
| @@ -963,7 +963,8 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
| 963 | if (!ipv6_unicast_destination(skb)) | 963 | if (!ipv6_unicast_destination(skb)) | 
| 964 | goto drop; | 964 | goto drop; | 
| 965 | 965 | ||
| 966 | if (inet_csk_reqsk_queue_is_full(sk) && !isn) { | 966 | if ((sysctl_tcp_syncookies == 2 || | 
| 967 | inet_csk_reqsk_queue_is_full(sk)) && !isn) { | ||
| 967 | want_cookie = tcp_syn_flood_action(sk, skb, "TCPv6"); | 968 | want_cookie = tcp_syn_flood_action(sk, skb, "TCPv6"); | 
| 968 | if (!want_cookie) | 969 | if (!want_cookie) | 
| 969 | goto drop; | 970 | goto drop; | 
| @@ -1237,8 +1238,6 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb, | |||
| 1237 | newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; | 1238 | newtp->advmss = tcp_sk(sk)->rx_opt.user_mss; | 
| 1238 | 1239 | ||
| 1239 | tcp_initialize_rcv_mss(newsk); | 1240 | tcp_initialize_rcv_mss(newsk); | 
| 1240 | tcp_synack_rtt_meas(newsk, req); | ||
| 1241 | newtp->total_retrans = req->num_retrans; | ||
| 1242 | 1241 | ||
| 1243 | newinet->inet_daddr = newinet->inet_saddr = LOOPBACK4_IPV6; | 1242 | newinet->inet_daddr = newinet->inet_saddr = LOOPBACK4_IPV6; | 
| 1244 | newinet->inet_rcv_saddr = LOOPBACK4_IPV6; | 1243 | newinet->inet_rcv_saddr = LOOPBACK4_IPV6; | 
| @@ -1361,8 +1360,7 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) | |||
| 1361 | } | 1360 | } | 
| 1362 | } | 1361 | } | 
| 1363 | 1362 | ||
| 1364 | if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len)) | 1363 | tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len); | 
| 1365 | goto reset; | ||
| 1366 | if (opt_skb) | 1364 | if (opt_skb) | 
| 1367 | goto ipv6_pktoptions; | 1365 | goto ipv6_pktoptions; | 
| 1368 | return 0; | 1366 | return 0; | 
| @@ -1427,7 +1425,7 @@ ipv6_pktoptions: | |||
| 1427 | if (np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) | 1425 | if (np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) | 
| 1428 | np->mcast_hops = ipv6_hdr(opt_skb)->hop_limit; | 1426 | np->mcast_hops = ipv6_hdr(opt_skb)->hop_limit; | 
| 1429 | if (np->rxopt.bits.rxtclass) | 1427 | if (np->rxopt.bits.rxtclass) | 
| 1430 | np->rcv_tclass = ipv6_get_dsfield(ipv6_hdr(skb)); | 1428 | np->rcv_tclass = ipv6_get_dsfield(ipv6_hdr(opt_skb)); | 
| 1431 | if (ipv6_opt_accepted(sk, opt_skb)) { | 1429 | if (ipv6_opt_accepted(sk, opt_skb)) { | 
| 1432 | skb_set_owner_r(opt_skb, sk); | 1430 | skb_set_owner_r(opt_skb, sk); | 
| 1433 | opt_skb = xchg(&np->pktoptions, opt_skb); | 1431 | opt_skb = xchg(&np->pktoptions, opt_skb); | 
| @@ -1732,7 +1730,7 @@ static void get_openreq6(struct seq_file *seq, | |||
| 1732 | 1730 | ||
| 1733 | seq_printf(seq, | 1731 | seq_printf(seq, | 
| 1734 | "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " | 1732 | "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " | 
| 1735 | "%02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK\n", | 1733 | "%02X %08X:%08X %02X:%08lX %08X %5u %8d %d %d %pK\n", | 
| 1736 | i, | 1734 | i, | 
| 1737 | src->s6_addr32[0], src->s6_addr32[1], | 1735 | src->s6_addr32[0], src->s6_addr32[1], | 
| 1738 | src->s6_addr32[2], src->s6_addr32[3], | 1736 | src->s6_addr32[2], src->s6_addr32[3], | 
| @@ -1783,7 +1781,7 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) | |||
| 1783 | 1781 | ||
| 1784 | seq_printf(seq, | 1782 | seq_printf(seq, | 
| 1785 | "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " | 1783 | "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " | 
| 1786 | "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %pK %lu %lu %u %u %d\n", | 1784 | "%02X %08X:%08X %02X:%08lX %08X %5u %8d %lu %d %pK %lu %lu %u %u %d\n", | 
| 1787 | i, | 1785 | i, | 
| 1788 | src->s6_addr32[0], src->s6_addr32[1], | 1786 | src->s6_addr32[0], src->s6_addr32[1], | 
| 1789 | src->s6_addr32[2], src->s6_addr32[3], srcp, | 1787 | src->s6_addr32[2], src->s6_addr32[3], srcp, | 
| @@ -1926,6 +1924,7 @@ struct proto tcpv6_prot = { | |||
| 1926 | .unhash = inet_unhash, | 1924 | .unhash = inet_unhash, | 
| 1927 | .get_port = inet_csk_get_port, | 1925 | .get_port = inet_csk_get_port, | 
| 1928 | .enter_memory_pressure = tcp_enter_memory_pressure, | 1926 | .enter_memory_pressure = tcp_enter_memory_pressure, | 
| 1927 | .stream_memory_free = tcp_stream_memory_free, | ||
| 1929 | .sockets_allocated = &tcp_sockets_allocated, | 1928 | .sockets_allocated = &tcp_sockets_allocated, | 
| 1930 | .memory_allocated = &tcp_memory_allocated, | 1929 | .memory_allocated = &tcp_memory_allocated, | 
| 1931 | .memory_pressure = &tcp_memory_pressure, | 1930 | .memory_pressure = &tcp_memory_pressure, | 
