FreeBSD/sys/netinet/sctp_asconf.c
/*
 * process an ADD/DELETE IP ack from peer.
 * addr: corresponding sctp_ifa to the address being added/deleted.
 * type: SCTP_ADD_IP_ADDRESS or SCTP_DEL_IP_ADDRESS.
 * flag: 1=success, 0=failure.
 */
process an ADD/DELETE IP ack from peer.
addr: corresponding sctp_ifa to the address being added/deleted.
process an ADD / DELETE IP ack from peer . addr : corresponding sctp_ifa to the address being added / deleted .
static void
sctp_asconf_addr_mgmt_ack(struct sctp_tcb *stcb, struct sctp_ifa *addr, uint32_t flag)
{
	if (flag) {
		sctp_del_local_addr_restricted(stcb, addr);
		if (sctp_is_mobility_feature_on(stcb->sctp_ep,
		    SCTP_MOBILITY_BASE) ||
		    sctp_is_mobility_feature_on(stcb->sctp_ep,
		    SCTP_MOBILITY_FASTHANDOFF)) {
			sctp_path_check_and_react(stcb, addr);
			return;
		}
		sctp_asconf_nets_cleanup(stcb, addr->ifn_p);
	}
}
static void sctp_asconf_addr_mgmt_ack ( struct sctp_tcb * stcb , struct sctp_ifa * addr , uint32_t flag ) { if ( flag ) { sctp_del_local_addr_restricted ( stcb , addr ) ; if ( sctp_is_mobility_feature_on ( stcb -> sctp_ep , SCTP_MOBILITY_BASE ) || sctp_is_mobility_feature_on ( stcb -> sctp_ep , SCTP_MOBILITY_FASTHANDOFF ) ) { sctp_path_check_and_react ( stcb , addr ) ; return ; } sctp_asconf_nets_cleanup ( stcb , addr -> ifn_p ) ; } }
process an ADD/DELETE IP ack from peer.
process an ADD / DELETE IP ack from peer .
/*
	 * do the necessary asoc list work- if we get a failure indication,
	 * leave the address on the assoc's restricted list.  If we get a
	 * success indication, remove the address from the restricted list.
	 */ /*
	 * Note: this will only occur for ADD_IP_ADDRESS, since
	 * DEL_IP_ADDRESS is never actually added to the list...
	 */ /* success case, so remove from the restricted list */ /* clear any cached/topologically incorrect source addresses */ /* else, leave it on the list */