ipv4: Namespaceify tcp_tw_recycle and tcp_max_tw_buckets knob
Different namespace application might require fast recycling TIME-WAIT sockets independently of the host. Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
801822d1be
commit
1946e672c1
@@ -123,6 +123,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
|
||||
struct dst_entry *dst;
|
||||
int addr_type;
|
||||
int err;
|
||||
struct inet_timewait_death_row *tcp_death_row = &sock_net(sk)->ipv4.tcp_death_row;
|
||||
|
||||
if (addr_len < SIN6_LEN_RFC2133)
|
||||
return -EINVAL;
|
||||
@@ -258,7 +259,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
|
||||
sk->sk_gso_type = SKB_GSO_TCPV6;
|
||||
ip6_dst_store(sk, dst, NULL, NULL);
|
||||
|
||||
if (tcp_death_row.sysctl_tw_recycle &&
|
||||
if (tcp_death_row->sysctl_tw_recycle &&
|
||||
!tp->rx_opt.ts_recent_stamp &&
|
||||
ipv6_addr_equal(&fl6.daddr, &sk->sk_v6_daddr))
|
||||
tcp_fetch_timewait_stamp(sk, dst);
|
||||
@@ -273,7 +274,7 @@ static int tcp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
|
||||
inet->inet_dport = usin->sin6_port;
|
||||
|
||||
tcp_set_state(sk, TCP_SYN_SENT);
|
||||
err = inet6_hash_connect(&tcp_death_row, sk);
|
||||
err = inet6_hash_connect(tcp_death_row, sk);
|
||||
if (err)
|
||||
goto late_failure;
|
||||
|
||||
@@ -1948,7 +1949,7 @@ static void __net_exit tcpv6_net_exit(struct net *net)
|
||||
|
||||
static void __net_exit tcpv6_net_exit_batch(struct list_head *net_exit_list)
|
||||
{
|
||||
inet_twsk_purge(&tcp_hashinfo, &tcp_death_row, AF_INET6);
|
||||
inet_twsk_purge(&tcp_hashinfo, AF_INET6);
|
||||
}
|
||||
|
||||
static struct pernet_operations tcpv6_net_ops = {
|
||||
|
Reference in New Issue
Block a user