|
@@ -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
|