diff options
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r-- | net/ipv4/tcp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index a17a5a72b98..b22d4501054 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -505,6 +505,15 @@ int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg) | |||
505 | else | 505 | else |
506 | answ = tp->write_seq - tp->snd_una; | 506 | answ = tp->write_seq - tp->snd_una; |
507 | break; | 507 | break; |
508 | case SIOCOUTQNSD: | ||
509 | if (sk->sk_state == TCP_LISTEN) | ||
510 | return -EINVAL; | ||
511 | |||
512 | if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) | ||
513 | answ = 0; | ||
514 | else | ||
515 | answ = tp->write_seq - tp->snd_nxt; | ||
516 | break; | ||
508 | default: | 517 | default: |
509 | return -ENOIOCTLCMD; | 518 | return -ENOIOCTLCMD; |
510 | } | 519 | } |