Commit 88799fe5 authored by Vlad Yasevich's avatar Vlad Yasevich
Browse files

SCTP: Correctly disable ADD-IP when AUTH is not supported.

parent 0ed90fb0
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1540,7 +1540,6 @@ struct sctp_association {
		__u8    asconf_capable;  /* Does peer support ADDIP? */
		__u8    prsctp_capable;  /* Can peer do PR-SCTP? */
		__u8	auth_capable;	 /* Is peer doing SCTP-AUTH? */
		__u8	addip_capable;	 /* Can peer do ADD-IP */

		__u32   adaptation_ind;	 /* Adaptation Code point. */

+1 −1
Original line number Diff line number Diff line
@@ -265,7 +265,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
	/* Assume that the peer recongizes ASCONF until reported otherwise
	 * via an ERROR chunk.
	 */
	asoc->peer.asconf_capable = 1;
	asoc->peer.asconf_capable = 0;

	/* Create an input queue.  */
	sctp_inq_init(&asoc->base.inqueue);
+3 −2
Original line number Diff line number Diff line
@@ -1847,7 +1847,7 @@ static void sctp_process_ext_param(struct sctp_association *asoc,
			    break;
		    case SCTP_CID_ASCONF:
		    case SCTP_CID_ASCONF_ACK:
			    asoc->peer.addip_capable = 1;
			    asoc->peer.asconf_capable = 1;
			    break;
		    default:
			    break;
@@ -2138,10 +2138,11 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,
	/* If the peer claims support for ADD-IP without support
	 * for AUTH, disable support for ADD-IP.
	 */
	if (asoc->peer.addip_capable && !asoc->peer.auth_capable) {
	if (asoc->peer.asconf_capable && !asoc->peer.auth_capable) {
		asoc->peer.addip_disabled_mask |= (SCTP_PARAM_ADD_IP |
						  SCTP_PARAM_DEL_IP |
						  SCTP_PARAM_SET_PRIMARY);
		asoc->peer.asconf_capable = 0;
	}

	/* Walk list of transports, removing transports in the UNKNOWN state. */