Thread (16 messages) 16 messages, 3 authors, 2019-08-20

Re: [PATCH net-next 4/8] sctp: add SCTP_ASCONF_SUPPORTED sockopt

From: Xin Long <lucien.xin@gmail.com>
Date: 2019-08-19 15:19:24
Also in: linux-sctp

On Mon, Aug 19, 2019 at 10:58 PM Marcelo Ricardo Leitner
[off-list ref] wrote:
On Mon, Aug 19, 2019 at 10:02:46PM +0800, Xin Long wrote:
quoted
+static int sctp_setsockopt_asconf_supported(struct sock *sk,
+                                         char __user *optval,
+                                         unsigned int optlen)
+{
+     struct sctp_assoc_value params;
+     struct sctp_association *asoc;
+     struct sctp_endpoint *ep;
+     int retval = -EINVAL;
+
+     if (optlen != sizeof(params))
+             goto out;
+
+     if (copy_from_user(&params, optval, optlen)) {
+             retval = -EFAULT;
+             goto out;
+     }
+
+     asoc = sctp_id2assoc(sk, params.assoc_id);
+     if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
+         sctp_style(sk, UDP))
+             goto out;
+
+     ep = sctp_sk(sk)->ep;
+     ep->asconf_enable = !!params.assoc_value;
Considering this will be negotiated on handshake, shouldn't it deny
changes to Established asocs? (Same for Auth)
ep->asconf_enable is for 'furture' asocs, and furture
asoc->peer.asconf_capable will be negotiated according to
peer ep->asconf_enable (EXT chunk) and local ep->asconf_enable.

It won't affect the 'current'/Established asocs, and the Established
asocs have asoc->peer.asconf_capable, which can't be changed by sockopt.
quoted
+
+     if (ep->asconf_enable && ep->auth_enable) {
+             sctp_auth_ep_add_chunkid(ep, SCTP_CID_ASCONF);
+             sctp_auth_ep_add_chunkid(ep, SCTP_CID_ASCONF_ACK);
+     }
+
+     retval = 0;
+
+out:
+     return retval;
+}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help