• Cambda Zhu's avatar
    net: Replace the limit of TCP_LINGER2 with TCP_FIN_TIMEOUT_MAX · f0628c52
    Cambda Zhu authored
    This patch changes the behavior of TCP_LINGER2 about its limit. The
    sysctl_tcp_fin_timeout used to be the limit of TCP_LINGER2 but now it's
    only the default value. A new macro named TCP_FIN_TIMEOUT_MAX is added
    as the limit of TCP_LINGER2, which is 2 minutes.
    
    Since TCP_LINGER2 used sysctl_tcp_fin_timeout as the default value
    and the limit in the past, the system administrator cannot set the
    default value for most of sockets and let some sockets have a greater
    timeout. It might be a mistake that let the sysctl to be the limit of
    the TCP_LINGER2. Maybe we can add a new sysctl to set the max of
    TCP_LINGER2, but FIN-WAIT-2 timeout is usually no need to be too long
    and 2 minutes are legal considering TCP specs.
    
    Changes in v3:
    - Remove the new socket option and change the TCP_LINGER2 behavior so
      that the timeout can be set to value between sysctl_tcp_fin_timeout
      and 2 minutes.
    
    Changes in v2:
    - Add int overflow check for the new socket option.
    
    Changes in v1:
    - Add a new socket option to set timeout greater than
      sysctl_tcp_fin_timeout.
    Signed-off-by: default avatarCambda Zhu <cambda@linux.alibaba.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f0628c52
tcp.c 106 KB