asconf_ack
struct sctp_chunk *asconf_ack;
asconf_ack = sctp_make_asconf_ack(asoc, serial, chunk_len * 4);
if (!asconf_ack)
sctp_add_asconf_response(asconf_ack, param.addip->crr_id,
if (asconf_ack) {
sctp_chunk_hold(asconf_ack);
list_add_tail(&asconf_ack->transmitted_list,
return asconf_ack;
static __be16 sctp_get_asconf_response(struct sctp_chunk *asconf_ack,
asconf_ack_len = ntohs(asconf_ack->chunk_hdr->length) -
asconf_ack_param = (struct sctp_addip_param *)(asconf_ack->skb->data +
struct sctp_chunk *asconf_ack)
if (asconf_ack->skb->len == sizeof(struct sctp_addiphdr))
err_code = sctp_get_asconf_response(asconf_ack,
struct sctp_chunk *asconf_ack = NULL;
asconf_ack = sctp_process_asconf((struct sctp_association *)
if (!asconf_ack)
asconf_ack = sctp_assoc_lookup_asconf_ack(asoc, hdr->serial);
if (!asconf_ack)
asconf_ack->transport = NULL;
asconf_ack->dest = chunk->source;
sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(asconf_ack));
struct sctp_chunk *asconf_ack = arg;
if (!sctp_vtag_verify(asconf_ack, asoc)) {
if (!sctp_chunk_length_valid(asconf_ack,
(!net->sctp.addip_noauth && !asconf_ack->auth))
addip_hdr = (struct sctp_addiphdr *)asconf_ack->skb->data;
if (!sctp_verify_asconf(asoc, asconf_ack, false, &err_param))
abort = sctp_make_abort(asoc, asconf_ack,
asconf_ack))
abort = sctp_make_abort(asoc, asconf_ack,