mirror of https://gitee.com/openkylin/linux.git
sctp: ASCONF-ACK with Unresolvable Address should be sent
RFC 5061: This is an opaque integer assigned by the sender to identify each request parameter. The receiver of the ASCONF Chunk will copy this 32-bit value into the ASCONF Response Correlation ID field of the ASCONF-ACK response parameter. The sender of the ASCONF can use this same value in the ASCONF-ACK to find which request the response is for. Note that the receiver MUST NOT change this 32-bit value. Address Parameter: TLV This field contains an IPv4 or IPv6 address parameter, as described in Section 3.3.2.1 of [RFC4960]. ASCONF chunk with Error Cause Indication Parameter (Unresolvable Address) should be sent if the Delete IP Address is not part of the association. Endpoint A Endpoint B (ESTABLISHED) (ESTABLISHED) ASCONF -----------------> (Delete IP Address) <----------------- ASCONF-ACK (Unresolvable Address) Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Vlad Yasevich <vyasevich@gmail.com> Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7084a31589
commit
7c5a946181
|
@ -3090,8 +3090,19 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
|
|||
sctp_assoc_set_primary(asoc, asconf->transport);
|
||||
sctp_assoc_del_nonprimary_peers(asoc,
|
||||
asconf->transport);
|
||||
} else
|
||||
sctp_assoc_del_peer(asoc, &addr);
|
||||
return SCTP_ERROR_NO_ERROR;
|
||||
}
|
||||
|
||||
/* If the address is not part of the association, the
|
||||
* ASCONF-ACK with Error Cause Indication Parameter
|
||||
* which including cause of Unresolvable Address should
|
||||
* be sent.
|
||||
*/
|
||||
peer = sctp_assoc_lookup_paddr(asoc, &addr);
|
||||
if (!peer)
|
||||
return SCTP_ERROR_DNS_FAILED;
|
||||
|
||||
sctp_assoc_rm_peer(asoc, peer);
|
||||
break;
|
||||
case SCTP_PARAM_SET_PRIMARY:
|
||||
/* ADDIP Section 4.2.4
|
||||
|
|
Loading…
Reference in New Issue