Lines Matching refs:asoc
64 static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc,
66 static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc,
68 static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc,
71 const struct sctp_association *asoc,
75 static int sctp_process_param(struct sctp_association *asoc,
92 struct sctp_association *asoc = chunk->asoc; in sctp_control_set_owner_w() local
102 skb->sk = asoc ? asoc->base.sk : NULL; in sctp_control_set_owner_w()
217 struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, in sctp_make_init() argument
221 struct net *net = sock_net(asoc->base.sk); in sctp_make_init()
222 struct sctp_endpoint *ep = asoc->ep; in sctp_make_init()
248 init.init_tag = htonl(asoc->c.my_vtag); in sctp_make_init()
249 init.a_rwnd = htonl(asoc->rwnd); in sctp_make_init()
250 init.num_outbound_streams = htons(asoc->c.sinit_num_ostreams); in sctp_make_init()
251 init.num_inbound_streams = htons(asoc->c.sinit_max_instreams); in sctp_make_init()
252 init.initial_tsn = htonl(asoc->c.initial_tsn); in sctp_make_init()
255 sp = sctp_sk(asoc->base.sk); in sctp_make_init()
284 chunksize += sizeof(asoc->c.auth_random); in sctp_make_init()
287 auth_hmacs = (sctp_paramhdr_t *)asoc->c.auth_hmacs; in sctp_make_init()
294 auth_chunks = (sctp_paramhdr_t *)asoc->c.auth_chunks; in sctp_make_init()
321 retval = sctp_make_control(asoc, SCTP_CID_INIT, 0, chunksize); in sctp_make_init()
368 sctp_addto_chunk(retval, sizeof(asoc->c.auth_random), in sctp_make_init()
369 asoc->c.auth_random); in sctp_make_init()
382 struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, in sctp_make_init_ack() argument
405 addrs = sctp_bind_addrs_to_raw(&asoc->base.bind_addr, &addrs_len, gfp); in sctp_make_init_ack()
407 initack.init_tag = htonl(asoc->c.my_vtag); in sctp_make_init_ack()
408 initack.a_rwnd = htonl(asoc->rwnd); in sctp_make_init_ack()
409 initack.num_outbound_streams = htons(asoc->c.sinit_num_ostreams); in sctp_make_init_ack()
410 initack.num_inbound_streams = htons(asoc->c.sinit_max_instreams); in sctp_make_init_ack()
411 initack.initial_tsn = htonl(asoc->c.initial_tsn); in sctp_make_init_ack()
416 cookie = sctp_pack_cookie(asoc->ep, asoc, chunk, &cookie_len, in sctp_make_init_ack()
424 sp = sctp_sk(asoc->base.sk); in sctp_make_init_ack()
428 if (asoc->peer.ecn_capable) in sctp_make_init_ack()
431 if (asoc->peer.prsctp_capable) in sctp_make_init_ack()
434 if (asoc->peer.asconf_capable) { in sctp_make_init_ack()
443 if (asoc->peer.auth_capable) { in sctp_make_init_ack()
444 auth_random = (sctp_paramhdr_t *)asoc->c.auth_random; in sctp_make_init_ack()
447 auth_hmacs = (sctp_paramhdr_t *)asoc->c.auth_hmacs; in sctp_make_init_ack()
453 auth_chunks = (sctp_paramhdr_t *)asoc->c.auth_chunks; in sctp_make_init_ack()
468 retval = sctp_make_control(asoc, SCTP_CID_INIT_ACK, 0, chunksize); in sctp_make_init_ack()
487 if (asoc->peer.ecn_capable) in sctp_make_init_ack()
497 if (asoc->peer.prsctp_capable) in sctp_make_init_ack()
507 if (asoc->peer.auth_capable) { in sctp_make_init_ack()
519 retval->asoc = (struct sctp_association *) asoc; in sctp_make_init_ack()
562 struct sctp_chunk *sctp_make_cookie_echo(const struct sctp_association *asoc, in sctp_make_cookie_echo() argument
569 cookie = asoc->peer.cookie; in sctp_make_cookie_echo()
570 cookie_len = asoc->peer.cookie_len; in sctp_make_cookie_echo()
573 retval = sctp_make_control(asoc, SCTP_CID_COOKIE_ECHO, 0, cookie_len); in sctp_make_cookie_echo()
613 struct sctp_chunk *sctp_make_cookie_ack(const struct sctp_association *asoc, in sctp_make_cookie_ack() argument
618 retval = sctp_make_control(asoc, SCTP_CID_COOKIE_ACK, 0, 0); in sctp_make_cookie_ack()
658 struct sctp_chunk *sctp_make_cwr(const struct sctp_association *asoc, in sctp_make_cwr() argument
666 retval = sctp_make_control(asoc, SCTP_CID_ECN_CWR, 0, in sctp_make_cwr()
693 struct sctp_chunk *sctp_make_ecne(const struct sctp_association *asoc, in sctp_make_ecne() argument
700 retval = sctp_make_control(asoc, SCTP_CID_ECN_ECNE, 0, in sctp_make_ecne()
714 struct sctp_chunk *sctp_make_datafrag_empty(struct sctp_association *asoc, in sctp_make_datafrag_empty() argument
737 retval = sctp_make_data(asoc, flags, chunk_len); in sctp_make_datafrag_empty()
752 struct sctp_chunk *sctp_make_sack(const struct sctp_association *asoc) in sctp_make_sack() argument
759 struct sctp_association *aptr = (struct sctp_association *)asoc; in sctp_make_sack()
760 struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map; in sctp_make_sack()
775 sack.a_rwnd = htonl(asoc->a_rwnd); in sctp_make_sack()
784 retval = sctp_make_control(asoc, SCTP_CID_SACK, 0, len); in sctp_make_sack()
818 retval->transport = asoc->peer.last_data_from; in sctp_make_sack()
843 list_for_each_entry(trans, &asoc->peer.transport_addr_list, in sctp_make_sack()
853 struct sctp_chunk *sctp_make_shutdown(const struct sctp_association *asoc, in sctp_make_shutdown() argument
860 ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map); in sctp_make_shutdown()
863 retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN, 0, in sctp_make_shutdown()
877 struct sctp_chunk *sctp_make_shutdown_ack(const struct sctp_association *asoc, in sctp_make_shutdown_ack() argument
882 retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN_ACK, 0, 0); in sctp_make_shutdown_ack()
900 const struct sctp_association *asoc, in sctp_make_shutdown_complete() argument
909 flags |= asoc ? 0 : SCTP_CHUNK_FLAG_T; in sctp_make_shutdown_complete()
911 retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN_COMPLETE, flags, 0); in sctp_make_shutdown_complete()
932 struct sctp_chunk *sctp_make_abort(const struct sctp_association *asoc, in sctp_make_abort() argument
942 if (!asoc) { in sctp_make_abort()
950 retval = sctp_make_control(asoc, SCTP_CID_ABORT, flags, hint); in sctp_make_abort()
969 const struct sctp_association *asoc, in sctp_make_abort_no_data() argument
975 retval = sctp_make_abort(asoc, chunk, sizeof(sctp_errhdr_t) in sctp_make_abort_no_data()
1003 struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *asoc, in sctp_make_abort_user() argument
1011 retval = sctp_make_abort(asoc, NULL, sizeof(sctp_errhdr_t) + paylen); in sctp_make_abort_user()
1068 const struct sctp_association *asoc, in sctp_make_abort_violation() argument
1076 retval = sctp_make_abort(asoc, chunk, sizeof(sctp_errhdr_t) + paylen in sctp_make_abort_violation()
1094 const struct sctp_association *asoc, in sctp_make_violation_paramlen() argument
1103 retval = sctp_make_abort(asoc, chunk, payload_len); in sctp_make_violation_paramlen()
1117 const struct sctp_association *asoc, in sctp_make_violation_max_retrans() argument
1124 retval = sctp_make_abort(asoc, chunk, payload_len); in sctp_make_violation_max_retrans()
1136 struct sctp_chunk *sctp_make_heartbeat(const struct sctp_association *asoc, in sctp_make_heartbeat() argument
1142 retval = sctp_make_control(asoc, SCTP_CID_HEARTBEAT, 0, sizeof(hbinfo)); in sctp_make_heartbeat()
1164 struct sctp_chunk *sctp_make_heartbeat_ack(const struct sctp_association *asoc, in sctp_make_heartbeat_ack() argument
1170 retval = sctp_make_control(asoc, SCTP_CID_HEARTBEAT_ACK, 0, paylen); in sctp_make_heartbeat_ack()
1196 const struct sctp_association *asoc, in sctp_make_op_error_space() argument
1202 retval = sctp_make_control(asoc, SCTP_CID_ERROR, 0, in sctp_make_op_error_space()
1229 const struct sctp_association *asoc, in sctp_make_op_error_fixed() argument
1232 size_t size = asoc ? asoc->pathmtu : 0; in sctp_make_op_error_fixed()
1237 return sctp_make_op_error_space(asoc, chunk, size); in sctp_make_op_error_fixed()
1241 struct sctp_chunk *sctp_make_op_error(const struct sctp_association *asoc, in sctp_make_op_error() argument
1248 retval = sctp_make_op_error_space(asoc, chunk, paylen + reserve_tail); in sctp_make_op_error()
1261 struct sctp_chunk *sctp_make_auth(const struct sctp_association *asoc) in sctp_make_auth() argument
1269 hmac_desc = sctp_auth_asoc_get_hmac(asoc); in sctp_make_auth()
1273 retval = sctp_make_control(asoc, SCTP_CID_AUTH, 0, in sctp_make_auth()
1279 auth_hdr.shkey_id = htons(asoc->active_key_id); in sctp_make_auth()
1311 const struct sctp_association *asoc, in sctp_chunkify() argument
1325 retval->asoc = (struct sctp_association *)asoc; in sctp_chunkify()
1363 static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc, in _sctp_make_chunk() argument
1383 sk = asoc ? asoc->base.sk : NULL; in _sctp_make_chunk()
1384 retval = sctp_chunkify(skb, asoc, sk); in _sctp_make_chunk()
1394 if (sctp_auth_send_cid(type, asoc)) in _sctp_make_chunk()
1402 static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc, in sctp_make_data() argument
1405 return _sctp_make_chunk(asoc, SCTP_CID_DATA, flags, paylen); in sctp_make_data()
1408 static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc, in sctp_make_control() argument
1411 struct sctp_chunk *chunk = _sctp_make_chunk(asoc, type, flags, paylen); in sctp_make_control()
1532 stream = &chunk->asoc->ssnmap->out; in sctp_chunk_assign_ssn()
1563 htonl(sctp_association_get_next_tsn(chunk->asoc)); in sctp_chunk_assign_tsn()
1573 struct sctp_association *asoc; in sctp_make_temp_asoc() local
1580 asoc = sctp_association_new(ep, ep->base.sk, scope, gfp); in sctp_make_temp_asoc()
1581 if (!asoc) in sctp_make_temp_asoc()
1583 asoc->temp = 1; in sctp_make_temp_asoc()
1589 af->from_skb(&asoc->c.peer_addr, skb, 1); in sctp_make_temp_asoc()
1591 return asoc; in sctp_make_temp_asoc()
1594 sctp_association_free(asoc); in sctp_make_temp_asoc()
1602 const struct sctp_association *asoc, in sctp_pack_cookie() argument
1643 cookie->c = asoc->c; in sctp_pack_cookie()
1648 cookie->c.prsctp_capable = asoc->peer.prsctp_capable; in sctp_pack_cookie()
1651 cookie->c.adaptation_ind = asoc->peer.adaptation_ind; in sctp_pack_cookie()
1654 cookie->c.expiration = ktime_add(asoc->cookie_life, in sctp_pack_cookie()
1691 const struct sctp_association *asoc, in sctp_unpack_cookie() argument
1785 if (!asoc && ktime_before(bear_cookie->expiration, kt)) { in sctp_unpack_cookie()
1795 *errp = sctp_make_op_error_space(asoc, chunk, len); in sctp_unpack_cookie()
1872 static int sctp_process_missing_param(const struct sctp_association *asoc, in sctp_process_missing_param() argument
1886 *errp = sctp_make_op_error_space(asoc, chunk, len); in sctp_process_missing_param()
1901 static int sctp_process_inv_mandatory(const struct sctp_association *asoc, in sctp_process_inv_mandatory() argument
1908 *errp = sctp_make_op_error_space(asoc, chunk, 0); in sctp_process_inv_mandatory()
1917 static int sctp_process_inv_paramlength(const struct sctp_association *asoc, in sctp_process_inv_paramlength() argument
1929 *errp = sctp_make_violation_paramlen(asoc, chunk, param); in sctp_process_inv_paramlength()
1938 static int sctp_process_hn_param(const struct sctp_association *asoc, in sctp_process_hn_param() argument
1953 *errp = sctp_make_op_error_space(asoc, chunk, len); in sctp_process_hn_param()
1997 static void sctp_process_ext_param(struct sctp_association *asoc, in sctp_process_ext_param() argument
2000 struct net *net = sock_net(asoc->base.sk); in sctp_process_ext_param()
2007 if (net->sctp.prsctp_enable && !asoc->peer.prsctp_capable) in sctp_process_ext_param()
2008 asoc->peer.prsctp_capable = 1; in sctp_process_ext_param()
2014 if (asoc->ep->auth_enable) in sctp_process_ext_param()
2015 asoc->peer.auth_capable = 1; in sctp_process_ext_param()
2020 asoc->peer.asconf_capable = 1; in sctp_process_ext_param()
2053 static sctp_ierror_t sctp_process_unk_param(const struct sctp_association *asoc, in sctp_process_unk_param() argument
2074 *errp = sctp_make_op_error_fixed(asoc, chunk); in sctp_process_unk_param()
2107 const struct sctp_association *asoc, in sctp_verify_param() argument
2147 sctp_process_hn_param(asoc, param, chunk, err_chunk); in sctp_verify_param()
2167 sctp_process_inv_paramlength(asoc, param.p, in sctp_verify_param()
2183 sctp_process_inv_paramlength(asoc, param.p, in sctp_verify_param()
2208 sctp_process_inv_paramlength(asoc, param.p, chunk, in sctp_verify_param()
2218 retval = sctp_process_unk_param(asoc, param, chunk, err_chunk); in sctp_verify_param()
2226 const struct sctp_association *asoc, sctp_cid_t cid, in sctp_verify_init() argument
2242 return sctp_process_inv_mandatory(asoc, chunk, errp); in sctp_verify_init()
2257 return sctp_process_inv_paramlength(asoc, param.p, chunk, errp); in sctp_verify_init()
2263 return sctp_process_missing_param(asoc, SCTP_PARAM_STATE_COOKIE, in sctp_verify_init()
2268 result = sctp_verify_param(net, ep, asoc, param, cid, in sctp_verify_init()
2290 int sctp_process_init(struct sctp_association *asoc, struct sctp_chunk *chunk, in sctp_process_init() argument
2294 struct net *net = sock_net(asoc->base.sk); in sctp_process_init()
2313 if (!sctp_assoc_add_peer(asoc, peer_addr, gfp, SCTP_ACTIVE)) in sctp_process_init()
2330 if (!sctp_process_param(asoc, param, peer_addr, gfp)) in sctp_process_init()
2341 if (asoc->peer.auth_capable && (!asoc->peer.peer_random || in sctp_process_init()
2342 !asoc->peer.peer_hmacs)) in sctp_process_init()
2343 asoc->peer.auth_capable = 0; in sctp_process_init()
2352 (asoc->peer.asconf_capable && !asoc->peer.auth_capable)) { in sctp_process_init()
2353 asoc->peer.addip_disabled_mask |= (SCTP_PARAM_ADD_IP | in sctp_process_init()
2356 asoc->peer.asconf_capable = 0; in sctp_process_init()
2361 list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { in sctp_process_init()
2364 sctp_assoc_rm_peer(asoc, transport); in sctp_process_init()
2371 asoc->peer.i.init_tag = in sctp_process_init()
2373 asoc->peer.i.a_rwnd = in sctp_process_init()
2375 asoc->peer.i.num_outbound_streams = in sctp_process_init()
2377 asoc->peer.i.num_inbound_streams = in sctp_process_init()
2379 asoc->peer.i.initial_tsn = in sctp_process_init()
2385 if (asoc->c.sinit_num_ostreams > in sctp_process_init()
2387 asoc->c.sinit_num_ostreams = in sctp_process_init()
2391 if (asoc->c.sinit_max_instreams > in sctp_process_init()
2393 asoc->c.sinit_max_instreams = in sctp_process_init()
2398 asoc->c.peer_vtag = asoc->peer.i.init_tag; in sctp_process_init()
2401 asoc->peer.rwnd = asoc->peer.i.a_rwnd; in sctp_process_init()
2404 cookie = asoc->peer.cookie; in sctp_process_init()
2406 asoc->peer.cookie = kmemdup(cookie, asoc->peer.cookie_len, gfp); in sctp_process_init()
2407 if (!asoc->peer.cookie) in sctp_process_init()
2415 list_for_each_entry(transport, &asoc->peer.transport_addr_list, in sctp_process_init()
2417 transport->ssthresh = asoc->peer.i.a_rwnd; in sctp_process_init()
2421 if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL, in sctp_process_init()
2422 asoc->peer.i.initial_tsn, gfp)) in sctp_process_init()
2436 if (!asoc->temp) { in sctp_process_init()
2439 asoc->ssnmap = sctp_ssnmap_new(asoc->c.sinit_max_instreams, in sctp_process_init()
2440 asoc->c.sinit_num_ostreams, gfp); in sctp_process_init()
2441 if (!asoc->ssnmap) in sctp_process_init()
2444 error = sctp_assoc_set_id(asoc, gfp); in sctp_process_init()
2459 asoc->peer.addip_serial = asoc->peer.i.initial_tsn - 1; in sctp_process_init()
2464 list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { in sctp_process_init()
2467 sctp_assoc_rm_peer(asoc, transport); in sctp_process_init()
2486 static int sctp_process_param(struct sctp_association *asoc, in sctp_process_param() argument
2491 struct net *net = sock_net(asoc->base.sk); in sctp_process_param()
2501 struct sctp_endpoint *ep = asoc->ep; in sctp_process_param()
2509 if (PF_INET6 != asoc->base.sk->sk_family) in sctp_process_param()
2515 if (ipv6_only_sock(asoc->base.sk)) in sctp_process_param()
2519 af->from_addr_param(&addr, param.addr, htons(asoc->peer.port), 0); in sctp_process_param()
2522 if (!sctp_assoc_add_peer(asoc, &addr, gfp, SCTP_UNCONFIRMED)) in sctp_process_param()
2535 asoc->cookie_life = ktime_add_ms(asoc->cookie_life, stale); in sctp_process_param()
2546 asoc->peer.ipv4_address = 0; in sctp_process_param()
2547 asoc->peer.ipv6_address = 0; in sctp_process_param()
2553 asoc->peer.ipv6_address = 1; in sctp_process_param()
2555 asoc->peer.ipv4_address = 1; in sctp_process_param()
2565 asoc->peer.ipv4_address = 1; in sctp_process_param()
2569 if (PF_INET6 == asoc->base.sk->sk_family) in sctp_process_param()
2570 asoc->peer.ipv6_address = 1; in sctp_process_param()
2574 asoc->peer.hostname_address = 1; in sctp_process_param()
2584 asoc->peer.cookie_len = in sctp_process_param()
2586 asoc->peer.cookie = param.cookie->body; in sctp_process_param()
2598 asoc->peer.ecn_capable = 1; in sctp_process_param()
2602 asoc->peer.adaptation_ind = ntohl(param.aind->adaptation_ind); in sctp_process_param()
2616 htons(asoc->peer.port), 0); in sctp_process_param()
2624 t = sctp_assoc_lookup_paddr(asoc, &addr); in sctp_process_param()
2628 sctp_assoc_set_primary(asoc, t); in sctp_process_param()
2632 sctp_process_ext_param(asoc, param); in sctp_process_param()
2637 asoc->peer.prsctp_capable = 1; in sctp_process_param()
2648 asoc->peer.peer_random = kmemdup(param.p, in sctp_process_param()
2650 if (!asoc->peer.peer_random) { in sctp_process_param()
2661 asoc->peer.peer_hmacs = kmemdup(param.p, in sctp_process_param()
2663 if (!asoc->peer.peer_hmacs) { in sctp_process_param()
2669 sctp_auth_asoc_set_default_hmac(asoc, param.hmac_algo); in sctp_process_param()
2676 asoc->peer.peer_chunks = kmemdup(param.p, in sctp_process_param()
2678 if (!asoc->peer.peer_chunks) in sctp_process_param()
2689 __func__, ntohs(param.p->type), asoc); in sctp_process_param()
2742 static struct sctp_chunk *sctp_make_asconf(struct sctp_association *asoc, in sctp_make_asconf() argument
2759 retval = sctp_make_control(asoc, SCTP_CID_ASCONF, 0, length); in sctp_make_asconf()
2763 asconf.serial = htonl(asoc->addip_serial++); in sctp_make_asconf()
2797 struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *asoc, in sctp_make_asconf_update_ip() argument
2826 if (asoc->asconf_addr_del_pending && !del_pickup) { in sctp_make_asconf_update_ip()
2839 retval = sctp_make_asconf(asoc, laddr, totallen); in sctp_make_asconf_update_ip()
2859 addr = asoc->asconf_addr_del_pending; in sctp_make_asconf_update_ip()
2886 struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc, in sctp_make_asconf_set_prim() argument
2902 retval = sctp_make_asconf(asoc, addr, len); in sctp_make_asconf_set_prim()
2935 static struct sctp_chunk *sctp_make_asconf_ack(const struct sctp_association *asoc, in sctp_make_asconf_ack() argument
2943 retval = sctp_make_control(asoc, SCTP_CID_ASCONF_ACK, 0, length); in sctp_make_asconf_ack()
2997 static __be16 sctp_process_asconf_param(struct sctp_association *asoc, in sctp_process_asconf_param() argument
3015 if (!asoc->peer.ipv6_address) in sctp_process_asconf_param()
3019 if (!asoc->peer.ipv4_address) in sctp_process_asconf_param()
3030 af->from_addr_param(&addr, addr_param, htons(asoc->peer.port), 0); in sctp_process_asconf_param()
3056 peer = sctp_assoc_add_peer(asoc, &addr, GFP_ATOMIC, SCTP_UNCONFIRMED); in sctp_process_asconf_param()
3063 asoc->new_transport = peer; in sctp_process_asconf_param()
3071 if (asoc->peer.transport_count == 1) in sctp_process_asconf_param()
3090 sctp_assoc_set_primary(asoc, asconf->transport); in sctp_process_asconf_param()
3091 sctp_assoc_del_nonprimary_peers(asoc, in sctp_process_asconf_param()
3094 sctp_assoc_del_peer(asoc, &addr); in sctp_process_asconf_param()
3105 peer = sctp_assoc_lookup_paddr(asoc, &addr); in sctp_process_asconf_param()
3109 sctp_assoc_set_primary(asoc, peer); in sctp_process_asconf_param()
3117 bool sctp_verify_asconf(const struct sctp_association *asoc, in sctp_verify_asconf() argument
3178 struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, in sctp_process_asconf() argument
3214 asconf_ack = sctp_make_asconf_ack(asoc, serial, chunk_len * 4); in sctp_process_asconf()
3225 err_code = sctp_process_asconf_param(asoc, asconf, in sctp_process_asconf()
3249 asoc->peer.addip_serial++; in sctp_process_asconf()
3257 &asoc->asconf_ack_list); in sctp_process_asconf()
3264 static void sctp_asconf_param_success(struct sctp_association *asoc, in sctp_asconf_param_success() argument
3269 struct sctp_bind_addr *bp = &asoc->base.bind_addr; in sctp_asconf_param_success()
3291 list_for_each_entry(transport, &asoc->peer.transport_addr_list, in sctp_asconf_param_success()
3300 if (asoc->asconf_addr_del_pending != NULL && in sctp_asconf_param_success()
3301 sctp_cmp_addr_exact(asoc->asconf_addr_del_pending, &addr)) { in sctp_asconf_param_success()
3302 kfree(asoc->asconf_addr_del_pending); in sctp_asconf_param_success()
3303 asoc->asconf_addr_del_pending = NULL; in sctp_asconf_param_success()
3306 list_for_each_entry(transport, &asoc->peer.transport_addr_list, in sctp_asconf_param_success()
3380 int sctp_process_asconf_ack(struct sctp_association *asoc, in sctp_process_asconf_ack() argument
3383 struct sctp_chunk *asconf = asoc->addip_last_asconf; in sctp_process_asconf_ack()
3429 sctp_asconf_param_success(asoc, asconf_param); in sctp_process_asconf_ack()
3440 asoc->peer.addip_disabled_mask |= in sctp_process_asconf_ack()
3459 if (no_err && asoc->src_out_of_asoc_ok) { in sctp_process_asconf_ack()
3460 asoc->src_out_of_asoc_ok = 0; in sctp_process_asconf_ack()
3461 sctp_transport_immediate_rtx(asoc->peer.primary_path); in sctp_process_asconf_ack()
3467 asoc->addip_last_asconf = NULL; in sctp_process_asconf_ack()
3473 struct sctp_chunk *sctp_make_fwdtsn(const struct sctp_association *asoc, in sctp_make_fwdtsn() argument
3485 retval = sctp_make_control(asoc, SCTP_CID_FWD_TSN, 0, hint); in sctp_make_fwdtsn()