Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 214348
b: refs/heads/master
c: 65040c3
h: refs/heads/master
v: v3
  • Loading branch information
Diego Elio 'Flameeyes' Pettenò authored and David S. Miller committed Sep 8, 2010
1 parent 3e78c14 commit 7876800
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2edae08e5b75269855fef3c74fe4292c066e7c33
refs/heads/master: 65040c33ee8d0199ab7686402bffdbf9e1e26cbe
35 changes: 34 additions & 1 deletion trunk/net/sctp/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -3592,7 +3592,40 @@ SCTP_STATIC struct sock *sctp_accept(struct sock *sk, int flags, int *err)
/* The SCTP ioctl handler. */
SCTP_STATIC int sctp_ioctl(struct sock *sk, int cmd, unsigned long arg)
{
return -ENOIOCTLCMD;
int rc = -ENOTCONN;

sctp_lock_sock(sk);

/*
* SEQPACKET-style sockets in LISTENING state are valid, for
* SCTP, so only discard TCP-style sockets in LISTENING state.
*/
if (sctp_style(sk, TCP) && sctp_sstate(sk, LISTENING))
goto out;

switch (cmd) {
case SIOCINQ: {
struct sk_buff *skb;
unsigned int amount = 0;

skb = skb_peek(&sk->sk_receive_queue);
if (skb != NULL) {
/*
* We will only return the amount of this packet since
* that is all that will be read.
*/
amount = skb->len;
}
rc = put_user(amount, (int __user *)arg);
}
break;
default:
rc = -ENOIOCTLCMD;
break;
}
out:
sctp_release_sock(sk);
return rc;
}

/* This is the function which gets called during socket creation to
Expand Down

0 comments on commit 7876800

Please sign in to comment.