|
@@ -419,10 +419,17 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc,
|
|
|
if (!retval)
|
|
|
goto nomem_chunk;
|
|
|
|
|
|
- /* Per the advice in RFC 2960 6.4, send this reply to
|
|
|
- * the source of the INIT packet.
|
|
|
+ /* RFC 2960 6.4 Multi-homed SCTP Endpoints
|
|
|
+ *
|
|
|
+ * An endpoint SHOULD transmit reply chunks (e.g., SACK,
|
|
|
+ * HEARTBEAT ACK, * etc.) to the same destination transport
|
|
|
+ * address from which it received the DATA or control chunk
|
|
|
+ * to which it is replying.
|
|
|
+ *
|
|
|
+ * [INIT ACK back to where the INIT came from.]
|
|
|
*/
|
|
|
retval->transport = chunk->transport;
|
|
|
+
|
|
|
retval->subh.init_hdr =
|
|
|
sctp_addto_chunk(retval, sizeof(initack), &initack);
|
|
|
retval->param_hdr.v = sctp_addto_chunk(retval, addrs_len, addrs.v);
|
|
@@ -461,18 +468,6 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc,
|
|
|
/* We need to remove the const qualifier at this point. */
|
|
|
retval->asoc = (struct sctp_association *) asoc;
|
|
|
|
|
|
- /* RFC 2960 6.4 Multi-homed SCTP Endpoints
|
|
|
- *
|
|
|
- * An endpoint SHOULD transmit reply chunks (e.g., SACK,
|
|
|
- * HEARTBEAT ACK, * etc.) to the same destination transport
|
|
|
- * address from which it received the DATA or control chunk
|
|
|
- * to which it is replying.
|
|
|
- *
|
|
|
- * [INIT ACK back to where the INIT came from.]
|
|
|
- */
|
|
|
- if (chunk)
|
|
|
- retval->transport = chunk->transport;
|
|
|
-
|
|
|
nomem_chunk:
|
|
|
kfree(cookie);
|
|
|
nomem_cookie:
|