: Bring MAX_BURST socket option into ietf API extension compliance
Subsystems (3)
PATCH 1/1 : Bring MAX_BURST socket option into ietf API extension compliance
From: Neil Horman <[email protected]>
Brings max_burst socket option set/get into line with the latest ietf socket extensions api draft, while maintaining backwards compatibility.
Signed-off-by Neil Horman <[email protected]>
Signed-off-by Vlad Yasevich <[email protected]>
--- net/sctp/socket.c | 73 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 60 insertions(+), 13 deletions(-)
net/sctp/socket.c +60 -13
@@ -2933,17 +2933,39 @@ static int sctp_setsockopt_maxburst(struct sock *sk, char __user *optval, int optlen) { +struct sctp_assoc_value params; +struct sctp_sock *sp; +struct sctp_association *asoc;int val; +int assoc_id =0 ; -if (optlen !=sizeof (int )) +if (optlen <sizeof (int ))return -EINVAL ; -if (get_user (val, (int __user *)optval)) -return -EFAULT ; -if (val <0 ) +if (optlen ==sizeof (int )) { +printk (KERN_WARNING +"SCTP: Use of int in max_burst socket option deprecated\n" ); +printk (KERN_WARNING +"SCTP: Use struct sctp_assoc_value instead\n" ); +if (copy_from_user (&val, optval, optlen)) +return -EFAULT ; + }else if (optlen ==sizeof (struct sctp_assoc_value )) { +if (copy_from_user (¶ms, optval, optlen)) +return -EFAULT ; + val = params.assoc_value; + assoc_id = params.assoc_id; + }else return -EINVAL ; -sctp_sk (sk)->max_burst = val; + sp =sctp_sk (sk); + +if (assoc_id !=0 ) { + asoc =sctp_id2assoc (sk, assoc_id); +if (!asoc) +return -EINVAL ; + asoc->max_burst = val; + }else + sp->max_burst = val;return 0 ; }
@@ -5005,20 +5027,45 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len,char __user *optval, int __user *optlen) { - int val; + struct sctp_assoc_value params; +struct sctp_sock *sp; +struct sctp_association *asoc;if (len <sizeof (int ))return -EINVAL ; - len =sizeof (int ); +if (len ==sizeof (int )) { +printk (KERN_WARNING +"SCTP: Use of int in max_burst socket option deprecated\n" ); +printk (KERN_WARNING +"SCTP: Use struct sctp_assoc_value instead\n" ); + params.assoc_id =0 ; + }else if (len ==sizeof (struct sctp_assoc_value )) { +if (copy_from_user (¶ms, optval, len)) +return -EFAULT ; + }else +return -EINVAL ; - val =sctp_sk (sk)->max_burst; -if (put_user (len, optlen)) -return -EFAULT ; -if (copy_to_user (optval, &val, len)) -return -EFAULT ; + sp =sctp_sk (sk); + +if (params.assoc_id !=0 ) { + asoc =sctp_id2assoc (sk, params.assoc_id); +if (!asoc) +return -EINVAL ; + params.assoc_value = asoc->max_burst; + }else + params.assoc_value = sp->max_burst; + +if (len ==sizeof (int )) { +if (copy_to_user (optval, ¶ms.assoc_value, len)) +return -EFAULT ; + }else { +if (copy_to_user (optval, ¶ms, len)) +return -EFAULT ; + } + +return 0 ; -return -ENOTSUPP ; } static int sctp_getsockopt_hmac_ident(struct sock *sk, int len,
Signature · 1 line
1.5.2.5
From: Vlad Yasevich <[email protected]>
Date: Tue, 04 Mar 2008 22:46:33 -0500
Quoted 7 lines
From: Neil Horman <[email protected]>
Brings
max_burstsocket option set/get into line with the latest ietf socket extensions api draft, while maintaining backwards compatibility.Signed-off-by Neil Horman <[email protected]>Signed-off-by Vlad Yasevich <[email protected]>
Applied, thanks!