tcp: Report mss_clamp with TCP_MAXSEG option in repair mode
authorPavel Emelyanov <xemul@parallels.com>
Thu, 19 Apr 2012 03:41:32 +0000 (03:41 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 21 Apr 2012 19:52:25 +0000 (15:52 -0400)
The mss_clamp is the only connection-time negotiated option which
cannot be obtained from the user space. Make the TCP_MAXSEG sockopt
report one in the repair mode.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c

index 47e2f49..b4e690d 100644 (file)
@@ -2659,6 +2659,8 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
                val = tp->mss_cache;
                if (!val && ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
                        val = tp->rx_opt.user_mss;
+               if (tp->repair)
+                       val = tp->rx_opt.mss_clamp;
                break;
        case TCP_NODELAY:
                val = !!(tp->nonagle&TCP_NAGLE_OFF);