*/
static int sctp_setsockopt_initmsg(struct sock *sk, char *optval, int optlen)
{
+ struct sctp_initmsg sinit;
+ struct sctp_opt *sp = sctp_sk(sk);
+
if (optlen != sizeof(struct sctp_initmsg))
return -EINVAL;
- if (copy_from_user(&sctp_sk(sk)->initmsg, optval, optlen))
+ if (copy_from_user(&sinit, optval, optlen))
return -EFAULT;
+
+ if (sinit.sinit_num_ostreams)
+ sp->initmsg.sinit_num_ostreams = sinit.sinit_num_ostreams;
+ if (sinit.sinit_max_instreams)
+ sp->initmsg.sinit_max_instreams = sinit.sinit_max_instreams;
+ if (sinit.sinit_max_attempts)
+ sp->initmsg.sinit_max_attempts = sinit.sinit_max_attempts;
+ if (sinit.sinit_max_init_timeo)
+ sp->initmsg.sinit_max_init_timeo = sinit.sinit_max_init_timeo;
+
return 0;
}