aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/tcp_ipv6.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r--net/ipv6/tcp_ipv6.c15
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,