asoc 731 include/linux/sctp.h struct sctp_association *asoc; asoc 73 include/net/sctp/auth.h int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp); asoc 75 include/net/sctp/auth.h const struct sctp_association *asoc, asoc 78 include/net/sctp/auth.h struct sctp_association *asoc, asoc 83 include/net/sctp/auth.h struct sctp_hmac *sctp_auth_asoc_get_hmac(const struct sctp_association *asoc); asoc 84 include/net/sctp/auth.h void sctp_auth_asoc_set_default_hmac(struct sctp_association *asoc, asoc 86 include/net/sctp/auth.h int sctp_auth_asoc_verify_hmac_id(const struct sctp_association *asoc, asoc 89 include/net/sctp/auth.h const struct sctp_association *asoc); asoc 91 include/net/sctp/auth.h const struct sctp_association *asoc); asoc 92 include/net/sctp/auth.h void sctp_auth_calculate_hmac(const struct sctp_association *asoc, asoc 102 include/net/sctp/auth.h int sctp_auth_set_key(struct sctp_endpoint *ep, struct sctp_association *asoc, asoc 105 include/net/sctp/auth.h struct sctp_association *asoc, __u16 key_id); asoc 107 include/net/sctp/auth.h struct sctp_association *asoc, __u16 key_id); asoc 109 include/net/sctp/auth.h struct sctp_association *asoc, __u16 key_id); asoc 117 include/net/sctp/command.h struct sctp_association *asoc; asoc 158 include/net/sctp/command.h SCTP_ARG_CONSTRUCTOR(ASOC, struct sctp_association *, asoc) asoc 101 include/net/sctp/sctp.h struct sctp_association *asoc); asoc 120 include/net/sctp/sctp.h int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc, asoc 132 include/net/sctp/sctp.h int sctp_primitive_RECONF(struct net *net, struct sctp_association *asoc, asoc 151 include/net/sctp/sctp.h struct sctp_association *asoc, asoc 185 include/net/sctp/sctp.h int sctp_send_reset_streams(struct sctp_association *asoc, asoc 187 include/net/sctp/sctp.h int sctp_send_reset_assoc(struct sctp_association *asoc); asoc 188 include/net/sctp/sctp.h int sctp_send_add_streams(struct sctp_association *asoc, asoc 258 include/net/sctp/sctp.h static inline void sctp_max_rto(struct sctp_association *asoc, asoc 261 include/net/sctp/sctp.h if (asoc->stats.max_obs_rto < (__u64)trans->rto) { asoc 262 include/net/sctp/sctp.h asoc->stats.max_obs_rto = trans->rto; asoc 263 include/net/sctp/sctp.h memset(&asoc->stats.obs_rto_ipaddr, 0, asoc 265 include/net/sctp/sctp.h memcpy(&asoc->stats.obs_rto_ipaddr, &trans->ipaddr, asoc 348 include/net/sctp/sctp.h static inline sctp_assoc_t sctp_assoc2id(const struct sctp_association *asoc) asoc 350 include/net/sctp/sctp.h return asoc ? asoc->assoc_id : 0; asoc 354 include/net/sctp/sctp.h sctp_assoc_to_state(const struct sctp_association *asoc) asoc 363 include/net/sctp/sctp.h return asoc->state + 1; asoc 521 include/net/sctp/sctp.h #define sctp_state(asoc, state) __sctp_state((asoc), (SCTP_STATE_##state)) asoc 522 include/net/sctp/sctp.h static inline int __sctp_state(const struct sctp_association *asoc, asoc 525 include/net/sctp/sctp.h return asoc->state == state; asoc 335 include/net/sctp/sm.h size -= sctp_datachk_len(&chunk->asoc->stream); asoc 372 include/net/sctp/sm.h const struct sctp_association *asoc) asoc 380 include/net/sctp/sm.h if (ntohl(chunk->sctp_hdr->vtag) == asoc->c.my_vtag) asoc 415 include/net/sctp/sm.h (ntohl(chunk->sctp_hdr->vtag) == asoc->c.my_vtag)) || asoc 416 include/net/sctp/sm.h (sctp_test_T_bit(chunk) && asoc->c.peer_vtag && asoc 417 include/net/sctp/sm.h (ntohl(chunk->sctp_hdr->vtag) == asoc->c.peer_vtag))) { asoc 23 include/net/sctp/stream_interleave.h struct sctp_chunk *(*make_datafrag)(const struct sctp_association *asoc, asoc 44 include/net/sctp/stream_sched.h int sctp_sched_set_sched(struct sctp_association *asoc, asoc 46 include/net/sctp/stream_sched.h int sctp_sched_get_sched(struct sctp_association *asoc); asoc 47 include/net/sctp/stream_sched.h int sctp_sched_set_value(struct sctp_association *asoc, __u16 sid, asoc 49 include/net/sctp/stream_sched.h int sctp_sched_get_value(struct sctp_association *asoc, __u16 sid, asoc 507 include/net/sctp/structs.h struct sctp_association *asoc, asoc 618 include/net/sctp/structs.h struct sctp_association *asoc; asoc 815 include/net/sctp/structs.h struct sctp_association *asoc; asoc 1057 include/net/sctp/structs.h struct sctp_association *asoc; asoc 1110 include/net/sctp/structs.h void sctp_prsctp_prune(struct sctp_association *asoc, asoc 1375 include/net/sctp/structs.h const struct sctp_association *asoc, asoc 2093 include/net/sctp/structs.h struct sctp_association *asoc; asoc 2095 include/net/sctp/structs.h asoc = container_of(base, struct sctp_association, base); asoc 2096 include/net/sctp/structs.h return asoc; asoc 2114 include/net/sctp/structs.h int sctp_assoc_lookup_laddr(struct sctp_association *asoc, asoc 2120 include/net/sctp/structs.h void sctp_assoc_del_peer(struct sctp_association *asoc, asoc 2122 include/net/sctp/structs.h void sctp_assoc_rm_peer(struct sctp_association *asoc, asoc 2124 include/net/sctp/structs.h void sctp_assoc_control_transport(struct sctp_association *asoc, asoc 2135 include/net/sctp/structs.h void sctp_assoc_update_frag_point(struct sctp_association *asoc); asoc 2136 include/net/sctp/structs.h void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu); asoc 2137 include/net/sctp/structs.h void sctp_assoc_sync_pmtu(struct sctp_association *asoc); asoc 2144 include/net/sctp/structs.h int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc, asoc 2150 include/net/sctp/structs.h void sctp_assoc_clean_asconf_ack_cache(const struct sctp_association *asoc); asoc 2152 include/net/sctp/structs.h const struct sctp_association *asoc, asoc 2154 include/net/sctp/structs.h void sctp_asconf_queue_teardown(struct sctp_association *asoc); asoc 2158 include/net/sctp/structs.h struct sctp_chunk *sctp_get_ecne_prepend(struct sctp_association *asoc); asoc 39 include/net/sctp/ulpevent.h struct sctp_association *asoc; asoc 74 include/net/sctp/ulpevent.h const struct sctp_association *asoc, asoc 84 include/net/sctp/ulpevent.h const struct sctp_association *asoc, asoc 92 include/net/sctp/ulpevent.h const struct sctp_association *asoc, asoc 97 include/net/sctp/ulpevent.h const struct sctp_association *asoc, asoc 104 include/net/sctp/ulpevent.h const struct sctp_association *asoc, asoc 109 include/net/sctp/ulpevent.h const struct sctp_association *asoc, asoc 114 include/net/sctp/ulpevent.h const struct sctp_association *asoc, gfp_t gfp); asoc 116 include/net/sctp/ulpevent.h struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, asoc 121 include/net/sctp/ulpevent.h const struct sctp_association *asoc, __u16 key_id, asoc 125 include/net/sctp/ulpevent.h const struct sctp_association *asoc, gfp_t gfp); asoc 128 include/net/sctp/ulpevent.h const struct sctp_association *asoc, __u16 flags, asoc 132 include/net/sctp/ulpevent.h const struct sctp_association *asoc, __u16 flags, asoc 136 include/net/sctp/ulpevent.h const struct sctp_association *asoc, __u16 flags, asoc 31 include/net/sctp/ulpqueue.h struct sctp_association *asoc; asoc 59 include/net/sctp/ulpqueue.h int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc); asoc 3 include/trace/events/asoc.h #define TRACE_SYSTEM asoc asoc 14 include/trace/events/sctp.h const struct sctp_association *asoc), asoc 16 include/trace/events/sctp.h TP_ARGS(sp, asoc), asoc 19 include/trace/events/sctp.h __field(__u64, asoc) asoc 31 include/trace/events/sctp.h __entry->asoc = (unsigned long)asoc; asoc 32 include/trace/events/sctp.h __entry->primary = (sp == asoc->peer.primary_path); asoc 44 include/trace/events/sctp.h __entry->asoc, __entry->primary ? "(*)" : "", asoc 53 include/trace/events/sctp.h const struct sctp_association *asoc, asoc 56 include/trace/events/sctp.h TP_ARGS(ep, asoc, chunk), asoc 59 include/trace/events/sctp.h __field(__u64, asoc) asoc 71 include/trace/events/sctp.h __entry->asoc = (unsigned long)asoc; asoc 74 include/trace/events/sctp.h __entry->peer_port = asoc->peer.port; asoc 75 include/trace/events/sctp.h __entry->pathmtu = asoc->pathmtu; asoc 76 include/trace/events/sctp.h __entry->rwnd = asoc->peer.rwnd; asoc 77 include/trace/events/sctp.h __entry->unack_data = asoc->unack_data; asoc 82 include/trace/events/sctp.h list_for_each_entry(sp, &asoc->peer.transport_addr_list, asoc 84 include/trace/events/sctp.h trace_sctp_probe_path(sp, asoc); asoc 91 include/trace/events/sctp.h __entry->asoc, __entry->mark, __entry->bind_port, asoc 43 net/sctp/associola.c static void sctp_select_active_and_retran_path(struct sctp_association *asoc); asoc 45 net/sctp/associola.c static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc); asoc 46 net/sctp/associola.c static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc); asoc 52 net/sctp/associola.c struct sctp_association *asoc, asoc 65 net/sctp/associola.c asoc->ep = (struct sctp_endpoint *)ep; asoc 66 net/sctp/associola.c asoc->base.sk = (struct sock *)sk; asoc 67 net/sctp/associola.c asoc->base.net = sock_net(sk); asoc 69 net/sctp/associola.c sctp_endpoint_hold(asoc->ep); asoc 70 net/sctp/associola.c sock_hold(asoc->base.sk); asoc 73 net/sctp/associola.c asoc->base.type = SCTP_EP_TYPE_ASSOCIATION; asoc 76 net/sctp/associola.c refcount_set(&asoc->base.refcnt, 1); asoc 79 net/sctp/associola.c sctp_bind_addr_init(&asoc->base.bind_addr, ep->base.bind_addr.port); asoc 81 net/sctp/associola.c asoc->state = SCTP_STATE_CLOSED; asoc 82 net/sctp/associola.c asoc->cookie_life = ms_to_ktime(sp->assocparams.sasoc_cookie_life); asoc 83 net/sctp/associola.c asoc->user_frag = sp->user_frag; asoc 88 net/sctp/associola.c asoc->max_retrans = sp->assocparams.sasoc_asocmaxrxt; asoc 89 net/sctp/associola.c asoc->pf_retrans = sp->pf_retrans; asoc 91 net/sctp/associola.c asoc->rto_initial = msecs_to_jiffies(sp->rtoinfo.srto_initial); asoc 92 net/sctp/associola.c asoc->rto_max = msecs_to_jiffies(sp->rtoinfo.srto_max); asoc 93 net/sctp/associola.c asoc->rto_min = msecs_to_jiffies(sp->rtoinfo.srto_min); asoc 98 net/sctp/associola.c asoc->hbinterval = msecs_to_jiffies(sp->hbinterval); asoc 101 net/sctp/associola.c asoc->pathmaxrxt = sp->pathmaxrxt; asoc 103 net/sctp/associola.c asoc->flowlabel = sp->flowlabel; asoc 104 net/sctp/associola.c asoc->dscp = sp->dscp; asoc 107 net/sctp/associola.c asoc->sackdelay = msecs_to_jiffies(sp->sackdelay); asoc 108 net/sctp/associola.c asoc->sackfreq = sp->sackfreq; asoc 113 net/sctp/associola.c asoc->param_flags = sp->param_flags; asoc 118 net/sctp/associola.c asoc->max_burst = sp->max_burst; asoc 120 net/sctp/associola.c asoc->subscribe = sp->subscribe; asoc 123 net/sctp/associola.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = asoc->rto_initial; asoc 124 net/sctp/associola.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc->rto_initial; asoc 125 net/sctp/associola.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = asoc->rto_initial; asoc 131 net/sctp/associola.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD] asoc 132 net/sctp/associola.c = 5 * asoc->rto_max; asoc 134 net/sctp/associola.c asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc->sackdelay; asoc 135 net/sctp/associola.c asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = sp->autoclose * HZ; asoc 139 net/sctp/associola.c timer_setup(&asoc->timers[i], sctp_timer_events[i], 0); asoc 145 net/sctp/associola.c asoc->c.sinit_max_instreams = sp->initmsg.sinit_max_instreams; asoc 146 net/sctp/associola.c asoc->c.sinit_num_ostreams = sp->initmsg.sinit_num_ostreams; asoc 147 net/sctp/associola.c asoc->max_init_attempts = sp->initmsg.sinit_max_attempts; asoc 149 net/sctp/associola.c asoc->max_init_timeo = asoc 158 net/sctp/associola.c asoc->rwnd = SCTP_DEFAULT_MINWINDOW; asoc 160 net/sctp/associola.c asoc->rwnd = sk->sk_rcvbuf/2; asoc 162 net/sctp/associola.c asoc->a_rwnd = asoc->rwnd; asoc 165 net/sctp/associola.c asoc->peer.rwnd = SCTP_DEFAULT_MAXWINDOW; asoc 168 net/sctp/associola.c atomic_set(&asoc->rmem_alloc, 0); asoc 170 net/sctp/associola.c init_waitqueue_head(&asoc->wait); asoc 172 net/sctp/associola.c asoc->c.my_vtag = sctp_generate_tag(ep); asoc 173 net/sctp/associola.c asoc->c.my_port = ep->base.bind_addr.port; asoc 175 net/sctp/associola.c asoc->c.initial_tsn = sctp_generate_tsn(ep); asoc 177 net/sctp/associola.c asoc->next_tsn = asoc->c.initial_tsn; asoc 179 net/sctp/associola.c asoc->ctsn_ack_point = asoc->next_tsn - 1; asoc 180 net/sctp/associola.c asoc->adv_peer_ack_point = asoc->ctsn_ack_point; asoc 181 net/sctp/associola.c asoc->highest_sacked = asoc->ctsn_ack_point; asoc 182 net/sctp/associola.c asoc->last_cwr_tsn = asoc->ctsn_ack_point; asoc 194 net/sctp/associola.c asoc->addip_serial = asoc->c.initial_tsn; asoc 195 net/sctp/associola.c asoc->strreset_outseq = asoc->c.initial_tsn; asoc 197 net/sctp/associola.c INIT_LIST_HEAD(&asoc->addip_chunk_list); asoc 198 net/sctp/associola.c INIT_LIST_HEAD(&asoc->asconf_ack_list); asoc 201 net/sctp/associola.c INIT_LIST_HEAD(&asoc->peer.transport_addr_list); asoc 214 net/sctp/associola.c asoc->peer.sack_needed = 1; asoc 215 net/sctp/associola.c asoc->peer.sack_generation = 1; asoc 218 net/sctp/associola.c sctp_inq_init(&asoc->base.inqueue); asoc 219 net/sctp/associola.c sctp_inq_set_th_handler(&asoc->base.inqueue, sctp_assoc_bh_rcv); asoc 222 net/sctp/associola.c sctp_outq_init(asoc, &asoc->outqueue); asoc 224 net/sctp/associola.c if (!sctp_ulpq_init(&asoc->ulpq, asoc)) asoc 227 net/sctp/associola.c if (sctp_stream_init(&asoc->stream, asoc->c.sinit_num_ostreams, asoc 232 net/sctp/associola.c asoc->pathmtu = sp->pathmtu; asoc 233 net/sctp/associola.c sctp_assoc_update_frag_point(asoc); asoc 238 net/sctp/associola.c asoc->peer.ipv4_address = 1; asoc 239 net/sctp/associola.c if (asoc->base.sk->sk_family == PF_INET6) asoc 240 net/sctp/associola.c asoc->peer.ipv6_address = 1; asoc 241 net/sctp/associola.c INIT_LIST_HEAD(&asoc->asocs); asoc 243 net/sctp/associola.c asoc->default_stream = sp->default_stream; asoc 244 net/sctp/associola.c asoc->default_ppid = sp->default_ppid; asoc 245 net/sctp/associola.c asoc->default_flags = sp->default_flags; asoc 246 net/sctp/associola.c asoc->default_context = sp->default_context; asoc 247 net/sctp/associola.c asoc->default_timetolive = sp->default_timetolive; asoc 248 net/sctp/associola.c asoc->default_rcv_context = sp->default_rcv_context; asoc 251 net/sctp/associola.c INIT_LIST_HEAD(&asoc->endpoint_shared_keys); asoc 252 net/sctp/associola.c if (sctp_auth_asoc_copy_shkeys(ep, asoc, gfp)) asoc 255 net/sctp/associola.c asoc->active_key_id = ep->active_key_id; asoc 256 net/sctp/associola.c asoc->strreset_enable = ep->strreset_enable; asoc 260 net/sctp/associola.c memcpy(asoc->c.auth_hmacs, ep->auth_hmacs_list, asoc 263 net/sctp/associola.c memcpy(asoc->c.auth_chunks, ep->auth_chunk_list, asoc 267 net/sctp/associola.c p = (struct sctp_paramhdr *)asoc->c.auth_random; asoc 272 net/sctp/associola.c return asoc; asoc 275 net/sctp/associola.c sctp_stream_free(&asoc->stream); asoc 277 net/sctp/associola.c sock_put(asoc->base.sk); asoc 278 net/sctp/associola.c sctp_endpoint_put(asoc->ep); asoc 287 net/sctp/associola.c struct sctp_association *asoc; asoc 289 net/sctp/associola.c asoc = kzalloc(sizeof(*asoc), gfp); asoc 290 net/sctp/associola.c if (!asoc) asoc 293 net/sctp/associola.c if (!sctp_association_init(asoc, ep, sk, scope, gfp)) asoc 298 net/sctp/associola.c pr_debug("Created asoc %p\n", asoc); asoc 300 net/sctp/associola.c return asoc; asoc 303 net/sctp/associola.c kfree(asoc); asoc 311 net/sctp/associola.c void sctp_association_free(struct sctp_association *asoc) asoc 313 net/sctp/associola.c struct sock *sk = asoc->base.sk; asoc 321 net/sctp/associola.c if (!list_empty(&asoc->asocs)) { asoc 322 net/sctp/associola.c list_del(&asoc->asocs); asoc 334 net/sctp/associola.c asoc->base.dead = true; asoc 337 net/sctp/associola.c sctp_outq_free(&asoc->outqueue); asoc 340 net/sctp/associola.c sctp_ulpq_free(&asoc->ulpq); asoc 343 net/sctp/associola.c sctp_inq_free(&asoc->base.inqueue); asoc 345 net/sctp/associola.c sctp_tsnmap_free(&asoc->peer.tsn_map); asoc 348 net/sctp/associola.c sctp_stream_free(&asoc->stream); asoc 350 net/sctp/associola.c if (asoc->strreset_chunk) asoc 351 net/sctp/associola.c sctp_chunk_free(asoc->strreset_chunk); asoc 354 net/sctp/associola.c sctp_bind_addr_free(&asoc->base.bind_addr); asoc 362 net/sctp/associola.c if (del_timer(&asoc->timers[i])) asoc 363 net/sctp/associola.c sctp_association_put(asoc); asoc 367 net/sctp/associola.c kfree(asoc->peer.cookie); asoc 368 net/sctp/associola.c kfree(asoc->peer.peer_random); asoc 369 net/sctp/associola.c kfree(asoc->peer.peer_chunks); asoc 370 net/sctp/associola.c kfree(asoc->peer.peer_hmacs); asoc 373 net/sctp/associola.c list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { asoc 380 net/sctp/associola.c asoc->peer.transport_count = 0; asoc 382 net/sctp/associola.c sctp_asconf_queue_teardown(asoc); asoc 385 net/sctp/associola.c kfree(asoc->asconf_addr_del_pending); asoc 388 net/sctp/associola.c sctp_auth_destroy_keys(&asoc->endpoint_shared_keys); asoc 391 net/sctp/associola.c sctp_auth_key_put(asoc->asoc_shared_key); asoc 393 net/sctp/associola.c sctp_association_put(asoc); asoc 397 net/sctp/associola.c static void sctp_association_destroy(struct sctp_association *asoc) asoc 399 net/sctp/associola.c if (unlikely(!asoc->base.dead)) { asoc 400 net/sctp/associola.c WARN(1, "Attempt to destroy undead association %p!\n", asoc); asoc 404 net/sctp/associola.c sctp_endpoint_put(asoc->ep); asoc 405 net/sctp/associola.c sock_put(asoc->base.sk); asoc 407 net/sctp/associola.c if (asoc->assoc_id != 0) { asoc 409 net/sctp/associola.c idr_remove(&sctp_assocs_id, asoc->assoc_id); asoc 413 net/sctp/associola.c WARN_ON(atomic_read(&asoc->rmem_alloc)); asoc 415 net/sctp/associola.c kfree_rcu(asoc, rcu); asoc 420 net/sctp/associola.c void sctp_assoc_set_primary(struct sctp_association *asoc, asoc 428 net/sctp/associola.c if (asoc->peer.primary_path != NULL && asoc 429 net/sctp/associola.c asoc->peer.primary_path != transport) asoc 432 net/sctp/associola.c asoc->peer.primary_path = transport; asoc 435 net/sctp/associola.c memcpy(&asoc->peer.primary_addr, &transport->ipaddr, asoc 443 net/sctp/associola.c asoc->peer.active_path = transport; asoc 459 net/sctp/associola.c if (!asoc->outqueue.outstanding_bytes && !asoc->outqueue.out_qlen) asoc 473 net/sctp/associola.c transport->cacc.next_tsn_at_change = asoc->next_tsn; asoc 477 net/sctp/associola.c void sctp_assoc_rm_peer(struct sctp_association *asoc, asoc 485 net/sctp/associola.c __func__, asoc, &peer->ipaddr.sa); asoc 490 net/sctp/associola.c if (asoc->peer.retran_path == peer) asoc 491 net/sctp/associola.c sctp_assoc_update_retran_path(asoc); asoc 499 net/sctp/associola.c pos = asoc->peer.transport_addr_list.next; asoc 503 net/sctp/associola.c if (asoc->peer.primary_path == peer) asoc 504 net/sctp/associola.c sctp_assoc_set_primary(asoc, transport); asoc 505 net/sctp/associola.c if (asoc->peer.active_path == peer) asoc 506 net/sctp/associola.c asoc->peer.active_path = transport; asoc 507 net/sctp/associola.c if (asoc->peer.retran_path == peer) asoc 508 net/sctp/associola.c asoc->peer.retran_path = transport; asoc 509 net/sctp/associola.c if (asoc->peer.last_data_from == peer) asoc 510 net/sctp/associola.c asoc->peer.last_data_from = transport; asoc 512 net/sctp/associola.c if (asoc->strreset_chunk && asoc 513 net/sctp/associola.c asoc->strreset_chunk->transport == peer) { asoc 514 net/sctp/associola.c asoc->strreset_chunk->transport = transport; asoc 523 net/sctp/associola.c if (asoc->init_last_sent_to == peer) asoc 524 net/sctp/associola.c asoc->init_last_sent_to = NULL; asoc 531 net/sctp/associola.c if (asoc->shutdown_last_sent_to == peer) asoc 532 net/sctp/associola.c asoc->shutdown_last_sent_to = NULL; asoc 537 net/sctp/associola.c if (asoc->addip_last_asconf && asoc 538 net/sctp/associola.c asoc->addip_last_asconf->transport == peer) asoc 539 net/sctp/associola.c asoc->addip_last_asconf->transport = NULL; asoc 545 net/sctp/associola.c struct sctp_transport *active = asoc->peer.active_path; asoc 567 net/sctp/associola.c list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) asoc 571 net/sctp/associola.c asoc->peer.transport_count--; asoc 577 net/sctp/associola.c struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, asoc 582 net/sctp/associola.c struct net *net = sock_net(asoc->base.sk); asoc 587 net/sctp/associola.c sp = sctp_sk(asoc->base.sk); asoc 593 net/sctp/associola.c asoc, &addr->sa, peer_state); asoc 596 net/sctp/associola.c if (0 == asoc->peer.port) asoc 597 net/sctp/associola.c asoc->peer.port = port; asoc 600 net/sctp/associola.c peer = sctp_assoc_lookup_paddr(asoc, addr); asoc 616 net/sctp/associola.c sctp_transport_set_owner(peer, asoc); asoc 621 net/sctp/associola.c peer->hbinterval = asoc->hbinterval; asoc 624 net/sctp/associola.c peer->pathmaxrxt = asoc->pathmaxrxt; asoc 627 net/sctp/associola.c peer->pf_retrans = asoc->pf_retrans; asoc 632 net/sctp/associola.c peer->sackdelay = asoc->sackdelay; asoc 633 net/sctp/associola.c peer->sackfreq = asoc->sackfreq; asoc 642 net/sctp/associola.c peer->flowlabel = asoc->flowlabel; asoc 645 net/sctp/associola.c peer->dscp = asoc->dscp; asoc 650 net/sctp/associola.c peer->param_flags = asoc->param_flags; asoc 660 net/sctp/associola.c sctp_assoc_set_pmtu(asoc, asoc->pathmtu ? asoc 661 net/sctp/associola.c min_t(int, peer->pathmtu, asoc->pathmtu) : asoc 669 net/sctp/associola.c sctp_packet_init(&peer->packet, peer, asoc->base.bind_addr.port, asoc 670 net/sctp/associola.c asoc->peer.port); asoc 682 net/sctp/associola.c peer->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380)); asoc 695 net/sctp/associola.c peer->rto = asoc->rto_initial; asoc 696 net/sctp/associola.c sctp_max_rto(asoc, peer); asoc 708 net/sctp/associola.c list_add_tail_rcu(&peer->transports, &asoc->peer.transport_addr_list); asoc 709 net/sctp/associola.c asoc->peer.transport_count++; asoc 712 net/sctp/associola.c if (!asoc->peer.primary_path) { asoc 713 net/sctp/associola.c sctp_assoc_set_primary(asoc, peer); asoc 714 net/sctp/associola.c asoc->peer.retran_path = peer; asoc 717 net/sctp/associola.c if (asoc->peer.active_path == asoc->peer.retran_path && asoc 719 net/sctp/associola.c asoc->peer.retran_path = peer; asoc 726 net/sctp/associola.c void sctp_assoc_del_peer(struct sctp_association *asoc, asoc 733 net/sctp/associola.c list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { asoc 737 net/sctp/associola.c sctp_assoc_rm_peer(asoc, transport); asoc 745 net/sctp/associola.c const struct sctp_association *asoc, asoc 752 net/sctp/associola.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 762 net/sctp/associola.c void sctp_assoc_del_nonprimary_peers(struct sctp_association *asoc, asoc 768 net/sctp/associola.c list_for_each_entry_safe(t, temp, &asoc->peer.transport_addr_list, asoc 772 net/sctp/associola.c sctp_assoc_rm_peer(asoc, t); asoc 780 net/sctp/associola.c void sctp_assoc_control_transport(struct sctp_association *asoc, asoc 808 net/sctp/associola.c transport->cwnd = asoc->pathmtu; asoc 845 net/sctp/associola.c event = sctp_ulpevent_make_peer_addr_change(asoc, &addr, asoc 848 net/sctp/associola.c asoc->stream.si->enqueue_event(&asoc->ulpq, event); asoc 852 net/sctp/associola.c sctp_select_active_and_retran_path(asoc); asoc 856 net/sctp/associola.c void sctp_association_hold(struct sctp_association *asoc) asoc 858 net/sctp/associola.c refcount_inc(&asoc->base.refcnt); asoc 864 net/sctp/associola.c void sctp_association_put(struct sctp_association *asoc) asoc 866 net/sctp/associola.c if (refcount_dec_and_test(&asoc->base.refcnt)) asoc 867 net/sctp/associola.c sctp_association_destroy(asoc); asoc 873 net/sctp/associola.c __u32 sctp_association_get_next_tsn(struct sctp_association *asoc) asoc 880 net/sctp/associola.c __u32 retval = asoc->next_tsn; asoc 881 net/sctp/associola.c asoc->next_tsn++; asoc 882 net/sctp/associola.c asoc->unack_data++; asoc 906 net/sctp/associola.c struct sctp_chunk *sctp_get_ecne_prepend(struct sctp_association *asoc) asoc 908 net/sctp/associola.c if (!asoc->need_ecne) asoc 914 net/sctp/associola.c return sctp_make_ecne(asoc, asoc->last_ecne_tsn); asoc 920 net/sctp/associola.c struct sctp_transport *sctp_assoc_lookup_tsn(struct sctp_association *asoc, asoc 946 net/sctp/associola.c active = asoc->peer.active_path; asoc 958 net/sctp/associola.c list_for_each_entry(transport, &asoc->peer.transport_addr_list, asoc 978 net/sctp/associola.c struct sctp_association *asoc = asoc 981 net/sctp/associola.c struct net *net = sock_net(asoc->base.sk); asoc 991 net/sctp/associola.c ep = asoc->ep; asoc 993 net/sctp/associola.c inqueue = &asoc->base.inqueue; asoc 994 net/sctp/associola.c sctp_association_hold(asoc); asoc 996 net/sctp/associola.c state = asoc->state; asoc 1030 net/sctp/associola.c if (sctp_auth_recv_cid(subtype.chunk, asoc) && !chunk->auth) asoc 1037 net/sctp/associola.c asoc->peer.last_data_from = chunk->transport; asoc 1040 net/sctp/associola.c asoc->stats.ictrlchunks++; asoc 1042 net/sctp/associola.c asoc->stats.isacks++; asoc 1050 net/sctp/associola.c state, ep, asoc, chunk, GFP_ATOMIC); asoc 1055 net/sctp/associola.c if (asoc->base.dead) asoc 1065 net/sctp/associola.c sctp_association_put(asoc); asoc 1100 net/sctp/associola.c int sctp_assoc_update(struct sctp_association *asoc, asoc 1107 net/sctp/associola.c asoc->c = new->c; asoc 1108 net/sctp/associola.c asoc->peer.rwnd = new->peer.rwnd; asoc 1109 net/sctp/associola.c asoc->peer.sack_needed = new->peer.sack_needed; asoc 1110 net/sctp/associola.c asoc->peer.auth_capable = new->peer.auth_capable; asoc 1111 net/sctp/associola.c asoc->peer.i = new->peer.i; asoc 1113 net/sctp/associola.c if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL, asoc 1114 net/sctp/associola.c asoc->peer.i.initial_tsn, GFP_ATOMIC)) asoc 1118 net/sctp/associola.c list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { asoc 1121 net/sctp/associola.c sctp_assoc_rm_peer(asoc, trans); asoc 1125 net/sctp/associola.c if (asoc->state >= SCTP_STATE_ESTABLISHED) asoc 1134 net/sctp/associola.c if (asoc->state >= SCTP_STATE_ESTABLISHED) { asoc 1135 net/sctp/associola.c asoc->next_tsn = new->next_tsn; asoc 1136 net/sctp/associola.c asoc->ctsn_ack_point = new->ctsn_ack_point; asoc 1137 net/sctp/associola.c asoc->adv_peer_ack_point = new->adv_peer_ack_point; asoc 1142 net/sctp/associola.c sctp_stream_clear(&asoc->stream); asoc 1148 net/sctp/associola.c sctp_ulpq_flush(&asoc->ulpq); asoc 1154 net/sctp/associola.c asoc->overall_error_count = 0; asoc 1160 net/sctp/associola.c if (!sctp_assoc_lookup_paddr(asoc, &trans->ipaddr) && asoc 1161 net/sctp/associola.c !sctp_assoc_add_peer(asoc, &trans->ipaddr, asoc 1165 net/sctp/associola.c asoc->ctsn_ack_point = asoc->next_tsn - 1; asoc 1166 net/sctp/associola.c asoc->adv_peer_ack_point = asoc->ctsn_ack_point; asoc 1168 net/sctp/associola.c if (sctp_state(asoc, COOKIE_WAIT)) asoc 1169 net/sctp/associola.c sctp_stream_update(&asoc->stream, &new->stream); asoc 1172 net/sctp/associola.c if (sctp_assoc_set_id(asoc, GFP_ATOMIC)) asoc 1179 net/sctp/associola.c kfree(asoc->peer.peer_random); asoc 1180 net/sctp/associola.c asoc->peer.peer_random = new->peer.peer_random; asoc 1183 net/sctp/associola.c kfree(asoc->peer.peer_chunks); asoc 1184 net/sctp/associola.c asoc->peer.peer_chunks = new->peer.peer_chunks; asoc 1187 net/sctp/associola.c kfree(asoc->peer.peer_hmacs); asoc 1188 net/sctp/associola.c asoc->peer.peer_hmacs = new->peer.peer_hmacs; asoc 1191 net/sctp/associola.c return sctp_auth_asoc_init_active_key(asoc, GFP_ATOMIC); asoc 1273 net/sctp/associola.c void sctp_assoc_update_retran_path(struct sctp_association *asoc) asoc 1275 net/sctp/associola.c struct sctp_transport *trans = asoc->peer.retran_path; asoc 1279 net/sctp/associola.c if (asoc->peer.transport_count == 1) asoc 1284 net/sctp/associola.c if (asoc->peer.active_path == asoc->peer.retran_path && asoc 1285 net/sctp/associola.c asoc->peer.active_path->state == SCTP_ACTIVE) asoc 1292 net/sctp/associola.c if (&trans->transports == &asoc->peer.transport_addr_list) asoc 1301 net/sctp/associola.c if (trans == asoc->peer.retran_path) asoc 1305 net/sctp/associola.c asoc->peer.retran_path = trans_next; asoc 1308 net/sctp/associola.c __func__, asoc, &asoc->peer.retran_path->ipaddr.sa); asoc 1311 net/sctp/associola.c static void sctp_select_active_and_retran_path(struct sctp_association *asoc) asoc 1317 net/sctp/associola.c list_for_each_entry(trans, &asoc->peer.transport_addr_list, asoc 1351 net/sctp/associola.c if ((asoc->peer.primary_path->state == SCTP_ACTIVE || asoc 1352 net/sctp/associola.c asoc->peer.primary_path->state == SCTP_UNKNOWN) && asoc 1353 net/sctp/associola.c asoc->peer.primary_path != trans_pri) { asoc 1355 net/sctp/associola.c trans_pri = asoc->peer.primary_path; asoc 1369 net/sctp/associola.c trans_pri = sctp_trans_elect_best(asoc->peer.active_path, trans_pf); asoc 1374 net/sctp/associola.c asoc->peer.active_path = trans_pri; asoc 1375 net/sctp/associola.c asoc->peer.retran_path = trans_sec; asoc 1379 net/sctp/associola.c sctp_assoc_choose_alter_transport(struct sctp_association *asoc, asoc 1387 net/sctp/associola.c return asoc->peer.active_path; asoc 1389 net/sctp/associola.c if (last_sent_to == asoc->peer.retran_path) asoc 1390 net/sctp/associola.c sctp_assoc_update_retran_path(asoc); asoc 1392 net/sctp/associola.c return asoc->peer.retran_path; asoc 1396 net/sctp/associola.c void sctp_assoc_update_frag_point(struct sctp_association *asoc) asoc 1398 net/sctp/associola.c int frag = sctp_mtu_payload(sctp_sk(asoc->base.sk), asoc->pathmtu, asoc 1399 net/sctp/associola.c sctp_datachk_len(&asoc->stream)); asoc 1401 net/sctp/associola.c if (asoc->user_frag) asoc 1402 net/sctp/associola.c frag = min_t(int, frag, asoc->user_frag); asoc 1405 net/sctp/associola.c sctp_datachk_len(&asoc->stream)); asoc 1407 net/sctp/associola.c asoc->frag_point = SCTP_TRUNC4(frag); asoc 1410 net/sctp/associola.c void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu) asoc 1412 net/sctp/associola.c if (asoc->pathmtu != pmtu) { asoc 1413 net/sctp/associola.c asoc->pathmtu = pmtu; asoc 1414 net/sctp/associola.c sctp_assoc_update_frag_point(asoc); asoc 1417 net/sctp/associola.c pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc, asoc 1418 net/sctp/associola.c asoc->pathmtu, asoc->frag_point); asoc 1424 net/sctp/associola.c void sctp_assoc_sync_pmtu(struct sctp_association *asoc) asoc 1429 net/sctp/associola.c if (!asoc) asoc 1433 net/sctp/associola.c list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) { asoc 1443 net/sctp/associola.c sctp_assoc_set_pmtu(asoc, pmtu); asoc 1447 net/sctp/associola.c static inline bool sctp_peer_needs_update(struct sctp_association *asoc) asoc 1449 net/sctp/associola.c struct net *net = sock_net(asoc->base.sk); asoc 1450 net/sctp/associola.c switch (asoc->state) { asoc 1455 net/sctp/associola.c if ((asoc->rwnd > asoc->a_rwnd) && asoc 1456 net/sctp/associola.c ((asoc->rwnd - asoc->a_rwnd) >= max_t(__u32, asoc 1457 net/sctp/associola.c (asoc->base.sk->sk_rcvbuf >> net->sctp.rwnd_upd_shift), asoc 1458 net/sctp/associola.c asoc->pathmtu))) asoc 1468 net/sctp/associola.c void sctp_assoc_rwnd_increase(struct sctp_association *asoc, unsigned int len) asoc 1473 net/sctp/associola.c if (asoc->rwnd_over) { asoc 1474 net/sctp/associola.c if (asoc->rwnd_over >= len) { asoc 1475 net/sctp/associola.c asoc->rwnd_over -= len; asoc 1477 net/sctp/associola.c asoc->rwnd += (len - asoc->rwnd_over); asoc 1478 net/sctp/associola.c asoc->rwnd_over = 0; asoc 1481 net/sctp/associola.c asoc->rwnd += len; asoc 1489 net/sctp/associola.c if (asoc->rwnd_press) { asoc 1490 net/sctp/associola.c int change = min(asoc->pathmtu, asoc->rwnd_press); asoc 1491 net/sctp/associola.c asoc->rwnd += change; asoc 1492 net/sctp/associola.c asoc->rwnd_press -= change; asoc 1496 net/sctp/associola.c __func__, asoc, len, asoc->rwnd, asoc->rwnd_over, asoc 1497 net/sctp/associola.c asoc->a_rwnd); asoc 1504 net/sctp/associola.c if (sctp_peer_needs_update(asoc)) { asoc 1505 net/sctp/associola.c asoc->a_rwnd = asoc->rwnd; asoc 1508 net/sctp/associola.c "a_rwnd:%u\n", __func__, asoc, asoc->rwnd, asoc 1509 net/sctp/associola.c asoc->a_rwnd); asoc 1511 net/sctp/associola.c sack = sctp_make_sack(asoc); asoc 1515 net/sctp/associola.c asoc->peer.sack_needed = 0; asoc 1517 net/sctp/associola.c sctp_outq_tail(&asoc->outqueue, sack, GFP_ATOMIC); asoc 1520 net/sctp/associola.c timer = &asoc->timers[SCTP_EVENT_TIMEOUT_SACK]; asoc 1522 net/sctp/associola.c sctp_association_put(asoc); asoc 1527 net/sctp/associola.c void sctp_assoc_rwnd_decrease(struct sctp_association *asoc, unsigned int len) asoc 1532 net/sctp/associola.c if (unlikely(!asoc->rwnd || asoc->rwnd_over)) asoc 1534 net/sctp/associola.c "asoc->rwnd_over:%u!\n", __func__, asoc, asoc 1535 net/sctp/associola.c asoc->rwnd, asoc->rwnd_over); asoc 1537 net/sctp/associola.c if (asoc->ep->rcvbuf_policy) asoc 1538 net/sctp/associola.c rx_count = atomic_read(&asoc->rmem_alloc); asoc 1540 net/sctp/associola.c rx_count = atomic_read(&asoc->base.sk->sk_rmem_alloc); asoc 1547 net/sctp/associola.c if (rx_count >= asoc->base.sk->sk_rcvbuf) asoc 1550 net/sctp/associola.c if (asoc->rwnd >= len) { asoc 1551 net/sctp/associola.c asoc->rwnd -= len; asoc 1553 net/sctp/associola.c asoc->rwnd_press += asoc->rwnd; asoc 1554 net/sctp/associola.c asoc->rwnd = 0; asoc 1557 net/sctp/associola.c asoc->rwnd_over += len - asoc->rwnd; asoc 1558 net/sctp/associola.c asoc->rwnd = 0; asoc 1562 net/sctp/associola.c __func__, asoc, len, asoc->rwnd, asoc->rwnd_over, asoc 1563 net/sctp/associola.c asoc->rwnd_press); asoc 1569 net/sctp/associola.c int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc, asoc 1577 net/sctp/associola.c flags = (PF_INET6 == asoc->base.sk->sk_family) ? SCTP_ADDR6_ALLOWED : 0; asoc 1578 net/sctp/associola.c if (asoc->peer.ipv4_address) asoc 1580 net/sctp/associola.c if (asoc->peer.ipv6_address) asoc 1583 net/sctp/associola.c return sctp_bind_addr_copy(sock_net(asoc->base.sk), asoc 1584 net/sctp/associola.c &asoc->base.bind_addr, asoc 1585 net/sctp/associola.c &asoc->ep->base.bind_addr, asoc 1590 net/sctp/associola.c int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc, asoc 1598 net/sctp/associola.c return sctp_raw_to_bind_addrs(&asoc->base.bind_addr, raw, var_size3, asoc 1599 net/sctp/associola.c asoc->ep->base.bind_addr.port, gfp); asoc 1603 net/sctp/associola.c int sctp_assoc_lookup_laddr(struct sctp_association *asoc, asoc 1608 net/sctp/associola.c if ((asoc->base.bind_addr.port == ntohs(laddr->v4.sin_port)) && asoc 1609 net/sctp/associola.c sctp_bind_addr_match(&asoc->base.bind_addr, laddr, asoc 1610 net/sctp/associola.c sctp_sk(asoc->base.sk))) asoc 1617 net/sctp/associola.c int sctp_assoc_set_id(struct sctp_association *asoc, gfp_t gfp) asoc 1623 net/sctp/associola.c if (asoc->assoc_id) asoc 1632 net/sctp/associola.c ret = idr_alloc_cyclic(&sctp_assocs_id, asoc, SCTP_ALL_ASSOC + 1, 0, asoc 1640 net/sctp/associola.c asoc->assoc_id = (sctp_assoc_t)ret; asoc 1645 net/sctp/associola.c static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc) asoc 1650 net/sctp/associola.c list_for_each_entry_safe(asconf, tmp, &asoc->addip_chunk_list, list) { asoc 1657 net/sctp/associola.c static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc) asoc 1662 net/sctp/associola.c list_for_each_entry_safe(ack, tmp, &asoc->asconf_ack_list, asoc 1670 net/sctp/associola.c void sctp_assoc_clean_asconf_ack_cache(const struct sctp_association *asoc) asoc 1678 net/sctp/associola.c list_for_each_entry_safe(ack, tmp, &asoc->asconf_ack_list, asoc 1681 net/sctp/associola.c htonl(asoc->peer.addip_serial)) asoc 1691 net/sctp/associola.c const struct sctp_association *asoc, asoc 1699 net/sctp/associola.c list_for_each_entry(ack, &asoc->asconf_ack_list, transmitted_list) { asoc 1711 net/sctp/associola.c void sctp_asconf_queue_teardown(struct sctp_association *asoc) asoc 1714 net/sctp/associola.c sctp_assoc_free_asconf_acks(asoc); asoc 1717 net/sctp/associola.c sctp_assoc_free_asconf_queue(asoc); asoc 1720 net/sctp/associola.c if (asoc->addip_last_asconf) asoc 1721 net/sctp/associola.c sctp_chunk_free(asoc->addip_last_asconf); asoc 222 net/sctp/auth.c const struct sctp_association *asoc, asoc 226 net/sctp/auth.c (struct sctp_random_param *)asoc->c.auth_random, asoc 227 net/sctp/auth.c (struct sctp_chunks_param *)asoc->c.auth_chunks, asoc 228 net/sctp/auth.c (struct sctp_hmac_algo_param *)asoc->c.auth_hmacs, gfp); asoc 233 net/sctp/auth.c const struct sctp_association *asoc, asoc 236 net/sctp/auth.c return sctp_auth_make_key_vector(asoc->peer.peer_random, asoc 237 net/sctp/auth.c asoc->peer.peer_chunks, asoc 238 net/sctp/auth.c asoc->peer.peer_hmacs, asoc 287 net/sctp/auth.c const struct sctp_association *asoc, asoc 311 net/sctp/auth.c local_key_vector = sctp_auth_make_local_vector(asoc, gfp); asoc 312 net/sctp/auth.c peer_key_vector = sctp_auth_make_peer_vector(asoc, gfp); asoc 354 net/sctp/auth.c struct sctp_association *asoc, asoc 360 net/sctp/auth.c BUG_ON(!list_empty(&asoc->endpoint_shared_keys)); asoc 369 net/sctp/auth.c list_add(&new->key_list, &asoc->endpoint_shared_keys); asoc 375 net/sctp/auth.c sctp_auth_destroy_keys(&asoc->endpoint_shared_keys); asoc 383 net/sctp/auth.c int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp) asoc 392 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 400 net/sctp/auth.c ep_key = sctp_auth_get_shkey(asoc, asoc->active_key_id); asoc 403 net/sctp/auth.c secret = sctp_auth_asoc_create_secret(asoc, ep_key, gfp); asoc 407 net/sctp/auth.c sctp_auth_key_put(asoc->asoc_shared_key); asoc 408 net/sctp/auth.c asoc->asoc_shared_key = secret; asoc 409 net/sctp/auth.c asoc->shkey = ep_key; asoc 414 net/sctp/auth.c list_for_each_entry(chunk, &asoc->outqueue.out_chunk_list, list) { asoc 415 net/sctp/auth.c if (sctp_auth_send_cid(chunk->chunk_hdr->type, asoc)) { asoc 418 net/sctp/auth.c chunk->shkey = asoc->shkey; asoc 430 net/sctp/auth.c const struct sctp_association *asoc, asoc 436 net/sctp/auth.c key_for_each(key, &asoc->endpoint_shared_keys) { asoc 523 net/sctp/auth.c struct sctp_hmac *sctp_auth_asoc_get_hmac(const struct sctp_association *asoc) asoc 531 net/sctp/auth.c if (asoc->default_hmac_id) asoc 532 net/sctp/auth.c return &sctp_hmac_list[asoc->default_hmac_id]; asoc 537 net/sctp/auth.c hmacs = asoc->peer.peer_hmacs; asoc 583 net/sctp/auth.c int sctp_auth_asoc_verify_hmac_id(const struct sctp_association *asoc, asoc 589 net/sctp/auth.c if (!asoc) asoc 592 net/sctp/auth.c hmacs = (struct sctp_hmac_algo_param *)asoc->c.auth_hmacs; asoc 605 net/sctp/auth.c void sctp_auth_asoc_set_default_hmac(struct sctp_association *asoc, asoc 614 net/sctp/auth.c if (asoc->default_hmac_id) asoc 619 net/sctp/auth.c ep = asoc->ep; asoc 629 net/sctp/auth.c asoc->default_hmac_id = id; asoc 673 net/sctp/auth.c int sctp_auth_send_cid(enum sctp_cid chunk, const struct sctp_association *asoc) asoc 675 net/sctp/auth.c if (!asoc) asoc 678 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 681 net/sctp/auth.c return __sctp_auth_cid(chunk, asoc->peer.peer_chunks); asoc 685 net/sctp/auth.c int sctp_auth_recv_cid(enum sctp_cid chunk, const struct sctp_association *asoc) asoc 687 net/sctp/auth.c if (!asoc) asoc 690 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 694 net/sctp/auth.c (struct sctp_chunks_param *)asoc->c.auth_chunks); asoc 706 net/sctp/auth.c void sctp_auth_calculate_hmac(const struct sctp_association *asoc, asoc 724 net/sctp/auth.c if (key_id == asoc->active_key_id) asoc 725 net/sctp/auth.c asoc_key = asoc->asoc_shared_key; asoc 728 net/sctp/auth.c asoc_key = sctp_auth_asoc_create_secret(asoc, ep_key, gfp); asoc 738 net/sctp/auth.c tfm = asoc->ep->auth_hmacs[hmac_id]; asoc 823 net/sctp/auth.c struct sctp_association *asoc, asoc 834 net/sctp/auth.c if (asoc) { asoc 835 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 837 net/sctp/auth.c sh_keys = &asoc->endpoint_shared_keys; asoc 875 net/sctp/auth.c struct sctp_association *asoc, asoc 883 net/sctp/auth.c if (asoc) { asoc 884 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 886 net/sctp/auth.c sh_keys = &asoc->endpoint_shared_keys; asoc 903 net/sctp/auth.c if (asoc) { asoc 904 net/sctp/auth.c asoc->active_key_id = key_id; asoc 905 net/sctp/auth.c sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL); asoc 913 net/sctp/auth.c struct sctp_association *asoc, asoc 923 net/sctp/auth.c if (asoc) { asoc 924 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 926 net/sctp/auth.c if (asoc->active_key_id == key_id) asoc 929 net/sctp/auth.c sh_keys = &asoc->endpoint_shared_keys; asoc 957 net/sctp/auth.c struct sctp_association *asoc, __u16 key_id) asoc 966 net/sctp/auth.c if (asoc) { asoc 967 net/sctp/auth.c if (!asoc->peer.auth_capable) asoc 969 net/sctp/auth.c if (asoc->active_key_id == key_id) asoc 972 net/sctp/auth.c sh_keys = &asoc->endpoint_shared_keys; asoc 996 net/sctp/auth.c if (asoc && !list_empty(&key->key_list) && asoc 1000 net/sctp/auth.c ev = sctp_ulpevent_make_authkey(asoc, key->key_id, asoc 1003 net/sctp/auth.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 74 net/sctp/chunk.c struct sctp_association *asoc = NULL; asoc 89 net/sctp/chunk.c asoc = chunk->asoc; asoc 93 net/sctp/chunk.c error = asoc->outqueue.error; asoc 95 net/sctp/chunk.c notify = sctp_ulpevent_type_enabled(asoc->subscribe, asoc 107 net/sctp/chunk.c ev = sctp_ulpevent_make_send_failed(asoc, chunk, sent, asoc 110 net/sctp/chunk.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 148 net/sctp/chunk.c struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, asoc 167 net/sctp/chunk.c if (asoc->peer.prsctp_capable && sinfo->sinfo_timetolive && asoc 176 net/sctp/chunk.c max_data = asoc->frag_point; asoc 178 net/sctp/chunk.c max_data = sctp_min_frag_point(sctp_sk(asoc->base.sk), asoc 179 net/sctp/chunk.c sctp_datachk_len(&asoc->stream)); asoc 181 net/sctp/chunk.c __func__, asoc, max_data); asoc 188 net/sctp/chunk.c if (sctp_auth_send_cid(SCTP_CID_DATA, asoc)) { asoc 189 net/sctp/chunk.c struct sctp_hmac *hmac_desc = sctp_auth_asoc_get_hmac(asoc); asoc 196 net/sctp/chunk.c sinfo->sinfo_ssn != asoc->active_key_id) { asoc 197 net/sctp/chunk.c shkey = sctp_auth_get_shkey(asoc, sinfo->sinfo_ssn); asoc 203 net/sctp/chunk.c shkey = asoc->shkey; asoc 216 net/sctp/chunk.c if (timer_pending(&asoc->timers[SCTP_EVENT_TIMEOUT_SACK]) && asoc 217 net/sctp/chunk.c asoc->outqueue.out_qlen == 0 && asoc 218 net/sctp/chunk.c list_empty(&asoc->outqueue.retransmit) && asoc 223 net/sctp/chunk.c if (asoc->state < SCTP_STATE_COOKIE_ECHOED) asoc 230 net/sctp/chunk.c SCTP_INC_STATS(sock_net(asoc->base.sk), asoc 264 net/sctp/chunk.c chunk = asoc->stream.si->make_datafrag(asoc, sinfo, len, frag, asoc 304 net/sctp/chunk.c if (!chunk->asoc->peer.prsctp_capable) asoc 317 net/sctp/chunk.c SCTP_SO(&chunk->asoc->stream, asoc 321 net/sctp/chunk.c chunk->asoc->abandoned_sent[SCTP_PR_INDEX(TTL)]++; asoc 324 net/sctp/chunk.c chunk->asoc->abandoned_unsent[SCTP_PR_INDEX(TTL)]++; asoc 332 net/sctp/chunk.c SCTP_SO(&chunk->asoc->stream, asoc 335 net/sctp/chunk.c chunk->asoc->abandoned_sent[SCTP_PR_INDEX(RTX)]++; asoc 28 net/sctp/diag.c struct sctp_association *asoc) asoc 32 net/sctp/diag.c struct timer_list *t3_rtx = &asoc->peer.primary_path->T3_rtx_timer; asoc 34 net/sctp/diag.c laddr = list_entry(asoc->base.bind_addr.address_list.next, asoc 36 net/sctp/diag.c paddr = asoc->peer.primary_path->ipaddr; asoc 37 net/sctp/diag.c dst = asoc->peer.primary_path->dst; asoc 40 net/sctp/diag.c r->id.idiag_sport = htons(asoc->base.bind_addr.port); asoc 41 net/sctp/diag.c r->id.idiag_dport = htons(asoc->peer.port); asoc 59 net/sctp/diag.c r->idiag_state = asoc->state; asoc 62 net/sctp/diag.c r->idiag_retrans = asoc->rtx_data_chunks; asoc 98 net/sctp/diag.c struct sctp_association *asoc) asoc 106 net/sctp/diag.c addrlen * asoc->peer.transport_count); asoc 111 net/sctp/diag.c list_for_each_entry(from, &asoc->peer.transport_addr_list, asoc 123 net/sctp/diag.c static int inet_sctp_diag_fill(struct sock *sk, struct sctp_association *asoc, asoc 147 net/sctp/diag.c if (asoc) { asoc 148 net/sctp/diag.c inet_diag_msg_sctpasoc_fill(r, sk, asoc); asoc 163 net/sctp/diag.c if (asoc && asoc->ep->sndbuf_policy) asoc 164 net/sctp/diag.c amt = asoc->sndbuf_used; asoc 168 net/sctp/diag.c if (asoc && asoc->ep->rcvbuf_policy) asoc 169 net/sctp/diag.c amt = atomic_read(&asoc->rmem_alloc); asoc 197 net/sctp/diag.c infox.asoc = asoc; asoc 200 net/sctp/diag.c addr_list = asoc ? &asoc->base.bind_addr.address_list asoc 205 net/sctp/diag.c if (asoc && (ext & (1 << (INET_DIAG_CONG - 1)))) asoc 209 net/sctp/diag.c if (asoc && inet_diag_msg_sctpaddrs_fill(skb, asoc)) asoc 229 net/sctp/diag.c static size_t inet_assoc_attr_size(struct sctp_association *asoc) asoc 235 net/sctp/diag.c list_for_each_entry_rcu(laddr, &asoc->base.bind_addr.address_list, asoc 240 net/sctp/diag.c + nla_total_size(addrlen * asoc->peer.transport_count) asoc 250 net/sctp/diag.c struct sctp_association *assoc = tsp->asoc; asoc 251 net/sctp/diag.c struct sock *sk = tsp->asoc->base.sk; asoc 297 net/sctp/diag.c struct sctp_endpoint *ep = tsp->asoc->ep; asoc 351 net/sctp/diag.c struct sctp_endpoint *ep = tsp->asoc->ep; asoc 359 net/sctp/diag.c if (tsp->asoc != assoc) asoc 420 net/sctp/diag.c if (infox->asoc) { asoc 421 net/sctp/diag.c r->idiag_rqueue = atomic_read(&infox->asoc->rmem_alloc); asoc 422 net/sctp/diag.c r->idiag_wqueue = infox->asoc->sndbuf_used; asoc 428 net/sctp/diag.c sctp_get_sctp_info(sk, infox->asoc, infox->sctpinfo); asoc 152 net/sctp/endpointola.c struct sctp_association *asoc) asoc 160 net/sctp/endpointola.c if (asoc->temp) asoc 164 net/sctp/endpointola.c list_add_tail(&asoc->asocs, &ep->asocs); asoc 265 net/sctp/endpointola.c struct sctp_association *asoc = NULL; asoc 282 net/sctp/endpointola.c asoc = t->asoc; asoc 285 net/sctp/endpointola.c return asoc; asoc 318 net/sctp/endpointola.c struct sctp_association *asoc; asoc 332 net/sctp/endpointola.c asoc = NULL; asoc 369 net/sctp/endpointola.c if (NULL == chunk->asoc) { asoc 370 net/sctp/endpointola.c asoc = sctp_endpoint_lookup_assoc(ep, asoc 373 net/sctp/endpointola.c chunk->asoc = asoc; asoc 377 net/sctp/endpointola.c state = asoc ? asoc->state : SCTP_STATE_CLOSED; asoc 378 net/sctp/endpointola.c if (sctp_auth_recv_cid(subtype.chunk, asoc) && !chunk->auth) asoc 384 net/sctp/endpointola.c if (asoc && sctp_chunk_is_data(chunk)) asoc 385 net/sctp/endpointola.c asoc->peer.last_data_from = chunk->transport; asoc 388 net/sctp/endpointola.c if (asoc) asoc 389 net/sctp/endpointola.c asoc->stats.ictrlchunks++; asoc 396 net/sctp/endpointola.c ep, asoc, chunk, GFP_ATOMIC); asoc 88 net/sctp/input.c struct sctp_association *asoc; asoc 159 net/sctp/input.c asoc = __sctp_rcv_lookup(net, skb, &src, &dest, &transport); asoc 161 net/sctp/input.c if (!asoc) asoc 165 net/sctp/input.c rcvr = asoc ? &asoc->base : &ep->base; asoc 175 net/sctp/input.c asoc = NULL; asoc 195 net/sctp/input.c if (!asoc) { asoc 210 net/sctp/input.c chunk = sctp_chunkify(skb, asoc, sk, GFP_ATOMIC); asoc 385 net/sctp/input.c void sctp_icmp_frag_needed(struct sock *sk, struct sctp_association *asoc, asoc 393 net/sctp/input.c asoc->pmtu_pending = 1; asoc 413 net/sctp/input.c sctp_assoc_sync_pmtu(asoc); asoc 416 net/sctp/input.c sctp_retransmit(&asoc->outqueue, t, SCTP_RTXR_PMTUD); asoc 443 net/sctp/input.c struct sctp_association *asoc, asoc 452 net/sctp/input.c sctp_association_hold(asoc); asoc 461 net/sctp/input.c sctp_association_put(asoc); asoc 465 net/sctp/input.c asoc->state, asoc->ep, asoc, t, asoc 481 net/sctp/input.c struct sctp_association *asoc; asoc 499 net/sctp/input.c asoc = __sctp_lookup_association(net, &saddr, &daddr, &transport); asoc 500 net/sctp/input.c if (!asoc) asoc 503 net/sctp/input.c sk = asoc->base.sk; asoc 525 net/sctp/input.c ntohl(chunkhdr->init_hdr.init_tag) != asoc->c.my_vtag) asoc 528 net/sctp/input.c } else if (vtag != asoc->c.peer_vtag) { asoc 540 net/sctp/input.c *app = asoc; asoc 578 net/sctp/input.c struct sctp_association *asoc = NULL; asoc 590 net/sctp/input.c sk = sctp_err_lookup(net, AF_INET, skb, sctp_hdr(skb), &asoc, &transport); asoc 612 net/sctp/input.c sctp_icmp_frag_needed(sk, asoc, transport, asoc 617 net/sctp/input.c sctp_icmp_proto_unreachable(sk, asoc, asoc 885 net/sctp/input.c if (!net_eq(t->asoc->base.net, x->net)) asoc 887 net/sctp/input.c if (x->lport != htons(t->asoc->base.bind_addr.port)) asoc 900 net/sctp/input.c return sctp_hashfn(t->asoc->base.net, asoc 901 net/sctp/input.c htons(t->asoc->base.bind_addr.port), asoc 937 net/sctp/input.c if (t->asoc->temp) asoc 940 net/sctp/input.c arg.net = sock_net(t->asoc->base.sk); asoc 942 net/sctp/input.c arg.lport = htons(t->asoc->base.bind_addr.port); asoc 949 net/sctp/input.c if (transport->asoc->ep == t->asoc->ep) { asoc 965 net/sctp/input.c if (t->asoc->temp) asoc 993 net/sctp/input.c if (sctp_bind_addr_match(&t->asoc->base.bind_addr, asoc 994 net/sctp/input.c laddr, sctp_sk(t->asoc->base.sk))) asoc 1020 net/sctp/input.c if (ep == t->asoc->ep) asoc 1034 net/sctp/input.c struct sctp_association *asoc = NULL; asoc 1040 net/sctp/input.c asoc = t->asoc; asoc 1044 net/sctp/input.c return asoc; asoc 1054 net/sctp/input.c struct sctp_association *asoc; asoc 1057 net/sctp/input.c asoc = __sctp_lookup_association(net, laddr, paddr, transportp); asoc 1060 net/sctp/input.c return asoc; asoc 1100 net/sctp/input.c struct sctp_association *asoc; asoc 1136 net/sctp/input.c asoc = __sctp_lookup_association(net, laddr, paddr, transportp); asoc 1137 net/sctp/input.c if (asoc) asoc 1138 net/sctp/input.c return asoc; asoc 1197 net/sctp/input.c struct sctp_association *asoc = NULL; asoc 1235 net/sctp/input.c asoc = __sctp_rcv_asconf_lookup( asoc 1243 net/sctp/input.c if (asoc) asoc 1250 net/sctp/input.c return asoc; asoc 1298 net/sctp/input.c struct sctp_association *asoc; asoc 1300 net/sctp/input.c asoc = __sctp_lookup_association(net, laddr, paddr, transportp); asoc 1301 net/sctp/input.c if (asoc) asoc 1308 net/sctp/input.c asoc = __sctp_rcv_lookup_harder(net, skb, laddr, transportp); asoc 1309 net/sctp/input.c if (asoc) asoc 1322 net/sctp/input.c return asoc; asoc 78 net/sctp/inqueue.c if (chunk->asoc) asoc 79 net/sctp/inqueue.c chunk->asoc->stats.ipackets++; asoc 176 net/sctp/inqueue.c if (chunk->asoc) asoc 177 net/sctp/inqueue.c sock_rps_save_rxhash(chunk->asoc->base.sk, chunk->skb); asoc 130 net/sctp/ipv6.c struct sctp_association *asoc; asoc 144 net/sctp/ipv6.c sk = sctp_err_lookup(net, AF_INET6, skb, sctp_hdr(skb), &asoc, &transport); asoc 161 net/sctp/ipv6.c sctp_icmp_frag_needed(sk, asoc, transport, ntohl(info)); asoc 165 net/sctp/ipv6.c sctp_icmp_proto_unreachable(sk, asoc, transport); asoc 229 net/sctp/ipv6.c struct sctp_association *asoc = t->asoc; asoc 248 net/sctp/ipv6.c else if (asoc) asoc 249 net/sctp/ipv6.c fl6->flowi6_oif = asoc->base.sk->sk_bound_dev_if; asoc 264 net/sctp/ipv6.c if (asoc) asoc 265 net/sctp/ipv6.c fl6->fl6_sport = htons(asoc->base.bind_addr.port); asoc 280 net/sctp/ipv6.c if (!asoc || saddr) { asoc 286 net/sctp/ipv6.c bp = &asoc->base.bind_addr; asoc 300 net/sctp/ipv6.c !asoc->src_out_of_asoc_ok)) asoc 401 net/sctp/ipv6.c pr_debug("%s: asoc:%p dst:%p\n", __func__, t->asoc, t->dst); asoc 712 net/sctp/ipv6.c struct sctp_association *asoc, asoc 725 net/sctp/ipv6.c sctp_copy_sock(newsk, sk, asoc); asoc 745 net/sctp/ipv6.c sctp_v6_to_sk_daddr(&asoc->peer.primary_addr, newsk); asoc 809 net/sctp/ipv6.c struct sctp_association *asoc; asoc 816 net/sctp/ipv6.c asoc = event->asoc; asoc 817 net/sctp/ipv6.c paddr = &asoc->peer.primary_addr; asoc 821 net/sctp/ipv6.c addr->v4.sin_port = htons(asoc->peer.port); asoc 830 net/sctp/ipv6.c addr->v6.sin6_port = htons(asoc->peer.port); asoc 834 net/sctp/ipv6.c *addrlen = sctp_v6_addr_to_user(sctp_sk(asoc->base.sk), addr); asoc 77 net/sctp/output.c struct sctp_association *asoc = tp->asoc; asoc 91 net/sctp/output.c if (asoc) { asoc 92 net/sctp/output.c sk = asoc->base.sk; asoc 98 net/sctp/output.c if (!asoc) asoc 104 net/sctp/output.c if (asoc->param_flags & SPP_PMTUD_ENABLE) asoc 105 net/sctp/output.c sctp_assoc_sync_pmtu(asoc); asoc 107 net/sctp/output.c if (asoc->param_flags & SPP_PMTUD_ENABLE) asoc 108 net/sctp/output.c sctp_assoc_sync_pmtu(asoc); asoc 111 net/sctp/output.c if (asoc->pmtu_pending) { asoc 112 net/sctp/output.c if (asoc->param_flags & SPP_PMTUD_ENABLE) asoc 113 net/sctp/output.c sctp_assoc_sync_pmtu(asoc); asoc 114 net/sctp/output.c asoc->pmtu_pending = 0; asoc 121 net/sctp/output.c struct sctp_chunk *chunk = sctp_get_ecne_prepend(asoc); asoc 137 net/sctp/output.c : asoc->pathmtu; asoc 218 net/sctp/output.c struct sctp_association *asoc = pkt->transport->asoc; asoc 223 net/sctp/output.c if (!asoc) asoc 238 net/sctp/output.c auth = sctp_make_auth(asoc, chunk->shkey->key_id); asoc 264 net/sctp/output.c struct sctp_association *asoc; asoc 266 net/sctp/output.c asoc = pkt->transport->asoc; asoc 267 net/sctp/output.c timer = &asoc->timers[SCTP_EVENT_TIMEOUT_SACK]; asoc 274 net/sctp/output.c pkt->transport->asoc->peer.sack_generation) asoc 277 net/sctp/output.c asoc->a_rwnd = asoc->rwnd; asoc 278 net/sctp/output.c sack = sctp_make_sack(asoc); asoc 285 net/sctp/output.c SCTP_INC_STATS(sock_net(asoc->base.sk), asoc 287 net/sctp/output.c asoc->stats.octrlchunks++; asoc 288 net/sctp/output.c asoc->peer.sack_needed = 0; asoc 290 net/sctp/output.c sctp_association_put(asoc); asoc 336 net/sctp/output.c if (chunk->asoc) asoc 337 net/sctp/output.c chunk->asoc->stats.osacks++; asoc 490 net/sctp/output.c sctp_auth_calculate_hmac(tp->asoc, nskb, auth, asoc 548 net/sctp/output.c struct sctp_association *asoc = tp->asoc; asoc 605 net/sctp/output.c if (packet->has_data && sctp_state(asoc, ESTABLISHED) && asoc 606 net/sctp/output.c asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) { asoc 608 net/sctp/output.c &asoc->timers[SCTP_EVENT_TIMEOUT_AUTOCLOSE]; asoc 610 net/sctp/output.c asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]; asoc 613 net/sctp/output.c sctp_association_hold(asoc); asoc 618 net/sctp/output.c if (asoc) { asoc 619 net/sctp/output.c asoc->stats.opackets += pkt_count; asoc 620 net/sctp/output.c if (asoc->peer.last_sent_to != tp) asoc 621 net/sctp/output.c asoc->peer.last_sent_to = tp; asoc 653 net/sctp/output.c struct sctp_association *asoc = transport->asoc; asoc 654 net/sctp/output.c struct sctp_outq *q = &asoc->outqueue; asoc 669 net/sctp/output.c rwnd = asoc->peer.rwnd; asoc 703 net/sctp/output.c if ((sctp_sk(asoc->base.sk)->nodelay || inflight == 0) && asoc 704 net/sctp/output.c !asoc->force_delay) asoc 712 net/sctp/output.c if (!sctp_state(asoc, ESTABLISHED)) asoc 719 net/sctp/output.c packet->overhead - sctp_datachk_len(&chunk->asoc->stream) - 4) asoc 737 net/sctp/output.c struct sctp_association *asoc = transport->asoc; asoc 738 net/sctp/output.c u32 rwnd = asoc->peer.rwnd; asoc 744 net/sctp/output.c asoc->outqueue.outstanding_bytes += datasize; asoc 752 net/sctp/output.c asoc->peer.rwnd = rwnd; asoc 754 net/sctp/output.c asoc->stream.si->assign_number(chunk); asoc 775 net/sctp/output.c if (packet->transport->asoc) asoc 776 net/sctp/output.c pmtu = packet->transport->asoc->pathmtu; asoc 68 net/sctp/outqueue.c oute = SCTP_SO(&q->asoc->stream, stream)->ext; asoc 89 net/sctp/outqueue.c oute = SCTP_SO(&q->asoc->stream, stream)->ext; asoc 190 net/sctp/outqueue.c void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q) asoc 194 net/sctp/outqueue.c q->asoc = asoc; asoc 200 net/sctp/outqueue.c sctp_sched_set_sched(asoc, sctp_sk(asoc->base.sk)->default_ss); asoc 212 net/sctp/outqueue.c list_for_each_entry(transport, &q->asoc->peer.transport_addr_list, asoc 269 net/sctp/outqueue.c sctp_outq_init(q->asoc, q); asoc 282 net/sctp/outqueue.c struct net *net = sock_net(q->asoc->base.sk); asoc 299 net/sctp/outqueue.c if (chunk->asoc->peer.prsctp_capable && asoc 301 net/sctp/outqueue.c chunk->asoc->sent_cnt_removable++; asoc 341 net/sctp/outqueue.c static int sctp_prsctp_prune_sent(struct sctp_association *asoc, asoc 357 net/sctp/outqueue.c sctp_insert_list(&asoc->outqueue.abandoned, asoc 360 net/sctp/outqueue.c streamout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream); asoc 361 net/sctp/outqueue.c asoc->sent_cnt_removable--; asoc 362 net/sctp/outqueue.c asoc->abandoned_sent[SCTP_PR_INDEX(PRIO)]++; asoc 365 net/sctp/outqueue.c if (queue != &asoc->outqueue.retransmit && asoc 370 net/sctp/outqueue.c asoc->outqueue.outstanding_bytes -= sctp_data_size(chk); asoc 381 net/sctp/outqueue.c static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, asoc 384 net/sctp/outqueue.c struct sctp_outq *q = &asoc->outqueue; asoc 387 net/sctp/outqueue.c q->sched->unsched_all(&asoc->stream); asoc 398 net/sctp/outqueue.c asoc->sent_cnt_removable--; asoc 399 net/sctp/outqueue.c asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++; asoc 400 net/sctp/outqueue.c if (chk->sinfo.sinfo_stream < asoc->stream.outcnt) { asoc 402 net/sctp/outqueue.c SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream); asoc 413 net/sctp/outqueue.c q->sched->sched_all(&asoc->stream); asoc 419 net/sctp/outqueue.c void sctp_prsctp_prune(struct sctp_association *asoc, asoc 424 net/sctp/outqueue.c if (!asoc->peer.prsctp_capable || !asoc->sent_cnt_removable) asoc 427 net/sctp/outqueue.c msg_len = sctp_prsctp_prune_sent(asoc, sinfo, asoc 428 net/sctp/outqueue.c &asoc->outqueue.retransmit, asoc 433 net/sctp/outqueue.c list_for_each_entry(transport, &asoc->peer.transport_addr_list, asoc 435 net/sctp/outqueue.c msg_len = sctp_prsctp_prune_sent(asoc, sinfo, asoc 442 net/sctp/outqueue.c sctp_prsctp_prune_unsent(asoc, sinfo, msg_len); asoc 473 net/sctp/outqueue.c q->asoc->peer.rwnd += sctp_data_size(chunk); asoc 493 net/sctp/outqueue.c q->asoc->peer.rwnd += sctp_data_size(chunk); asoc 536 net/sctp/outqueue.c struct net *net = sock_net(q->asoc->base.sk); asoc 545 net/sctp/outqueue.c if (transport == transport->asoc->peer.retran_path) asoc 546 net/sctp/outqueue.c sctp_assoc_update_retran_path(transport->asoc); asoc 547 net/sctp/outqueue.c transport->asoc->rtx_data_chunks += asoc 548 net/sctp/outqueue.c transport->asoc->unack_data; asoc 560 net/sctp/outqueue.c transport->asoc->init_retries++; asoc 573 net/sctp/outqueue.c q->asoc->stream.si->generate_ftsn(q, q->asoc->ctsn_ack_point); asoc 718 net/sctp/outqueue.c q->asoc->stats.rtxchunks++; asoc 763 net/sctp/outqueue.c const struct sctp_association *asoc = transport->asoc; asoc 764 net/sctp/outqueue.c const __u16 sport = asoc->base.bind_addr.port; asoc 765 net/sctp/outqueue.c const __u16 dport = asoc->peer.port; asoc 766 net/sctp/outqueue.c const __u32 vtag = asoc->peer.i.init_tag; asoc 782 net/sctp/outqueue.c struct sctp_association *asoc; asoc 809 net/sctp/outqueue.c new_transport = sctp_assoc_lookup_paddr(ctx->asoc, asoc 817 net/sctp/outqueue.c new_transport = ctx->asoc->peer.active_path; asoc 842 net/sctp/outqueue.c new_transport = ctx->asoc->peer.active_path; asoc 859 net/sctp/outqueue.c ctx->asoc->peer.i.init_tag, asoc 860 net/sctp/outqueue.c ctx->asoc->peer.ecn_capable); asoc 883 net/sctp/outqueue.c if (ctx->asoc->src_out_of_asoc_ok && asoc 906 net/sctp/outqueue.c ctx->asoc->base.sk->sk_err = -error; asoc 913 net/sctp/outqueue.c ctx->packet->vtag = ctx->asoc->c.my_vtag; asoc 947 net/sctp/outqueue.c ctx->asoc->stats.octrlchunks++; asoc 958 net/sctp/outqueue.c if (chunk == ctx->asoc->strreset_chunk) asoc 976 net/sctp/outqueue.c if (ctx->asoc->peer.retran_path->state == SCTP_UNCONFIRMED) asoc 979 net/sctp/outqueue.c if (ctx->transport != ctx->asoc->peer.retran_path) { asoc 981 net/sctp/outqueue.c ctx->transport = ctx->asoc->peer.retran_path; asoc 988 net/sctp/outqueue.c sctp_packet_config(ctx->packet, ctx->asoc->peer.i.init_tag, asoc 989 net/sctp/outqueue.c ctx->asoc->peer.ecn_capable); asoc 995 net/sctp/outqueue.c ctx->asoc->base.sk->sk_err = -error; asoc 1024 net/sctp/outqueue.c switch (ctx->asoc->state) { asoc 1066 net/sctp/outqueue.c __u8 stream_state = SCTP_SO(&ctx->asoc->stream, sid)->state; asoc 1109 net/sctp/outqueue.c if (ctx->asoc->state == SCTP_STATE_SHUTDOWN_PENDING) asoc 1112 net/sctp/outqueue.c ctx->asoc->stats.ouodchunks++; asoc 1114 net/sctp/outqueue.c ctx->asoc->stats.oodchunks++; asoc 1148 net/sctp/outqueue.c ctx->q->asoc->base.sk->sk_err = -error; asoc 1171 net/sctp/outqueue.c .asoc = q->asoc, asoc 1187 net/sctp/outqueue.c if (q->asoc->src_out_of_asoc_ok) asoc 1223 net/sctp/outqueue.c struct sctp_association *asoc = q->asoc; asoc 1233 net/sctp/outqueue.c struct sctp_transport *primary = asoc->peer.primary_path; asoc 1239 net/sctp/outqueue.c transport_list = &asoc->peer.transport_addr_list; asoc 1243 net/sctp/outqueue.c asoc->stats.gapcnt += gap_ack_blocks; asoc 1286 net/sctp/outqueue.c if (TSN_lt(asoc->highest_sacked, highest_tsn)) asoc 1287 net/sctp/outqueue.c asoc->highest_sacked = highest_tsn; asoc 1315 net/sctp/outqueue.c if (TSN_lt(asoc->ctsn_ack_point, sack_ctsn)) { asoc 1316 net/sctp/outqueue.c asoc->ctsn_ack_point = sack_ctsn; asoc 1322 net/sctp/outqueue.c if (asoc->fast_recovery && accum_moved) asoc 1331 net/sctp/outqueue.c sctp_sack_update_unack_data(asoc, sack); asoc 1333 net/sctp/outqueue.c ctsn = asoc->ctsn_ack_point; asoc 1342 net/sctp/outqueue.c if (asoc->peer.prsctp_capable && asoc 1344 net/sctp/outqueue.c asoc->sent_cnt_removable--; asoc 1355 net/sctp/outqueue.c asoc->peer.zero_window_announced = !sack_a_rwnd; asoc 1363 net/sctp/outqueue.c asoc->peer.rwnd = sack_a_rwnd; asoc 1365 net/sctp/outqueue.c asoc->stream.si->generate_ftsn(q, sack_ctsn); asoc 1369 net/sctp/outqueue.c "advertised peer ack point:0x%x\n", __func__, asoc, ctsn, asoc 1370 net/sctp/outqueue.c asoc->adv_peer_ack_point); asoc 1485 net/sctp/outqueue.c q->asoc->peer.primary_path->cacc. asoc 1569 net/sctp/outqueue.c struct sctp_association *asoc = transport->asoc; asoc 1587 net/sctp/outqueue.c transport->asoc->overall_error_count = 0; asoc 1596 net/sctp/outqueue.c if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING && asoc 1597 net/sctp/outqueue.c del_timer(&asoc->timers asoc 1599 net/sctp/outqueue.c sctp_association_put(asoc); asoc 1608 net/sctp/outqueue.c transport->asoc, asoc 1636 net/sctp/outqueue.c if (!q->asoc->peer.rwnd && asoc 1638 net/sctp/outqueue.c (sack_ctsn+2 == q->asoc->next_tsn) && asoc 1639 net/sctp/outqueue.c q->asoc->state < SCTP_STATE_SHUTDOWN_PENDING) { asoc 1643 net/sctp/outqueue.c q->asoc->overall_error_count = 0; asoc 1682 net/sctp/outqueue.c struct sctp_association *asoc = q->asoc; asoc 1683 net/sctp/outqueue.c struct sctp_transport *primary = asoc->peer.primary_path; asoc 1788 net/sctp/outqueue.c struct sctp_association *asoc = q->asoc; asoc 1797 net/sctp/outqueue.c if (!asoc->peer.prsctp_capable) asoc 1806 net/sctp/outqueue.c if (TSN_lt(asoc->adv_peer_ack_point, ctsn)) asoc 1807 net/sctp/outqueue.c asoc->adv_peer_ack_point = ctsn; asoc 1842 net/sctp/outqueue.c if (TSN_lte(tsn, asoc->adv_peer_ack_point+1)) { asoc 1843 net/sctp/outqueue.c asoc->adv_peer_ack_point = tsn; asoc 1881 net/sctp/outqueue.c if (asoc->adv_peer_ack_point > ctsn) asoc 1882 net/sctp/outqueue.c ftsn_chunk = sctp_make_fwdtsn(asoc, asoc->adv_peer_ack_point, asoc 1887 net/sctp/outqueue.c SCTP_INC_STATS(sock_net(asoc->base.sk), SCTP_MIB_OUTCTRLCHUNKS); asoc 38 net/sctp/primitive.c int sctp_primitive_ ## name(struct net *net, struct sctp_association *asoc, \ asoc 47 net/sctp/primitive.c state = asoc ? asoc->state : SCTP_STATE_CLOSED; \ asoc 48 net/sctp/primitive.c ep = asoc ? asoc->ep : NULL; \ asoc 50 net/sctp/primitive.c error = sctp_do_sm(net, event_type, subtype, state, ep, asoc, \ asoc 79 net/sctp/proc.c struct sctp_association *asoc; asoc 86 net/sctp/proc.c asoc = sctp_assoc(epb); asoc 88 net/sctp/proc.c peer = asoc->peer.primary_path; asoc 90 net/sctp/proc.c WARN(1, "Association %p with NULL primary path!\n", asoc); asoc 248 net/sctp/proc.c assoc = transport->asoc; asoc 304 net/sctp/proc.c assoc = transport->asoc; asoc 316 net/sctp/proc.c seq_printf(seq, "%d ", tsp->asoc->assoc_id); asoc 410 net/sctp/protocol.c struct sctp_association *asoc = t->asoc; asoc 427 net/sctp/protocol.c if (asoc) { asoc 428 net/sctp/protocol.c fl4->flowi4_tos = RT_CONN_FLAGS_TOS(asoc->base.sk, tos); asoc 429 net/sctp/protocol.c fl4->flowi4_oif = asoc->base.sk->sk_bound_dev_if; asoc 430 net/sctp/protocol.c fl4->fl4_sport = htons(asoc->base.bind_addr.port); asoc 451 net/sctp/protocol.c if (!asoc || saddr) asoc 454 net/sctp/protocol.c bp = &asoc->base.bind_addr; asoc 465 net/sctp/protocol.c !asoc->src_out_of_asoc_ok)) asoc 494 net/sctp/protocol.c asoc->base.sk->sk_bound_dev_if, asoc 495 net/sctp/protocol.c RT_CONN_FLAGS_TOS(asoc->base.sk, tos), asoc 568 net/sctp/protocol.c struct sctp_association *asoc, asoc 580 net/sctp/protocol.c sctp_copy_sock(newsk, sk, asoc); asoc 587 net/sctp/protocol.c newinet->inet_daddr = asoc->peer.primary_addr.v4.sin_addr.s_addr; asoc 898 net/sctp/protocol.c struct sctp_association *asoc; asoc 900 net/sctp/protocol.c asoc = event->asoc; asoc 903 net/sctp/protocol.c sinfrom = &asoc->peer.primary_addr.v4; asoc 904 net/sctp/protocol.c sin->sin_port = htons(asoc->peer.port); asoc 49 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc, asoc 52 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc, asoc 54 net/sctp/sm_make_chunk.c static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc, asoc 59 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 63 net/sctp/sm_make_chunk.c static int sctp_process_param(struct sctp_association *asoc, asoc 77 net/sctp/sm_make_chunk.c struct sctp_association *asoc = chunk->asoc; asoc 87 net/sctp/sm_make_chunk.c ev = sctp_ulpevent_make_authkey(asoc, shkey->key_id, asoc 91 net/sctp/sm_make_chunk.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 99 net/sctp/sm_make_chunk.c struct sctp_association *asoc = chunk->asoc; asoc 110 net/sctp/sm_make_chunk.c chunk->shkey = asoc->shkey; asoc 113 net/sctp/sm_make_chunk.c skb->sk = asoc ? asoc->base.sk : NULL; asoc 206 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, asoc 215 net/sctp/sm_make_chunk.c struct sctp_endpoint *ep = asoc->ep; asoc 235 net/sctp/sm_make_chunk.c init.init_tag = htonl(asoc->c.my_vtag); asoc 236 net/sctp/sm_make_chunk.c init.a_rwnd = htonl(asoc->rwnd); asoc 237 net/sctp/sm_make_chunk.c init.num_outbound_streams = htons(asoc->c.sinit_num_ostreams); asoc 238 net/sctp/sm_make_chunk.c init.num_inbound_streams = htons(asoc->c.sinit_max_instreams); asoc 239 net/sctp/sm_make_chunk.c init.initial_tsn = htonl(asoc->c.initial_tsn); asoc 242 net/sctp/sm_make_chunk.c sp = sctp_sk(asoc->base.sk); asoc 248 net/sctp/sm_make_chunk.c if (asoc->ep->ecn_enable) asoc 251 net/sctp/sm_make_chunk.c if (asoc->ep->prsctp_enable) asoc 259 net/sctp/sm_make_chunk.c if (asoc->ep->asconf_enable) { asoc 265 net/sctp/sm_make_chunk.c if (asoc->ep->reconf_enable) { asoc 273 net/sctp/sm_make_chunk.c if (asoc->ep->intl_enable) { asoc 283 net/sctp/sm_make_chunk.c chunksize += sizeof(asoc->c.auth_random); asoc 286 net/sctp/sm_make_chunk.c auth_hmacs = (struct sctp_paramhdr *)asoc->c.auth_hmacs; asoc 293 net/sctp/sm_make_chunk.c auth_chunks = (struct sctp_paramhdr *)asoc->c.auth_chunks; asoc 319 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_INIT, 0, chunksize, gfp); asoc 340 net/sctp/sm_make_chunk.c if (asoc->ep->ecn_enable) asoc 353 net/sctp/sm_make_chunk.c if (asoc->ep->prsctp_enable) asoc 365 net/sctp/sm_make_chunk.c sctp_addto_chunk(retval, sizeof(asoc->c.auth_random), asoc 366 net/sctp/sm_make_chunk.c asoc->c.auth_random); asoc 379 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, asoc 400 net/sctp/sm_make_chunk.c addrs = sctp_bind_addrs_to_raw(&asoc->base.bind_addr, &addrs_len, gfp); asoc 402 net/sctp/sm_make_chunk.c initack.init_tag = htonl(asoc->c.my_vtag); asoc 403 net/sctp/sm_make_chunk.c initack.a_rwnd = htonl(asoc->rwnd); asoc 404 net/sctp/sm_make_chunk.c initack.num_outbound_streams = htons(asoc->c.sinit_num_ostreams); asoc 405 net/sctp/sm_make_chunk.c initack.num_inbound_streams = htons(asoc->c.sinit_max_instreams); asoc 406 net/sctp/sm_make_chunk.c initack.initial_tsn = htonl(asoc->c.initial_tsn); asoc 411 net/sctp/sm_make_chunk.c cookie = sctp_pack_cookie(asoc->ep, asoc, chunk, &cookie_len, asoc 419 net/sctp/sm_make_chunk.c sp = sctp_sk(asoc->base.sk); asoc 423 net/sctp/sm_make_chunk.c if (asoc->peer.ecn_capable) asoc 426 net/sctp/sm_make_chunk.c if (asoc->peer.prsctp_capable) asoc 429 net/sctp/sm_make_chunk.c if (asoc->peer.asconf_capable) { asoc 435 net/sctp/sm_make_chunk.c if (asoc->peer.reconf_capable) { asoc 443 net/sctp/sm_make_chunk.c if (asoc->peer.intl_capable) { asoc 448 net/sctp/sm_make_chunk.c if (asoc->peer.auth_capable) { asoc 449 net/sctp/sm_make_chunk.c auth_random = (struct sctp_paramhdr *)asoc->c.auth_random; asoc 452 net/sctp/sm_make_chunk.c auth_hmacs = (struct sctp_paramhdr *)asoc->c.auth_hmacs; asoc 458 net/sctp/sm_make_chunk.c auth_chunks = (struct sctp_paramhdr *)asoc->c.auth_chunks; asoc 472 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_INIT_ACK, 0, chunksize, gfp); asoc 487 net/sctp/sm_make_chunk.c sctp_assoc_lookup_paddr(asoc, asoc 494 net/sctp/sm_make_chunk.c if (asoc->peer.ecn_capable) asoc 502 net/sctp/sm_make_chunk.c if (asoc->peer.prsctp_capable) asoc 512 net/sctp/sm_make_chunk.c if (asoc->peer.auth_capable) { asoc 524 net/sctp/sm_make_chunk.c retval->asoc = (struct sctp_association *) asoc; asoc 567 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_cookie_echo(const struct sctp_association *asoc, asoc 574 net/sctp/sm_make_chunk.c cookie = asoc->peer.cookie; asoc 575 net/sctp/sm_make_chunk.c cookie_len = asoc->peer.cookie_len; asoc 578 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_COOKIE_ECHO, 0, asoc 619 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_cookie_ack(const struct sctp_association *asoc, asoc 624 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_COOKIE_ACK, 0, 0, GFP_ATOMIC); asoc 637 net/sctp/sm_make_chunk.c sctp_assoc_lookup_paddr(asoc, asoc 666 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_cwr(const struct sctp_association *asoc, asoc 674 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_ECN_CWR, 0, asoc 701 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_ecne(const struct sctp_association *asoc, asoc 708 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_ECN_ECNE, 0, asoc 722 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_datafrag_empty(const struct sctp_association *asoc, asoc 740 net/sctp/sm_make_chunk.c retval = sctp_make_data(asoc, flags, sizeof(dp) + len, gfp); asoc 754 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_sack(struct sctp_association *asoc) asoc 756 net/sctp/sm_make_chunk.c struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map; asoc 776 net/sctp/sm_make_chunk.c sack.a_rwnd = htonl(asoc->a_rwnd); asoc 785 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_SACK, 0, len, GFP_ATOMIC); asoc 819 net/sctp/sm_make_chunk.c retval->transport = asoc->peer.last_data_from; asoc 831 net/sctp/sm_make_chunk.c asoc->stats.idupchunks += num_dup_tsns; asoc 843 net/sctp/sm_make_chunk.c if (++asoc->peer.sack_generation == 0) { asoc 844 net/sctp/sm_make_chunk.c list_for_each_entry(trans, &asoc->peer.transport_addr_list, asoc 847 net/sctp/sm_make_chunk.c asoc->peer.sack_generation = 1; asoc 854 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_shutdown(const struct sctp_association *asoc, asoc 861 net/sctp/sm_make_chunk.c if (chunk && chunk->asoc) asoc 862 net/sctp/sm_make_chunk.c ctsn = sctp_tsnmap_get_ctsn(&chunk->asoc->peer.tsn_map); asoc 864 net/sctp/sm_make_chunk.c ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map); asoc 868 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN, 0, asoc 882 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_shutdown_ack(const struct sctp_association *asoc, asoc 887 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN_ACK, 0, 0, asoc 906 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 915 net/sctp/sm_make_chunk.c flags |= asoc ? 0 : SCTP_CHUNK_FLAG_T; asoc 917 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN_COMPLETE, flags, asoc 939 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_abort(const struct sctp_association *asoc, asoc 949 net/sctp/sm_make_chunk.c if (!asoc) { asoc 957 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_ABORT, flags, hint, asoc 977 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 984 net/sctp/sm_make_chunk.c retval = sctp_make_abort(asoc, chunk, asoc 1012 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *asoc, asoc 1020 net/sctp/sm_make_chunk.c retval = sctp_make_abort(asoc, NULL, asoc 1078 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1086 net/sctp/sm_make_chunk.c retval = sctp_make_abort(asoc, chunk, sizeof(struct sctp_errhdr) + asoc 1104 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1113 net/sctp/sm_make_chunk.c retval = sctp_make_abort(asoc, chunk, payload_len); asoc 1127 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1134 net/sctp/sm_make_chunk.c retval = sctp_make_abort(asoc, chunk, payload_len); asoc 1146 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_heartbeat(const struct sctp_association *asoc, asoc 1152 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_HEARTBEAT, 0, asoc 1175 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_heartbeat_ack(const struct sctp_association *asoc, asoc 1182 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_HEARTBEAT_ACK, 0, paylen, asoc 1209 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1215 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_ERROR, 0, asoc 1244 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1250 net/sctp/sm_make_chunk.c if (asoc) { asoc 1251 net/sctp/sm_make_chunk.c size = min_t(size_t, size, asoc->pathmtu); asoc 1252 net/sctp/sm_make_chunk.c sp = sctp_sk(asoc->base.sk); asoc 1257 net/sctp/sm_make_chunk.c return sctp_make_op_error_space(asoc, chunk, size); asoc 1261 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_op_error(const struct sctp_association *asoc, asoc 1268 net/sctp/sm_make_chunk.c retval = sctp_make_op_error_space(asoc, chunk, paylen + reserve_tail); asoc 1281 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_auth(const struct sctp_association *asoc, asoc 1289 net/sctp/sm_make_chunk.c hmac_desc = sctp_auth_asoc_get_hmac(asoc); asoc 1293 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_AUTH, 0, asoc 1331 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1345 net/sctp/sm_make_chunk.c retval->asoc = (struct sctp_association *)asoc; asoc 1383 net/sctp/sm_make_chunk.c static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc, asoc 1408 net/sctp/sm_make_chunk.c sk = asoc ? asoc->base.sk : NULL; asoc 1409 net/sctp/sm_make_chunk.c retval = sctp_chunkify(skb, asoc, sk, gfp); asoc 1419 net/sctp/sm_make_chunk.c if (sctp_auth_send_cid(type, asoc)) asoc 1427 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc, asoc 1430 net/sctp/sm_make_chunk.c return _sctp_make_chunk(asoc, SCTP_CID_DATA, flags, paylen, gfp); asoc 1433 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_idata(const struct sctp_association *asoc, asoc 1436 net/sctp/sm_make_chunk.c return _sctp_make_chunk(asoc, SCTP_CID_I_DATA, flags, paylen, gfp); asoc 1439 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc, asoc 1445 net/sctp/sm_make_chunk.c chunk = _sctp_make_chunk(asoc, type, flags, paylen, gfp); asoc 1546 net/sctp/sm_make_chunk.c stream = &chunk->asoc->stream; asoc 1577 net/sctp/sm_make_chunk.c htonl(sctp_association_get_next_tsn(chunk->asoc)); asoc 1587 net/sctp/sm_make_chunk.c struct sctp_association *asoc; asoc 1593 net/sctp/sm_make_chunk.c asoc = sctp_association_new(ep, ep->base.sk, scope, gfp); asoc 1594 net/sctp/sm_make_chunk.c if (!asoc) asoc 1596 net/sctp/sm_make_chunk.c asoc->temp = 1; asoc 1599 net/sctp/sm_make_chunk.c SCTP_INPUT_CB(skb)->af->from_skb(&asoc->c.peer_addr, skb, 1); asoc 1602 net/sctp/sm_make_chunk.c return asoc; asoc 1610 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1650 net/sctp/sm_make_chunk.c cookie->c = asoc->c; asoc 1655 net/sctp/sm_make_chunk.c cookie->c.prsctp_capable = asoc->peer.prsctp_capable; asoc 1658 net/sctp/sm_make_chunk.c cookie->c.adaptation_ind = asoc->peer.adaptation_ind; asoc 1661 net/sctp/sm_make_chunk.c cookie->c.expiration = ktime_add(asoc->cookie_life, asoc 1700 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 1798 net/sctp/sm_make_chunk.c if (!asoc && ktime_before(bear_cookie->expiration, kt)) { asoc 1810 net/sctp/sm_make_chunk.c *errp = sctp_make_op_error(asoc, chunk, asoc 1885 net/sctp/sm_make_chunk.c static int sctp_process_missing_param(const struct sctp_association *asoc, asoc 1899 net/sctp/sm_make_chunk.c *errp = sctp_make_op_error_space(asoc, chunk, len); asoc 1914 net/sctp/sm_make_chunk.c static int sctp_process_inv_mandatory(const struct sctp_association *asoc, asoc 1921 net/sctp/sm_make_chunk.c *errp = sctp_make_op_error_space(asoc, chunk, 0); asoc 1930 net/sctp/sm_make_chunk.c static int sctp_process_inv_paramlength(const struct sctp_association *asoc, asoc 1942 net/sctp/sm_make_chunk.c *errp = sctp_make_violation_paramlen(asoc, chunk, param); asoc 1951 net/sctp/sm_make_chunk.c static int sctp_process_hn_param(const struct sctp_association *asoc, asoc 1966 net/sctp/sm_make_chunk.c *errp = sctp_make_op_error(asoc, chunk, SCTP_ERROR_DNS_FAILED, asoc 2008 net/sctp/sm_make_chunk.c static void sctp_process_ext_param(struct sctp_association *asoc, asoc 2017 net/sctp/sm_make_chunk.c if (asoc->ep->reconf_enable) asoc 2018 net/sctp/sm_make_chunk.c asoc->peer.reconf_capable = 1; asoc 2021 net/sctp/sm_make_chunk.c if (asoc->ep->prsctp_enable) asoc 2022 net/sctp/sm_make_chunk.c asoc->peer.prsctp_capable = 1; asoc 2028 net/sctp/sm_make_chunk.c if (asoc->ep->auth_enable) asoc 2029 net/sctp/sm_make_chunk.c asoc->peer.auth_capable = 1; asoc 2033 net/sctp/sm_make_chunk.c if (asoc->ep->asconf_enable) asoc 2034 net/sctp/sm_make_chunk.c asoc->peer.asconf_capable = 1; asoc 2037 net/sctp/sm_make_chunk.c if (asoc->ep->intl_enable) asoc 2038 net/sctp/sm_make_chunk.c asoc->peer.intl_capable = 1; asoc 2072 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 2093 net/sctp/sm_make_chunk.c *errp = sctp_make_op_error_limited(asoc, chunk); asoc 2126 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 2166 net/sctp/sm_make_chunk.c sctp_process_hn_param(asoc, param, chunk, err_chunk); asoc 2186 net/sctp/sm_make_chunk.c sctp_process_inv_paramlength(asoc, param.p, asoc 2202 net/sctp/sm_make_chunk.c sctp_process_inv_paramlength(asoc, param.p, asoc 2228 net/sctp/sm_make_chunk.c sctp_process_inv_paramlength(asoc, param.p, chunk, asoc 2238 net/sctp/sm_make_chunk.c retval = sctp_process_unk_param(asoc, param, chunk, err_chunk); asoc 2246 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, enum sctp_cid cid, asoc 2262 net/sctp/sm_make_chunk.c return sctp_process_inv_mandatory(asoc, chunk, errp); asoc 2277 net/sctp/sm_make_chunk.c return sctp_process_inv_paramlength(asoc, param.p, chunk, errp); asoc 2283 net/sctp/sm_make_chunk.c return sctp_process_missing_param(asoc, SCTP_PARAM_STATE_COOKIE, asoc 2288 net/sctp/sm_make_chunk.c result = sctp_verify_param(net, ep, asoc, param, cid, asoc 2310 net/sctp/sm_make_chunk.c int sctp_process_init(struct sctp_association *asoc, struct sctp_chunk *chunk, asoc 2314 net/sctp/sm_make_chunk.c struct net *net = sock_net(asoc->base.sk); asoc 2332 net/sctp/sm_make_chunk.c if (!sctp_assoc_add_peer(asoc, peer_addr, gfp, SCTP_ACTIVE)) asoc 2349 net/sctp/sm_make_chunk.c if (!sctp_process_param(asoc, param, peer_addr, gfp)) asoc 2360 net/sctp/sm_make_chunk.c if (asoc->peer.auth_capable && (!asoc->peer.peer_random || asoc 2361 net/sctp/sm_make_chunk.c !asoc->peer.peer_hmacs)) asoc 2362 net/sctp/sm_make_chunk.c asoc->peer.auth_capable = 0; asoc 2371 net/sctp/sm_make_chunk.c (asoc->peer.asconf_capable && !asoc->peer.auth_capable)) { asoc 2372 net/sctp/sm_make_chunk.c asoc->peer.addip_disabled_mask |= (SCTP_PARAM_ADD_IP | asoc 2375 net/sctp/sm_make_chunk.c asoc->peer.asconf_capable = 0; asoc 2380 net/sctp/sm_make_chunk.c list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { asoc 2383 net/sctp/sm_make_chunk.c sctp_assoc_rm_peer(asoc, transport); asoc 2390 net/sctp/sm_make_chunk.c asoc->peer.i.init_tag = asoc 2392 net/sctp/sm_make_chunk.c asoc->peer.i.a_rwnd = asoc 2394 net/sctp/sm_make_chunk.c asoc->peer.i.num_outbound_streams = asoc 2396 net/sctp/sm_make_chunk.c asoc->peer.i.num_inbound_streams = asoc 2398 net/sctp/sm_make_chunk.c asoc->peer.i.initial_tsn = asoc 2401 net/sctp/sm_make_chunk.c asoc->strreset_inseq = asoc->peer.i.initial_tsn; asoc 2406 net/sctp/sm_make_chunk.c if (asoc->c.sinit_num_ostreams > asoc 2408 net/sctp/sm_make_chunk.c asoc->c.sinit_num_ostreams = asoc 2412 net/sctp/sm_make_chunk.c if (asoc->c.sinit_max_instreams > asoc 2414 net/sctp/sm_make_chunk.c asoc->c.sinit_max_instreams = asoc 2419 net/sctp/sm_make_chunk.c asoc->c.peer_vtag = asoc->peer.i.init_tag; asoc 2422 net/sctp/sm_make_chunk.c asoc->peer.rwnd = asoc->peer.i.a_rwnd; asoc 2428 net/sctp/sm_make_chunk.c list_for_each_entry(transport, &asoc->peer.transport_addr_list, asoc 2430 net/sctp/sm_make_chunk.c transport->ssthresh = asoc->peer.i.a_rwnd; asoc 2434 net/sctp/sm_make_chunk.c if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL, asoc 2435 net/sctp/sm_make_chunk.c asoc->peer.i.initial_tsn, gfp)) asoc 2446 net/sctp/sm_make_chunk.c if (sctp_stream_init(&asoc->stream, asoc->c.sinit_num_ostreams, asoc 2447 net/sctp/sm_make_chunk.c asoc->c.sinit_max_instreams, gfp)) asoc 2451 net/sctp/sm_make_chunk.c sctp_assoc_update_frag_point(asoc); asoc 2453 net/sctp/sm_make_chunk.c if (!asoc->temp && sctp_assoc_set_id(asoc, gfp)) asoc 2466 net/sctp/sm_make_chunk.c asoc->peer.addip_serial = asoc->peer.i.initial_tsn - 1; asoc 2471 net/sctp/sm_make_chunk.c list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { asoc 2474 net/sctp/sm_make_chunk.c sctp_assoc_rm_peer(asoc, transport); asoc 2493 net/sctp/sm_make_chunk.c static int sctp_process_param(struct sctp_association *asoc, asoc 2498 net/sctp/sm_make_chunk.c struct net *net = sock_net(asoc->base.sk); asoc 2499 net/sctp/sm_make_chunk.c struct sctp_endpoint *ep = asoc->ep; asoc 2515 net/sctp/sm_make_chunk.c if (PF_INET6 != asoc->base.sk->sk_family) asoc 2521 net/sctp/sm_make_chunk.c if (ipv6_only_sock(asoc->base.sk)) asoc 2525 net/sctp/sm_make_chunk.c af->from_addr_param(&addr, param.addr, htons(asoc->peer.port), 0); asoc 2528 net/sctp/sm_make_chunk.c if (!sctp_assoc_add_peer(asoc, &addr, gfp, SCTP_UNCONFIRMED)) asoc 2541 net/sctp/sm_make_chunk.c asoc->cookie_life = ktime_add_ms(asoc->cookie_life, stale); asoc 2552 net/sctp/sm_make_chunk.c asoc->peer.ipv4_address = 0; asoc 2553 net/sctp/sm_make_chunk.c asoc->peer.ipv6_address = 0; asoc 2559 net/sctp/sm_make_chunk.c asoc->peer.ipv6_address = 1; asoc 2561 net/sctp/sm_make_chunk.c asoc->peer.ipv4_address = 1; asoc 2571 net/sctp/sm_make_chunk.c asoc->peer.ipv4_address = 1; asoc 2575 net/sctp/sm_make_chunk.c if (PF_INET6 == asoc->base.sk->sk_family) asoc 2576 net/sctp/sm_make_chunk.c asoc->peer.ipv6_address = 1; asoc 2580 net/sctp/sm_make_chunk.c asoc->peer.hostname_address = 1; asoc 2590 net/sctp/sm_make_chunk.c asoc->peer.cookie_len = asoc 2592 net/sctp/sm_make_chunk.c kfree(asoc->peer.cookie); asoc 2593 net/sctp/sm_make_chunk.c asoc->peer.cookie = kmemdup(param.cookie->body, asoc->peer.cookie_len, gfp); asoc 2594 net/sctp/sm_make_chunk.c if (!asoc->peer.cookie) asoc 2607 net/sctp/sm_make_chunk.c if (asoc->ep->ecn_enable) { asoc 2608 net/sctp/sm_make_chunk.c asoc->peer.ecn_capable = 1; asoc 2616 net/sctp/sm_make_chunk.c asoc->peer.adaptation_ind = ntohl(param.aind->adaptation_ind); asoc 2630 net/sctp/sm_make_chunk.c htons(asoc->peer.port), 0); asoc 2638 net/sctp/sm_make_chunk.c t = sctp_assoc_lookup_paddr(asoc, &addr); asoc 2642 net/sctp/sm_make_chunk.c sctp_assoc_set_primary(asoc, t); asoc 2646 net/sctp/sm_make_chunk.c sctp_process_ext_param(asoc, param); asoc 2650 net/sctp/sm_make_chunk.c if (asoc->ep->prsctp_enable) { asoc 2651 net/sctp/sm_make_chunk.c asoc->peer.prsctp_capable = 1; asoc 2662 net/sctp/sm_make_chunk.c kfree(asoc->peer.peer_random); asoc 2663 net/sctp/sm_make_chunk.c asoc->peer.peer_random = kmemdup(param.p, asoc 2665 net/sctp/sm_make_chunk.c if (!asoc->peer.peer_random) { asoc 2676 net/sctp/sm_make_chunk.c kfree(asoc->peer.peer_hmacs); asoc 2677 net/sctp/sm_make_chunk.c asoc->peer.peer_hmacs = kmemdup(param.p, asoc 2679 net/sctp/sm_make_chunk.c if (!asoc->peer.peer_hmacs) { asoc 2685 net/sctp/sm_make_chunk.c sctp_auth_asoc_set_default_hmac(asoc, param.hmac_algo); asoc 2692 net/sctp/sm_make_chunk.c kfree(asoc->peer.peer_chunks); asoc 2693 net/sctp/sm_make_chunk.c asoc->peer.peer_chunks = kmemdup(param.p, asoc 2695 net/sctp/sm_make_chunk.c if (!asoc->peer.peer_chunks) asoc 2706 net/sctp/sm_make_chunk.c __func__, ntohs(param.p->type), asoc); asoc 2759 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_asconf(struct sctp_association *asoc, asoc 2776 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_ASCONF, 0, length, asoc 2781 net/sctp/sm_make_chunk.c asconf.serial = htonl(asoc->addip_serial++); asoc 2815 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *asoc, asoc 2842 net/sctp/sm_make_chunk.c if (asoc->asconf_addr_del_pending && !del_pickup) { asoc 2855 net/sctp/sm_make_chunk.c retval = sctp_make_asconf(asoc, laddr, totallen); asoc 2875 net/sctp/sm_make_chunk.c addr = asoc->asconf_addr_del_pending; asoc 2902 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc, asoc 2918 net/sctp/sm_make_chunk.c retval = sctp_make_asconf(asoc, addr, len); asoc 2951 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_asconf_ack(const struct sctp_association *asoc, asoc 2959 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_ASCONF_ACK, 0, length, asoc 3015 net/sctp/sm_make_chunk.c static __be16 sctp_process_asconf_param(struct sctp_association *asoc, asoc 3033 net/sctp/sm_make_chunk.c if (!asoc->peer.ipv6_address) asoc 3037 net/sctp/sm_make_chunk.c if (!asoc->peer.ipv4_address) asoc 3048 net/sctp/sm_make_chunk.c af->from_addr_param(&addr, addr_param, htons(asoc->peer.port), 0); asoc 3067 net/sctp/sm_make_chunk.c if (security_sctp_bind_connect(asoc->ep->base.sk, asoc 3080 net/sctp/sm_make_chunk.c peer = sctp_assoc_add_peer(asoc, &addr, GFP_ATOMIC, SCTP_UNCONFIRMED); asoc 3086 net/sctp/sm_make_chunk.c asoc->new_transport = peer; asoc 3094 net/sctp/sm_make_chunk.c if (asoc->peer.transport_count == 1) asoc 3113 net/sctp/sm_make_chunk.c sctp_assoc_set_primary(asoc, asconf->transport); asoc 3114 net/sctp/sm_make_chunk.c sctp_assoc_del_nonprimary_peers(asoc, asoc 3124 net/sctp/sm_make_chunk.c peer = sctp_assoc_lookup_paddr(asoc, &addr); asoc 3128 net/sctp/sm_make_chunk.c sctp_assoc_rm_peer(asoc, peer); asoc 3139 net/sctp/sm_make_chunk.c if (security_sctp_bind_connect(asoc->ep->base.sk, asoc 3145 net/sctp/sm_make_chunk.c peer = sctp_assoc_lookup_paddr(asoc, &addr); asoc 3149 net/sctp/sm_make_chunk.c sctp_assoc_set_primary(asoc, peer); asoc 3157 net/sctp/sm_make_chunk.c bool sctp_verify_asconf(const struct sctp_association *asoc, asoc 3226 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, asoc 3261 net/sctp/sm_make_chunk.c asconf_ack = sctp_make_asconf_ack(asoc, serial, chunk_len * 4); asoc 3272 net/sctp/sm_make_chunk.c err_code = sctp_process_asconf_param(asoc, asconf, asoc 3296 net/sctp/sm_make_chunk.c asoc->peer.addip_serial++; asoc 3304 net/sctp/sm_make_chunk.c &asoc->asconf_ack_list); asoc 3311 net/sctp/sm_make_chunk.c static void sctp_asconf_param_success(struct sctp_association *asoc, asoc 3314 net/sctp/sm_make_chunk.c struct sctp_bind_addr *bp = &asoc->base.bind_addr; asoc 3338 net/sctp/sm_make_chunk.c list_for_each_entry(transport, &asoc->peer.transport_addr_list, asoc 3346 net/sctp/sm_make_chunk.c if (asoc->asconf_addr_del_pending != NULL && asoc 3347 net/sctp/sm_make_chunk.c sctp_cmp_addr_exact(asoc->asconf_addr_del_pending, &addr)) { asoc 3348 net/sctp/sm_make_chunk.c kfree(asoc->asconf_addr_del_pending); asoc 3349 net/sctp/sm_make_chunk.c asoc->asconf_addr_del_pending = NULL; asoc 3352 net/sctp/sm_make_chunk.c list_for_each_entry(transport, &asoc->peer.transport_addr_list, asoc 3425 net/sctp/sm_make_chunk.c int sctp_process_asconf_ack(struct sctp_association *asoc, asoc 3428 net/sctp/sm_make_chunk.c struct sctp_chunk *asconf = asoc->addip_last_asconf; asoc 3474 net/sctp/sm_make_chunk.c sctp_asconf_param_success(asoc, asconf_param); asoc 3485 net/sctp/sm_make_chunk.c asoc->peer.addip_disabled_mask |= asoc 3504 net/sctp/sm_make_chunk.c if (no_err && asoc->src_out_of_asoc_ok) { asoc 3505 net/sctp/sm_make_chunk.c asoc->src_out_of_asoc_ok = 0; asoc 3506 net/sctp/sm_make_chunk.c sctp_transport_immediate_rtx(asoc->peer.primary_path); asoc 3512 net/sctp/sm_make_chunk.c asoc->addip_last_asconf = NULL; asoc 3518 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_fwdtsn(const struct sctp_association *asoc, asoc 3530 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_FWD_TSN, 0, hint, GFP_ATOMIC); asoc 3548 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_ifwdtsn(const struct sctp_association *asoc, asoc 3558 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_I_FWD_TSN, 0, hint, asoc 3587 net/sctp/sm_make_chunk.c static struct sctp_chunk *sctp_make_reconf(const struct sctp_association *asoc, asoc 3593 net/sctp/sm_make_chunk.c retval = sctp_make_control(asoc, SCTP_CID_RECONF, 0, length, asoc 3639 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 3652 net/sctp/sm_make_chunk.c retval = sctp_make_reconf(asoc, outlen + inlen); asoc 3659 net/sctp/sm_make_chunk.c outreq.request_seq = htonl(asoc->strreset_outseq); asoc 3660 net/sctp/sm_make_chunk.c outreq.response_seq = htonl(asoc->strreset_inseq - 1); asoc 3661 net/sctp/sm_make_chunk.c outreq.send_reset_at_tsn = htonl(asoc->next_tsn - 1); asoc 3672 net/sctp/sm_make_chunk.c inreq.request_seq = htonl(asoc->strreset_outseq + out); asoc 3693 net/sctp/sm_make_chunk.c const struct sctp_association *asoc) asoc 3699 net/sctp/sm_make_chunk.c retval = sctp_make_reconf(asoc, length); asoc 3705 net/sctp/sm_make_chunk.c tsnreq.request_seq = htonl(asoc->strreset_outseq); asoc 3724 net/sctp/sm_make_chunk.c const struct sctp_association *asoc, asoc 3731 net/sctp/sm_make_chunk.c retval = sctp_make_reconf(asoc, (!!out + !!in) * size); asoc 3739 net/sctp/sm_make_chunk.c addstrm.request_seq = htonl(asoc->strreset_outseq); asoc 3749 net/sctp/sm_make_chunk.c addstrm.request_seq = htonl(asoc->strreset_outseq + !!out); asoc 3769 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_strreset_resp(const struct sctp_association *asoc, asoc 3776 net/sctp/sm_make_chunk.c retval = sctp_make_reconf(asoc, length); asoc 3805 net/sctp/sm_make_chunk.c struct sctp_chunk *sctp_make_strreset_tsnresp(struct sctp_association *asoc, asoc 3814 net/sctp/sm_make_chunk.c retval = sctp_make_reconf(asoc, length); asoc 3831 net/sctp/sm_make_chunk.c bool sctp_verify_reconf(const struct sctp_association *asoc, asoc 44 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 53 net/sctp/sm_sideeffect.c struct sctp_association **asoc, asoc 64 net/sctp/sm_sideeffect.c static void sctp_do_ecn_ce_work(struct sctp_association *asoc, asoc 69 net/sctp/sm_sideeffect.c asoc->last_ecne_tsn = lowest_tsn; asoc 70 net/sctp/sm_sideeffect.c asoc->need_ecne = 1; asoc 85 net/sctp/sm_sideeffect.c static struct sctp_chunk *sctp_do_ecn_ecne_work(struct sctp_association *asoc, asoc 101 net/sctp/sm_sideeffect.c if (TSN_lt(asoc->last_cwr_tsn, lowest_tsn)) { asoc 107 net/sctp/sm_sideeffect.c transport = sctp_assoc_lookup_tsn(asoc, lowest_tsn); asoc 113 net/sctp/sm_sideeffect.c asoc->last_cwr_tsn = lowest_tsn; asoc 119 net/sctp/sm_sideeffect.c repl = sctp_make_cwr(asoc, asoc->last_cwr_tsn, chunk); asoc 128 net/sctp/sm_sideeffect.c static void sctp_do_ecn_cwr_work(struct sctp_association *asoc, asoc 134 net/sctp/sm_sideeffect.c asoc->need_ecne = 0; asoc 138 net/sctp/sm_sideeffect.c static int sctp_gen_sack(struct sctp_association *asoc, int force, asoc 141 net/sctp/sm_sideeffect.c struct sctp_transport *trans = asoc->peer.last_data_from; asoc 147 net/sctp/sm_sideeffect.c (!trans && (asoc->param_flags & SPP_SACKDELAY_DISABLE)) || asoc 149 net/sctp/sm_sideeffect.c asoc->peer.sack_needed = 1; asoc 151 net/sctp/sm_sideeffect.c ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map); asoc 152 net/sctp/sm_sideeffect.c max_tsn_seen = sctp_tsnmap_get_max_tsn_seen(&asoc->peer.tsn_map); asoc 165 net/sctp/sm_sideeffect.c asoc->peer.sack_needed = 1; asoc 175 net/sctp/sm_sideeffect.c if (!asoc->peer.sack_needed) { asoc 176 net/sctp/sm_sideeffect.c asoc->peer.sack_cnt++; asoc 185 net/sctp/sm_sideeffect.c if (asoc->peer.sack_cnt >= trans->sackfreq - 1) asoc 186 net/sctp/sm_sideeffect.c asoc->peer.sack_needed = 1; asoc 188 net/sctp/sm_sideeffect.c asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc 192 net/sctp/sm_sideeffect.c if (asoc->peer.sack_cnt >= asoc->sackfreq - 1) asoc 193 net/sctp/sm_sideeffect.c asoc->peer.sack_needed = 1; asoc 195 net/sctp/sm_sideeffect.c asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc 196 net/sctp/sm_sideeffect.c asoc->sackdelay; asoc 203 net/sctp/sm_sideeffect.c __u32 old_a_rwnd = asoc->a_rwnd; asoc 205 net/sctp/sm_sideeffect.c asoc->a_rwnd = asoc->rwnd; asoc 206 net/sctp/sm_sideeffect.c sack = sctp_make_sack(asoc); asoc 208 net/sctp/sm_sideeffect.c asoc->a_rwnd = old_a_rwnd; asoc 212 net/sctp/sm_sideeffect.c asoc->peer.sack_needed = 0; asoc 213 net/sctp/sm_sideeffect.c asoc->peer.sack_cnt = 0; asoc 235 net/sctp/sm_sideeffect.c struct sctp_association *asoc = transport->asoc; asoc 236 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 255 net/sctp/sm_sideeffect.c asoc->state, asoc 256 net/sctp/sm_sideeffect.c asoc->ep, asoc, asoc 270 net/sctp/sm_sideeffect.c static void sctp_generate_timeout_event(struct sctp_association *asoc, asoc 273 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 283 net/sctp/sm_sideeffect.c if (!mod_timer(&asoc->timers[timeout_type], jiffies + (HZ/20))) asoc 284 net/sctp/sm_sideeffect.c sctp_association_hold(asoc); asoc 291 net/sctp/sm_sideeffect.c if (asoc->base.dead) asoc 297 net/sctp/sm_sideeffect.c asoc->state, asoc->ep, asoc, asoc 305 net/sctp/sm_sideeffect.c sctp_association_put(asoc); asoc 310 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 311 net/sctp/sm_sideeffect.c from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T1_COOKIE]); asoc 313 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T1_COOKIE); asoc 318 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 319 net/sctp/sm_sideeffect.c from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T1_INIT]); asoc 321 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T1_INIT); asoc 326 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 327 net/sctp/sm_sideeffect.c from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN]); asoc 329 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T2_SHUTDOWN); asoc 334 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 335 net/sctp/sm_sideeffect.c from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_T4_RTO]); asoc 337 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T4_RTO); asoc 342 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 343 net/sctp/sm_sideeffect.c from_timer(asoc, t, asoc 346 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, asoc 353 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 354 net/sctp/sm_sideeffect.c from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_AUTOCLOSE]); asoc 356 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_AUTOCLOSE); asoc 365 net/sctp/sm_sideeffect.c struct sctp_association *asoc = transport->asoc; asoc 366 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 393 net/sctp/sm_sideeffect.c asoc->state, asoc->ep, asoc, asoc 411 net/sctp/sm_sideeffect.c struct sctp_association *asoc = transport->asoc; asoc 412 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 422 net/sctp/sm_sideeffect.c sctp_association_hold(asoc); asoc 429 net/sctp/sm_sideeffect.c if (asoc->base.dead) asoc 434 net/sctp/sm_sideeffect.c asoc->state, asoc->ep, asoc, transport, GFP_ATOMIC); asoc 438 net/sctp/sm_sideeffect.c sctp_association_put(asoc); asoc 446 net/sctp/sm_sideeffect.c struct sctp_association *asoc = transport->asoc; asoc 447 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 463 net/sctp/sm_sideeffect.c asoc->state, asoc->ep, asoc, asoc 477 net/sctp/sm_sideeffect.c struct sctp_association *asoc = asoc 478 net/sctp/sm_sideeffect.c from_timer(asoc, t, timers[SCTP_EVENT_TIMEOUT_SACK]); asoc 480 net/sctp/sm_sideeffect.c sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_SACK); asoc 515 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 519 net/sctp/sm_sideeffect.c struct net *net = sock_net(asoc->base.sk); asoc 532 net/sctp/sm_sideeffect.c asoc->overall_error_count++; asoc 537 net/sctp/sm_sideeffect.c asoc->overall_error_count++; asoc 552 net/sctp/sm_sideeffect.c sctp_assoc_control_transport(asoc, transport, asoc 563 net/sctp/sm_sideeffect.c __func__, asoc, &transport->ipaddr.sa); asoc 565 net/sctp/sm_sideeffect.c sctp_assoc_control_transport(asoc, transport, asoc 580 net/sctp/sm_sideeffect.c transport->rto = min((transport->rto * 2), transport->asoc->rto_max); asoc 581 net/sctp/sm_sideeffect.c sctp_max_rto(asoc, transport); asoc 587 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 592 net/sctp/sm_sideeffect.c event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_CANT_STR_ASSOC, asoc 604 net/sctp/sm_sideeffect.c asoc->outqueue.error = error; asoc 610 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 620 net/sctp/sm_sideeffect.c asoc->stream.si->abort_pd(&asoc->ulpq, GFP_ATOMIC); asoc 623 net/sctp/sm_sideeffect.c event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST, asoc 627 net/sctp/sm_sideeffect.c event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST, asoc 634 net/sctp/sm_sideeffect.c if (asoc->overall_error_count >= asoc->max_retrans) { asoc 635 net/sctp/sm_sideeffect.c abort = sctp_make_violation_max_retrans(asoc, chunk); asoc 645 net/sctp/sm_sideeffect.c asoc->outqueue.error = error; asoc 655 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 667 net/sctp/sm_sideeffect.c if (!sctp_process_init(asoc, chunk, sctp_source(chunk), peer_init, gfp)) asoc 677 net/sctp/sm_sideeffect.c struct sctp_association *asoc) asoc 685 net/sctp/sm_sideeffect.c list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) asoc 690 net/sctp/sm_sideeffect.c struct sctp_association *asoc) asoc 696 net/sctp/sm_sideeffect.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 705 net/sctp/sm_sideeffect.c struct sctp_association *asoc) asoc 709 net/sctp/sm_sideeffect.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 719 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 740 net/sctp/sm_sideeffect.c if (t->asoc->state < SCTP_STATE_SHUTDOWN_PENDING) asoc 741 net/sctp/sm_sideeffect.c t->asoc->overall_error_count = 0; asoc 753 net/sctp/sm_sideeffect.c sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP, asoc 758 net/sctp/sm_sideeffect.c sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP, asoc 783 net/sctp/sm_sideeffect.c if (was_unconfirmed && asoc->peer.transport_count == 1) asoc 790 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 795 net/sctp/sm_sideeffect.c if (sctp_outq_sack(&asoc->outqueue, chunk)) { asoc 796 net/sctp/sm_sideeffect.c struct net *net = sock_net(asoc->base.sk); asoc 801 net/sctp/sm_sideeffect.c asoc->state, asoc->ep, asoc, NULL, asoc 812 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 820 net/sctp/sm_sideeffect.c t = sctp_assoc_choose_alter_transport(asoc, asoc 821 net/sctp/sm_sideeffect.c asoc->shutdown_last_sent_to); asoc 824 net/sctp/sm_sideeffect.c asoc->shutdown_last_sent_to = t; asoc 825 net/sctp/sm_sideeffect.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = t->rto; asoc 829 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 832 net/sctp/sm_sideeffect.c struct net *net = sock_net(asoc->base.sk); asoc 835 net/sctp/sm_sideeffect.c if (!sctp_assoc_update(asoc, new)) asoc 838 net/sctp/sm_sideeffect.c abort = sctp_make_abort(asoc, NULL, sizeof(struct sctp_errhdr)); asoc 852 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 855 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 857 net/sctp/sm_sideeffect.c asoc->state = state; asoc 859 net/sctp/sm_sideeffect.c pr_debug("%s: asoc:%p[%s]\n", __func__, asoc, sctp_state_tbl[state]); asoc 865 net/sctp/sm_sideeffect.c if (sctp_state(asoc, ESTABLISHED) && sctp_sstate(sk, CLOSED)) asoc 869 net/sctp/sm_sideeffect.c if (sctp_state(asoc, SHUTDOWN_RECEIVED) && asoc 876 net/sctp/sm_sideeffect.c if (sctp_state(asoc, COOKIE_WAIT)) { asoc 880 net/sctp/sm_sideeffect.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc 881 net/sctp/sm_sideeffect.c asoc->rto_initial; asoc 882 net/sctp/sm_sideeffect.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = asoc 883 net/sctp/sm_sideeffect.c asoc->rto_initial; asoc 886 net/sctp/sm_sideeffect.c if (sctp_state(asoc, ESTABLISHED)) { asoc 887 net/sctp/sm_sideeffect.c kfree(asoc->peer.cookie); asoc 888 net/sctp/sm_sideeffect.c asoc->peer.cookie = NULL; asoc 891 net/sctp/sm_sideeffect.c if (sctp_state(asoc, ESTABLISHED) || asoc 892 net/sctp/sm_sideeffect.c sctp_state(asoc, CLOSED) || asoc 893 net/sctp/sm_sideeffect.c sctp_state(asoc, SHUTDOWN_RECEIVED)) { asoc 897 net/sctp/sm_sideeffect.c if (waitqueue_active(&asoc->wait)) asoc 898 net/sctp/sm_sideeffect.c wake_up_interruptible(&asoc->wait); asoc 910 net/sctp/sm_sideeffect.c if (sctp_state(asoc, SHUTDOWN_PENDING) && asoc 911 net/sctp/sm_sideeffect.c !sctp_outq_is_empty(&asoc->outqueue)) asoc 912 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, GFP_ATOMIC); asoc 917 net/sctp/sm_sideeffect.c struct sctp_association *asoc) asoc 919 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 926 net/sctp/sm_sideeffect.c (!asoc->temp) && (sk->sk_shutdown != SHUTDOWN_MASK)) asoc 929 net/sctp/sm_sideeffect.c sctp_association_free(asoc); asoc 939 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 944 net/sctp/sm_sideeffect.c t = sctp_assoc_choose_alter_transport(asoc, chunk->transport); asoc 945 net/sctp/sm_sideeffect.c asoc->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = t->rto; asoc 951 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 960 net/sctp/sm_sideeffect.c ev = sctp_ulpevent_make_remote_error(asoc, chunk, 0, asoc 965 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 982 net/sctp/sm_sideeffect.c if (asoc->peer.asconf_capable == 0) asoc 985 net/sctp/sm_sideeffect.c asoc->peer.asconf_capable = 0; asoc 1003 net/sctp/sm_sideeffect.c static void sctp_cmd_del_non_primary(struct sctp_association *asoc) asoc 1009 net/sctp/sm_sideeffect.c list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) { asoc 1012 net/sctp/sm_sideeffect.c &asoc->peer.primary_addr)) { asoc 1013 net/sctp/sm_sideeffect.c sctp_assoc_rm_peer(asoc, t); asoc 1019 net/sctp/sm_sideeffect.c static void sctp_cmd_set_sk_err(struct sctp_association *asoc, int error) asoc 1021 net/sctp/sm_sideeffect.c struct sock *sk = asoc->base.sk; asoc 1029 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 1034 net/sctp/sm_sideeffect.c ev = sctp_ulpevent_make_assoc_change(asoc, 0, state, 0, asoc 1035 net/sctp/sm_sideeffect.c asoc->c.sinit_num_ostreams, asoc 1036 net/sctp/sm_sideeffect.c asoc->c.sinit_max_instreams, asoc 1039 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 1043 net/sctp/sm_sideeffect.c struct sctp_association *asoc) asoc 1047 net/sctp/sm_sideeffect.c ev = sctp_ulpevent_make_authkey(asoc, 0, SCTP_AUTH_NO_AUTH, GFP_ATOMIC); asoc 1049 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 1054 net/sctp/sm_sideeffect.c struct sctp_association *asoc) asoc 1058 net/sctp/sm_sideeffect.c ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC); asoc 1061 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 1065 net/sctp/sm_sideeffect.c static void sctp_cmd_t1_timer_update(struct sctp_association *asoc, asoc 1071 net/sctp/sm_sideeffect.c t = asoc->init_last_sent_to; asoc 1072 net/sctp/sm_sideeffect.c asoc->init_err_counter++; asoc 1074 net/sctp/sm_sideeffect.c if (t->init_sent_count > (asoc->init_cycle + 1)) { asoc 1075 net/sctp/sm_sideeffect.c asoc->timeouts[timer] *= 2; asoc 1076 net/sctp/sm_sideeffect.c if (asoc->timeouts[timer] > asoc->max_init_timeo) { asoc 1077 net/sctp/sm_sideeffect.c asoc->timeouts[timer] = asoc->max_init_timeo; asoc 1079 net/sctp/sm_sideeffect.c asoc->init_cycle++; asoc 1083 net/sctp/sm_sideeffect.c asoc->init_err_counter, asoc->init_cycle, asoc 1084 net/sctp/sm_sideeffect.c asoc->timeouts[timer]); asoc 1093 net/sctp/sm_sideeffect.c static void sctp_cmd_send_msg(struct sctp_association *asoc, asoc 1099 net/sctp/sm_sideeffect.c sctp_outq_tail(&asoc->outqueue, chunk, gfp); asoc 1101 net/sctp/sm_sideeffect.c asoc->outqueue.sched->enqueue(&asoc->outqueue, msg); asoc 1112 net/sctp/sm_sideeffect.c asoc, sctp_state_tbl[state], state_fn->name) asoc 1115 net/sctp/sm_sideeffect.c pr_debug("%s[post-fn]: asoc:%p, status:%s\n", __func__, asoc, \ asoc 1120 net/sctp/sm_sideeffect.c asoc, sctp_state_tbl[(asoc && sctp_id2assoc(ep->base.sk, \ asoc 1121 net/sctp/sm_sideeffect.c sctp_assoc2id(asoc))) ? asoc->state : SCTP_STATE_CLOSED]) asoc 1131 net/sctp/sm_sideeffect.c struct sctp_endpoint *ep, struct sctp_association *asoc, asoc 1152 net/sctp/sm_sideeffect.c status = state_fn->fn(net, ep, asoc, subtype, event_arg, &commands); asoc 1156 net/sctp/sm_sideeffect.c ep, &asoc, event_arg, status, asoc 1170 net/sctp/sm_sideeffect.c struct sctp_association **asoc, asoc 1185 net/sctp/sm_sideeffect.c ep, *asoc, asoc 1210 net/sctp/sm_sideeffect.c *asoc = NULL; asoc 1256 net/sctp/sm_sideeffect.c struct sctp_association *asoc, asoc 1293 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 1298 net/sctp/sm_sideeffect.c asoc = cmd->obj.asoc; asoc 1299 net/sctp/sm_sideeffect.c BUG_ON(asoc->peer.primary_path == NULL); asoc 1300 net/sctp/sm_sideeffect.c sctp_endpoint_add_asoc(ep, asoc); asoc 1304 net/sctp/sm_sideeffect.c sctp_cmd_assoc_update(commands, asoc, cmd->obj.asoc); asoc 1308 net/sctp/sm_sideeffect.c sctp_outq_teardown(&asoc->outqueue); asoc 1313 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 1317 net/sctp/sm_sideeffect.c sctp_cmd_delete_tcb(commands, asoc); asoc 1318 net/sctp/sm_sideeffect.c asoc = NULL; asoc 1323 net/sctp/sm_sideeffect.c sctp_cmd_new_state(commands, asoc, cmd->obj.state); asoc 1328 net/sctp/sm_sideeffect.c error = sctp_tsnmap_mark(&asoc->peer.tsn_map, asoc 1333 net/sctp/sm_sideeffect.c asoc->stream.si->report_ftsn(&asoc->ulpq, cmd->obj.u32); asoc 1337 net/sctp/sm_sideeffect.c asoc->stream.si->handle_ftsn(&asoc->ulpq, asoc 1348 net/sctp/sm_sideeffect.c error = sctp_gen_sack(asoc, force, commands); asoc 1353 net/sctp/sm_sideeffect.c error = sctp_cmd_process_sack(commands, asoc, asoc 1359 net/sctp/sm_sideeffect.c new_obj = sctp_make_init_ack(asoc, chunk, GFP_ATOMIC, asoc 1376 net/sctp/sm_sideeffect.c error = sctp_cmd_process_init(commands, asoc, chunk, asoc 1382 net/sctp/sm_sideeffect.c new_obj = sctp_make_cookie_echo(asoc, chunk); asoc 1401 net/sctp/sm_sideeffect.c asoc->init_last_sent_to = new_obj->transport; asoc 1416 net/sctp/sm_sideeffect.c if ((asoc->peer.retran_path != asoc 1417 net/sctp/sm_sideeffect.c asoc->peer.primary_path) && asoc 1418 net/sctp/sm_sideeffect.c (asoc->init_err_counter > 0)) { asoc 1430 net/sctp/sm_sideeffect.c asoc->overall_error_count = 0; asoc 1433 net/sctp/sm_sideeffect.c new_obj = sctp_make_shutdown(asoc, chunk); asoc 1445 net/sctp/sm_sideeffect.c __func__, cmd->obj.chunk, &asoc->ulpq); asoc 1447 net/sctp/sm_sideeffect.c asoc->stream.si->ulpevent_data(&asoc->ulpq, asoc 1455 net/sctp/sm_sideeffect.c __func__, cmd->obj.ulpevent, &asoc->ulpq); asoc 1457 net/sctp/sm_sideeffect.c asoc->stream.si->enqueue_event(&asoc->ulpq, asoc 1463 net/sctp/sm_sideeffect.c if (!asoc->outqueue.cork) { asoc 1464 net/sctp/sm_sideeffect.c sctp_outq_cork(&asoc->outqueue); asoc 1468 net/sctp/sm_sideeffect.c sctp_outq_tail(&asoc->outqueue, cmd->obj.chunk, gfp); asoc 1480 net/sctp/sm_sideeffect.c sctp_retransmit(&asoc->outqueue, cmd->obj.transport, asoc 1486 net/sctp/sm_sideeffect.c sctp_retransmit(&asoc->outqueue, cmd->obj.transport, asoc 1492 net/sctp/sm_sideeffect.c sctp_do_ecn_ce_work(asoc, cmd->obj.u32); asoc 1497 net/sctp/sm_sideeffect.c new_obj = sctp_do_ecn_ecne_work(asoc, cmd->obj.u32, asoc 1506 net/sctp/sm_sideeffect.c sctp_do_ecn_cwr_work(asoc, cmd->obj.u32); asoc 1510 net/sctp/sm_sideeffect.c sctp_cmd_setup_t2(commands, asoc, cmd->obj.chunk); asoc 1514 net/sctp/sm_sideeffect.c timer = &asoc->timers[cmd->obj.to]; asoc 1521 net/sctp/sm_sideeffect.c timer = &asoc->timers[cmd->obj.to]; asoc 1522 net/sctp/sm_sideeffect.c timeout = asoc->timeouts[cmd->obj.to]; asoc 1534 net/sctp/sm_sideeffect.c sctp_association_hold(asoc); asoc 1539 net/sctp/sm_sideeffect.c timer = &asoc->timers[cmd->obj.to]; asoc 1540 net/sctp/sm_sideeffect.c timeout = asoc->timeouts[cmd->obj.to]; asoc 1542 net/sctp/sm_sideeffect.c sctp_association_hold(asoc); asoc 1546 net/sctp/sm_sideeffect.c timer = &asoc->timers[cmd->obj.to]; asoc 1548 net/sctp/sm_sideeffect.c sctp_association_put(asoc); asoc 1553 net/sctp/sm_sideeffect.c t = sctp_assoc_choose_alter_transport(asoc, asoc 1554 net/sctp/sm_sideeffect.c asoc->init_last_sent_to); asoc 1555 net/sctp/sm_sideeffect.c asoc->init_last_sent_to = t; asoc 1559 net/sctp/sm_sideeffect.c sctp_assoc_set_primary(asoc, t); asoc 1569 net/sctp/sm_sideeffect.c sctp_cmd_t1_timer_update(asoc, asoc 1584 net/sctp/sm_sideeffect.c sctp_cmd_t1_timer_update(asoc, asoc 1591 net/sctp/sm_sideeffect.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 1593 net/sctp/sm_sideeffect.c sctp_retransmit_mark(&asoc->outqueue, t, asoc 1603 net/sctp/sm_sideeffect.c sctp_cmd_init_failed(commands, asoc, cmd->obj.u32); asoc 1607 net/sctp/sm_sideeffect.c sctp_cmd_assoc_failed(commands, asoc, event_type, asoc 1612 net/sctp/sm_sideeffect.c asoc->init_err_counter++; asoc 1616 net/sctp/sm_sideeffect.c asoc->init_err_counter = 0; asoc 1617 net/sctp/sm_sideeffect.c asoc->init_cycle = 0; asoc 1618 net/sctp/sm_sideeffect.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 1625 net/sctp/sm_sideeffect.c sctp_tsnmap_mark_dup(&asoc->peer.tsn_map, asoc 1635 net/sctp/sm_sideeffect.c sctp_do_8_2_transport_strike(commands, asoc, asoc 1646 net/sctp/sm_sideeffect.c sctp_do_8_2_transport_strike(commands, asoc, asoc 1653 net/sctp/sm_sideeffect.c sctp_cmd_transport_on(commands, asoc, t, chunk); asoc 1657 net/sctp/sm_sideeffect.c sctp_cmd_hb_timers_start(commands, asoc); asoc 1666 net/sctp/sm_sideeffect.c sctp_cmd_hb_timers_stop(commands, asoc); asoc 1676 net/sctp/sm_sideeffect.c sackh.a_rwnd = htonl(asoc->peer.rwnd + asoc 1677 net/sctp/sm_sideeffect.c asoc->outqueue.outstanding_bytes); asoc 1691 net/sctp/sm_sideeffect.c if (asoc) { asoc 1692 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 1703 net/sctp/sm_sideeffect.c asoc->stream.si->start_pd(&asoc->ulpq, GFP_ATOMIC); asoc 1707 net/sctp/sm_sideeffect.c asoc->stream.si->renege_events(&asoc->ulpq, asoc 1713 net/sctp/sm_sideeffect.c sctp_cmd_setup_t4(commands, asoc, cmd->obj.chunk); asoc 1717 net/sctp/sm_sideeffect.c sctp_cmd_process_operr(commands, asoc, chunk); asoc 1720 net/sctp/sm_sideeffect.c asoc->peer.i.init_tag = 0; asoc 1723 net/sctp/sm_sideeffect.c sctp_cmd_del_non_primary(asoc); asoc 1726 net/sctp/sm_sideeffect.c sctp_cmd_t3_rtx_timers_stop(commands, asoc); asoc 1729 net/sctp/sm_sideeffect.c t = asoc->peer.retran_path; asoc 1730 net/sctp/sm_sideeffect.c asoc->peer.retran_path = asoc->peer.primary_path; asoc 1731 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 1733 net/sctp/sm_sideeffect.c asoc->peer.retran_path = t; asoc 1736 net/sctp/sm_sideeffect.c sctp_cmd_set_sk_err(asoc, cmd->obj.error); asoc 1739 net/sctp/sm_sideeffect.c sctp_cmd_assoc_change(commands, asoc, asoc 1743 net/sctp/sm_sideeffect.c sctp_cmd_adaptation_ind(commands, asoc); asoc 1746 net/sctp/sm_sideeffect.c sctp_cmd_peer_no_auth(commands, asoc); asoc 1750 net/sctp/sm_sideeffect.c error = sctp_auth_asoc_init_active_key(asoc, asoc 1754 net/sctp/sm_sideeffect.c asoc->peer.i.init_tag = cmd->obj.u32; asoc 1757 net/sctp/sm_sideeffect.c if (!asoc->outqueue.cork) { asoc 1758 net/sctp/sm_sideeffect.c sctp_outq_cork(&asoc->outqueue); asoc 1761 net/sctp/sm_sideeffect.c sctp_cmd_send_msg(asoc, cmd->obj.msg, gfp); asoc 1764 net/sctp/sm_sideeffect.c sctp_asconf_queue_teardown(asoc); asoc 1768 net/sctp/sm_sideeffect.c if (asoc && local_cork) { asoc 1769 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 1772 net/sctp/sm_sideeffect.c asoc = cmd->obj.asoc; asoc 1796 net/sctp/sm_sideeffect.c if (asoc && SCTP_EVENT_T_CHUNK == event_type && chunk) { asoc 1798 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 1800 net/sctp/sm_sideeffect.c sctp_outq_uncork(&asoc->outqueue, gfp); asoc 53 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 56 net/sctp/sm_statefuns.c static int sctp_eat_data(const struct sctp_association *asoc, asoc 61 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 65 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 72 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 79 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 86 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 96 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 102 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 111 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 119 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 127 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 135 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 141 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 147 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 220 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 227 net/sctp/sm_statefuns.c if (!sctp_vtag_verify_either(chunk, asoc)) asoc 228 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 236 net/sctp/sm_statefuns.c return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands); asoc 240 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 250 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP, asoc 305 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 319 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 331 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 338 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 345 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 353 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 362 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 366 net/sctp/sm_statefuns.c if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type, asoc 373 net/sctp/sm_statefuns.c packet = sctp_abort_pkt_new(net, ep, asoc, arg, asoc 390 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, asoc 504 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 514 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 515 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 522 net/sctp/sm_statefuns.c return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands); asoc 526 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 533 net/sctp/sm_statefuns.c if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type, asoc 545 net/sctp/sm_statefuns.c packet = sctp_abort_pkt_new(net, ep, asoc, arg, asoc 572 net/sctp/sm_statefuns.c if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc)) asoc 573 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 577 net/sctp/sm_statefuns.c asoc, chunk->transport); asoc 622 net/sctp/sm_statefuns.c const struct sctp_association *asoc) asoc 637 net/sctp/sm_statefuns.c if (!net->sctp.auth_enable || !asoc->peer.auth_capable) asoc 642 net/sctp/sm_statefuns.c auth.asoc = chunk->asoc; asoc 650 net/sctp/sm_statefuns.c return sctp_sf_authenticate(asoc, &auth) == SCTP_IERROR_NO_ERROR; asoc 686 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 705 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 714 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 723 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 738 net/sctp/sm_statefuns.c new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error, asoc 756 net/sctp/sm_statefuns.c sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands, asoc 758 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 762 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 792 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 900 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 908 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 909 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 915 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 942 net/sctp/sm_statefuns.c if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) asoc 950 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP, asoc 951 net/sctp/sm_statefuns.c 0, asoc->c.sinit_num_ostreams, asoc 952 net/sctp/sm_statefuns.c asoc->c.sinit_max_instreams, asoc 965 net/sctp/sm_statefuns.c if (asoc->peer.adaptation_ind) { asoc 966 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC); asoc 974 net/sctp/sm_statefuns.c if (!asoc->peer.auth_capable) { asoc 975 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_authkey(asoc, 0, SCTP_AUTH_NO_AUTH, asoc 991 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1000 net/sctp/sm_statefuns.c reply = sctp_make_heartbeat(asoc, transport); asoc 1017 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1024 net/sctp/sm_statefuns.c if (asoc->overall_error_count >= asoc->max_retrans) { asoc 1044 net/sctp/sm_statefuns.c sctp_sf_heartbeat(ep, asoc, type, arg, asoc 1065 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1072 net/sctp/sm_statefuns.c if (asoc->overall_error_count >= asoc->max_retrans) { asoc 1083 net/sctp/sm_statefuns.c sctp_chunk_hold(asoc->strreset_chunk); asoc 1085 net/sctp/sm_statefuns.c SCTP_CHUNK(asoc->strreset_chunk)); asoc 1117 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1126 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 1127 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 1132 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 1144 net/sctp/sm_statefuns.c return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, asoc 1150 net/sctp/sm_statefuns.c reply = sctp_make_heartbeat_ack(asoc, chunk, param_hdr, paylen); asoc 1191 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1202 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 1203 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 1208 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 1217 net/sctp/sm_statefuns.c link = sctp_assoc_lookup_paddr(asoc, &from_addr); asoc 1224 net/sctp/sm_statefuns.c asoc, asoc 1229 net/sctp/sm_statefuns.c asoc, asoc 1329 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1350 net/sctp/sm_statefuns.c if (!list_has_sctp_addr(&asoc->peer.transport_addr_list, asoc 1369 net/sctp/sm_statefuns.c const struct sctp_association *asoc) asoc 1371 net/sctp/sm_statefuns.c switch (asoc->state) { asoc 1376 net/sctp/sm_statefuns.c new_asoc->c.my_vtag = asoc->c.my_vtag; asoc 1377 net/sctp/sm_statefuns.c new_asoc->c.my_ttag = asoc->c.my_vtag; asoc 1382 net/sctp/sm_statefuns.c new_asoc->c.my_vtag = asoc->c.my_vtag; asoc 1383 net/sctp/sm_statefuns.c new_asoc->c.my_ttag = asoc->c.my_vtag; asoc 1384 net/sctp/sm_statefuns.c new_asoc->c.peer_ttag = asoc->c.peer_vtag; asoc 1391 net/sctp/sm_statefuns.c new_asoc->c.my_ttag = asoc->c.my_vtag; asoc 1392 net/sctp/sm_statefuns.c new_asoc->c.peer_ttag = asoc->c.peer_vtag; asoc 1400 net/sctp/sm_statefuns.c new_asoc->rwnd = asoc->rwnd; asoc 1401 net/sctp/sm_statefuns.c new_asoc->c.sinit_num_ostreams = asoc->c.sinit_num_ostreams; asoc 1402 net/sctp/sm_statefuns.c new_asoc->c.sinit_max_instreams = asoc->c.sinit_max_instreams; asoc 1403 net/sctp/sm_statefuns.c new_asoc->c.initial_tsn = asoc->c.initial_tsn; asoc 1416 net/sctp/sm_statefuns.c const struct sctp_association *asoc) asoc 1419 net/sctp/sm_statefuns.c if ((asoc->c.my_vtag != new_asoc->c.my_vtag) && asoc 1420 net/sctp/sm_statefuns.c (asoc->c.peer_vtag != new_asoc->c.peer_vtag) && asoc 1421 net/sctp/sm_statefuns.c (asoc->c.my_vtag == new_asoc->c.my_ttag) && asoc 1422 net/sctp/sm_statefuns.c (asoc->c.peer_vtag == new_asoc->c.peer_ttag)) asoc 1426 net/sctp/sm_statefuns.c if ((asoc->c.my_vtag == new_asoc->c.my_vtag) && asoc 1427 net/sctp/sm_statefuns.c ((asoc->c.peer_vtag != new_asoc->c.peer_vtag) || asoc 1428 net/sctp/sm_statefuns.c (0 == asoc->c.peer_vtag))) { asoc 1433 net/sctp/sm_statefuns.c if ((asoc->c.my_vtag == new_asoc->c.my_vtag) && asoc 1434 net/sctp/sm_statefuns.c (asoc->c.peer_vtag == new_asoc->c.peer_vtag)) asoc 1438 net/sctp/sm_statefuns.c if ((asoc->c.my_vtag != new_asoc->c.my_vtag) && asoc 1439 net/sctp/sm_statefuns.c (asoc->c.peer_vtag == new_asoc->c.peer_vtag) && asoc 1454 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1469 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 1481 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 1487 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 1494 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 1504 net/sctp/sm_statefuns.c if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type, asoc 1511 net/sctp/sm_statefuns.c packet = sctp_abort_pkt_new(net, ep, asoc, arg, asoc 1527 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, asoc 1561 net/sctp/sm_statefuns.c if (!sctp_state(asoc, COOKIE_WAIT)) { asoc 1562 net/sctp/sm_statefuns.c if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, asoc 1569 net/sctp/sm_statefuns.c sctp_tietags_populate(new_asoc, asoc); asoc 1672 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1680 net/sctp/sm_statefuns.c return sctp_sf_do_unexpected_init(net, ep, asoc, type, arg, commands); asoc 1727 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1735 net/sctp/sm_statefuns.c return sctp_sf_do_unexpected_init(net, ep, asoc, type, arg, commands); asoc 1751 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1760 net/sctp/sm_statefuns.c return sctp_sf_ootb(net, ep, asoc, type, arg, commands); asoc 1762 net/sctp/sm_statefuns.c return sctp_sf_discard_chunk(net, ep, asoc, type, arg, commands); asoc 1773 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1803 net/sctp/sm_statefuns.c if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, commands)) asoc 1812 net/sctp/sm_statefuns.c if (sctp_state(asoc, SHUTDOWN_ACK_SENT)) { asoc 1813 net/sctp/sm_statefuns.c disposition = sctp_sf_do_9_2_reshutack(net, ep, asoc, asoc 1819 net/sctp/sm_statefuns.c err = sctp_make_op_error(asoc, chunk, asoc 1849 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_RESTART, 0, asoc 1859 net/sctp/sm_statefuns.c if ((sctp_state(asoc, SHUTDOWN_PENDING) || asoc 1860 net/sctp/sm_statefuns.c sctp_state(asoc, SHUTDOWN_SENT)) && asoc 1861 net/sctp/sm_statefuns.c (sctp_sstate(asoc->base.sk, CLOSING) || asoc 1862 net/sctp/sm_statefuns.c sock_flag(asoc->base.sk, SOCK_DEAD))) { asoc 1868 net/sctp/sm_statefuns.c return sctp_sf_do_9_2_start_shutdown(net, ep, asoc, asoc 1895 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1952 net/sctp/sm_statefuns.c if (asoc->peer.adaptation_ind) asoc 1955 net/sctp/sm_statefuns.c if (!asoc->peer.auth_capable) asoc 1976 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 1999 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2014 net/sctp/sm_statefuns.c if (!sctp_auth_chunk_verify(net, chunk, asoc)) asoc 2018 net/sctp/sm_statefuns.c if (asoc->state < SCTP_STATE_ESTABLISHED) { asoc 2034 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_assoc_change(asoc, 0, asoc 2036 net/sctp/sm_statefuns.c asoc->c.sinit_num_ostreams, asoc 2037 net/sctp/sm_statefuns.c asoc->c.sinit_max_instreams, asoc 2047 net/sctp/sm_statefuns.c if (asoc->peer.adaptation_ind) { asoc 2048 net/sctp/sm_statefuns.c ai_ev = sctp_ulpevent_make_adaptation_indication(asoc, asoc 2055 net/sctp/sm_statefuns.c if (!asoc->peer.auth_capable) { asoc 2056 net/sctp/sm_statefuns.c auth_ev = sctp_ulpevent_make_authkey(asoc, 0, asoc 2064 net/sctp/sm_statefuns.c repl = sctp_make_cookie_ack(asoc, chunk); asoc 2111 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2129 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 2145 net/sctp/sm_statefuns.c new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error, asoc 2163 net/sctp/sm_statefuns.c sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands, asoc 2165 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2168 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2176 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2185 net/sctp/sm_statefuns.c action = sctp_tietags_compare(new_asoc, asoc); asoc 2189 net/sctp/sm_statefuns.c retval = sctp_sf_do_dupcook_a(net, ep, asoc, chunk, commands, asoc 2194 net/sctp/sm_statefuns.c retval = sctp_sf_do_dupcook_b(net, ep, asoc, chunk, commands, asoc 2199 net/sctp/sm_statefuns.c retval = sctp_sf_do_dupcook_c(net, ep, asoc, chunk, commands, asoc 2204 net/sctp/sm_statefuns.c retval = sctp_sf_do_dupcook_d(net, ep, asoc, chunk, commands, asoc 2209 net/sctp/sm_statefuns.c retval = sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2221 net/sctp/sm_statefuns.c SCTP_ASOC((struct sctp_association *)asoc)); asoc 2237 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2244 net/sctp/sm_statefuns.c if (!sctp_vtag_verify_either(chunk, asoc)) asoc 2245 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2258 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2266 net/sctp/sm_statefuns.c sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest)) asoc 2267 net/sctp/sm_statefuns.c return sctp_sf_discard_chunk(net, ep, asoc, type, arg, commands); asoc 2270 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2272 net/sctp/sm_statefuns.c return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands); asoc 2283 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2290 net/sctp/sm_statefuns.c if (!sctp_vtag_verify_either(chunk, asoc)) asoc 2291 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2304 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2312 net/sctp/sm_statefuns.c sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest)) asoc 2313 net/sctp/sm_statefuns.c return sctp_sf_discard_chunk(net, ep, asoc, type, arg, commands); asoc 2316 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2326 net/sctp/sm_statefuns.c return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands); asoc 2337 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2345 net/sctp/sm_statefuns.c return sctp_sf_shutdown_sent_abort(net, ep, asoc, type, arg, commands); asoc 2365 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2373 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 2374 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2380 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 2390 net/sctp/sm_statefuns.c return sctp_sf_do_5_2_6_stale(net, ep, asoc, type, asoc 2399 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2430 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2435 net/sctp/sm_statefuns.c int attempts = asoc->init_err_counter + 1; asoc 2442 net/sctp/sm_statefuns.c if (attempts > asoc->max_init_attempts) { asoc 2474 net/sctp/sm_statefuns.c bp = (struct sctp_bind_addr *) &asoc->base.bind_addr; asoc 2475 net/sctp/sm_statefuns.c reply = sctp_make_init(asoc, bp, GFP_ATOMIC, sizeof(bht)); asoc 2497 net/sctp/sm_statefuns.c SCTP_TRANSPORT(asoc->peer.primary_path)); asoc 2553 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2560 net/sctp/sm_statefuns.c if (!sctp_vtag_verify_either(chunk, asoc)) asoc 2561 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2574 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2582 net/sctp/sm_statefuns.c sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest)) asoc 2583 net/sctp/sm_statefuns.c return sctp_sf_discard_chunk(net, ep, asoc, type, arg, commands); asoc 2586 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2588 net/sctp/sm_statefuns.c return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands); asoc 2594 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2625 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2634 net/sctp/sm_statefuns.c if (!sctp_vtag_verify_either(chunk, asoc)) asoc 2635 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2648 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2655 net/sctp/sm_statefuns.c return sctp_stop_t1_and_abort(net, commands, error, ECONNREFUSED, asoc, asoc 2665 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2671 net/sctp/sm_statefuns.c ENOPROTOOPT, asoc, asoc 2681 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2689 net/sctp/sm_statefuns.c return sctp_sf_cookie_wait_abort(net, ep, asoc, type, arg, commands); asoc 2701 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2755 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2766 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 2767 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2771 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 2780 net/sctp/sm_statefuns.c if (TSN_lt(ctsn, asoc->ctsn_ack_point)) { asoc 2782 net/sctp/sm_statefuns.c asoc->ctsn_ack_point); asoc 2791 net/sctp/sm_statefuns.c if (!TSN_lt(ctsn, asoc->next_tsn)) asoc 2792 net/sctp/sm_statefuns.c return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands); asoc 2798 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_shutdown_event(asoc, 0, GFP_ATOMIC); asoc 2815 net/sctp/sm_statefuns.c if (sctp_outq_is_empty(&asoc->outqueue)) { asoc 2816 net/sctp/sm_statefuns.c disposition = sctp_sf_do_9_2_shutdown_ack(net, ep, asoc, type, asoc 2845 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2854 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 2855 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2859 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 2865 net/sctp/sm_statefuns.c if (TSN_lt(ctsn, asoc->ctsn_ack_point)) { asoc 2867 net/sctp/sm_statefuns.c asoc->ctsn_ack_point); asoc 2876 net/sctp/sm_statefuns.c if (!TSN_lt(ctsn, asoc->next_tsn)) asoc 2877 net/sctp/sm_statefuns.c return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands); asoc 2899 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2909 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 2916 net/sctp/sm_statefuns.c reply = sctp_make_shutdown_ack(asoc, chunk); asoc 2963 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 2972 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 2973 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 2976 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 2985 net/sctp/sm_statefuns.c if (TSN_lte(asoc->last_ecne_tsn, lowest_tsn)) { asoc 3019 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3026 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 3027 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3030 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3075 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3084 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 3087 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3090 net/sctp/sm_statefuns.c if (!sctp_chunk_length_valid(chunk, sctp_datachk_len(&asoc->stream))) asoc 3091 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3094 net/sctp/sm_statefuns.c error = sctp_eat_data(asoc, chunk, commands); asoc 3109 net/sctp/sm_statefuns.c return sctp_sf_abort_violation(net, ep, asoc, chunk, commands, asoc 3111 net/sctp/sm_statefuns.c sctp_datahdr_len(&asoc->stream)); asoc 3119 net/sctp/sm_statefuns.c if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) { asoc 3196 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3204 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 3207 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3210 net/sctp/sm_statefuns.c if (!sctp_chunk_length_valid(chunk, sctp_datachk_len(&asoc->stream))) asoc 3211 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3214 net/sctp/sm_statefuns.c error = sctp_eat_data(asoc, chunk, commands); asoc 3225 net/sctp/sm_statefuns.c return sctp_sf_abort_violation(net, ep, asoc, chunk, commands, asoc 3227 net/sctp/sm_statefuns.c sctp_datahdr_len(&asoc->stream)); asoc 3287 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3296 net/sctp/sm_statefuns.c trace_sctp_probe(ep, asoc, chunk); asoc 3298 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 3299 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3303 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3310 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3320 net/sctp/sm_statefuns.c if (TSN_lt(ctsn, asoc->ctsn_ack_point)) { asoc 3322 net/sctp/sm_statefuns.c asoc->ctsn_ack_point); asoc 3331 net/sctp/sm_statefuns.c if (!TSN_lt(ctsn, asoc->next_tsn)) asoc 3332 net/sctp/sm_statefuns.c return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands); asoc 3364 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3373 net/sctp/sm_statefuns.c packet = sctp_ootb_pkt_new(net, asoc, chunk); asoc 3380 net/sctp/sm_statefuns.c abort = sctp_make_abort(asoc, chunk, 0); asoc 3400 net/sctp/sm_statefuns.c sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3414 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3422 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 3423 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3427 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3431 net/sctp/sm_statefuns.c return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, asoc 3452 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3461 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 3462 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3466 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3473 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP, asoc 3479 net/sctp/sm_statefuns.c reply = sctp_make_shutdown_complete(asoc, chunk); asoc 3535 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3553 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3559 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3574 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3597 net/sctp/sm_statefuns.c return sctp_sf_shut_8_4_5(net, ep, asoc, type, arg, commands); asoc 3599 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3601 net/sctp/sm_statefuns.c return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands); asoc 3628 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3637 net/sctp/sm_statefuns.c packet = sctp_ootb_pkt_new(net, asoc, chunk); asoc 3644 net/sctp/sm_statefuns.c shut = sctp_make_shutdown_complete(asoc, chunk); asoc 3668 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3674 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3690 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3699 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3715 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3726 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 3729 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3738 net/sctp/sm_statefuns.c if (!asoc->peer.asconf_capable || asoc 3740 net/sctp/sm_statefuns.c return sctp_sf_discard_chunk(net, ep, asoc, type, arg, asoc 3745 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3752 net/sctp/sm_statefuns.c if (!sctp_verify_asconf(asoc, chunk, true, &err_param)) asoc 3753 net/sctp/sm_statefuns.c return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, asoc 3760 net/sctp/sm_statefuns.c if (serial == asoc->peer.addip_serial + 1) { asoc 3765 net/sctp/sm_statefuns.c sctp_assoc_clean_asconf_ack_cache(asoc); asoc 3776 net/sctp/sm_statefuns.c asoc, chunk); asoc 3779 net/sctp/sm_statefuns.c } else if (serial < asoc->peer.addip_serial + 1) { asoc 3792 net/sctp/sm_statefuns.c asconf_ack = sctp_assoc_lookup_asconf_ack(asoc, hdr->serial); asoc 3819 net/sctp/sm_statefuns.c if (asoc->new_transport) { asoc 3820 net/sctp/sm_statefuns.c sctp_sf_heartbeat(ep, asoc, type, asoc->new_transport, commands); asoc 3821 net/sctp/sm_statefuns.c ((struct sctp_association *)asoc)->new_transport = NULL; asoc 3830 net/sctp/sm_statefuns.c struct sctp_association *asoc, asoc 3837 net/sctp/sm_statefuns.c if (list_empty(&asoc->addip_chunk_list)) asoc 3840 net/sctp/sm_statefuns.c entry = asoc->addip_chunk_list.next; asoc 3845 net/sctp/sm_statefuns.c asoc->addip_last_asconf = asconf; asoc 3847 net/sctp/sm_statefuns.c return sctp_sf_do_prm_asconf(net, ep, asoc, type, asconf, commands); asoc 3857 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3862 net/sctp/sm_statefuns.c struct sctp_chunk *last_asconf = asoc->addip_last_asconf; asoc 3869 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(asconf_ack, asoc)) { asoc 3872 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3881 net/sctp/sm_statefuns.c if (!asoc->peer.asconf_capable || asoc 3883 net/sctp/sm_statefuns.c return sctp_sf_discard_chunk(net, ep, asoc, type, arg, asoc 3889 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3896 net/sctp/sm_statefuns.c if (!sctp_verify_asconf(asoc, asconf_ack, false, &err_param)) asoc 3897 net/sctp/sm_statefuns.c return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, asoc 3904 net/sctp/sm_statefuns.c sent_serial = asoc->addip_serial - 1; asoc 3914 net/sctp/sm_statefuns.c !(asoc->addip_last_asconf)) { asoc 3915 net/sctp/sm_statefuns.c abort = sctp_make_abort(asoc, asconf_ack, asoc 3937 net/sctp/sm_statefuns.c if ((rcvd_serial == sent_serial) && asoc->addip_last_asconf) { asoc 3941 net/sctp/sm_statefuns.c if (!sctp_process_asconf_ack((struct sctp_association *)asoc, asoc 3944 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, asoc 3947 net/sctp/sm_statefuns.c abort = sctp_make_abort(asoc, asconf_ack, asoc 3973 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 3983 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 3986 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 3991 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 3994 net/sctp/sm_statefuns.c if (!sctp_verify_reconf(asoc, chunk, &err_param)) asoc 3995 net/sctp/sm_statefuns.c return sctp_sf_violation_paramlen(net, ep, asoc, type, arg, asoc 4005 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, param, &ev); asoc 4008 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, param, &ev); asoc 4011 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, param, &ev); asoc 4014 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, param, &ev); asoc 4017 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, param, &ev); asoc 4020 net/sctp/sm_statefuns.c (struct sctp_association *)asoc, param, &ev); asoc 4050 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4060 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 4063 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4066 net/sctp/sm_statefuns.c if (!asoc->peer.prsctp_capable) asoc 4067 net/sctp/sm_statefuns.c return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands); asoc 4070 net/sctp/sm_statefuns.c if (!sctp_chunk_length_valid(chunk, sctp_ftsnchk_len(&asoc->stream))) asoc 4071 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4086 net/sctp/sm_statefuns.c if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0) asoc 4089 net/sctp/sm_statefuns.c if (!asoc->stream.si->validate_ftsn(chunk)) asoc 4093 net/sctp/sm_statefuns.c if (len > sctp_ftsnhdr_len(&asoc->stream)) asoc 4098 net/sctp/sm_statefuns.c if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) { asoc 4117 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4127 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 4130 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4133 net/sctp/sm_statefuns.c if (!asoc->peer.prsctp_capable) asoc 4134 net/sctp/sm_statefuns.c return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands); asoc 4137 net/sctp/sm_statefuns.c if (!sctp_chunk_length_valid(chunk, sctp_ftsnchk_len(&asoc->stream))) asoc 4138 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4153 net/sctp/sm_statefuns.c if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0) asoc 4156 net/sctp/sm_statefuns.c if (!asoc->stream.si->validate_ftsn(chunk)) asoc 4160 net/sctp/sm_statefuns.c if (len > sctp_ftsnhdr_len(&asoc->stream)) asoc 4203 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4221 net/sctp/sm_statefuns.c if (!sctp_auth_asoc_verify_hmac_id(asoc, auth_hdr->hmac_id)) asoc 4228 net/sctp/sm_statefuns.c if (key_id != asoc->active_key_id) { asoc 4229 net/sctp/sm_statefuns.c sh_key = sctp_auth_get_shkey(asoc, key_id); asoc 4259 net/sctp/sm_statefuns.c sctp_auth_calculate_hmac(asoc, chunk->skb, asoc 4279 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4289 net/sctp/sm_statefuns.c if (!asoc->peer.auth_capable) asoc 4290 net/sctp/sm_statefuns.c return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands); asoc 4292 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) { asoc 4295 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4300 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4304 net/sctp/sm_statefuns.c error = sctp_sf_authenticate(asoc, chunk); asoc 4310 net/sctp/sm_statefuns.c err_chunk = sctp_make_op_error(asoc, chunk, asoc 4321 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4324 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4334 net/sctp/sm_statefuns.c if (asoc->active_key_id != ntohs(auth_hdr->shkey_id)) { asoc 4337 net/sctp/sm_statefuns.c ev = sctp_ulpevent_make_authkey(asoc, ntohs(auth_hdr->shkey_id), asoc 4375 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4386 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(unk_chunk, asoc)) asoc 4387 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4394 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4400 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4404 net/sctp/sm_statefuns.c err_chunk = sctp_make_op_error(asoc, unk_chunk, asoc 4414 net/sctp/sm_statefuns.c sctp_sf_pdiscard(net, ep, asoc, type, arg, commands); asoc 4422 net/sctp/sm_statefuns.c err_chunk = sctp_make_op_error(asoc, unk_chunk, asoc 4455 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4467 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4495 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4522 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4531 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, asoc 4543 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4564 net/sctp/sm_statefuns.c if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc)) asoc 4568 net/sctp/sm_statefuns.c abort = sctp_make_abort_violation(asoc, chunk, payload, paylen); asoc 4572 net/sctp/sm_statefuns.c if (asoc) { asoc 4575 net/sctp/sm_statefuns.c !asoc->peer.i.init_tag) { asoc 4593 net/sctp/sm_statefuns.c if (asoc->state <= SCTP_STATE_COOKIE_ECHOED) { asoc 4608 net/sctp/sm_statefuns.c packet = sctp_ootb_pkt_new(net, asoc, chunk); asoc 4629 net/sctp/sm_statefuns.c sctp_sf_pdiscard(net, ep, asoc, SCTP_ST_CHUNK(0), arg, commands); asoc 4660 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4667 net/sctp/sm_statefuns.c return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str, asoc 4680 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4689 net/sctp/sm_statefuns.c if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc)) asoc 4693 net/sctp/sm_statefuns.c abort = sctp_make_violation_paramlen(asoc, chunk, param); asoc 4708 net/sctp/sm_statefuns.c sctp_sf_pdiscard(net, ep, asoc, SCTP_ST_CHUNK(0), arg, commands); asoc 4723 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4730 net/sctp/sm_statefuns.c return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str, asoc 4743 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4750 net/sctp/sm_statefuns.c if (!asoc) asoc 4751 net/sctp/sm_statefuns.c return sctp_sf_violation(net, ep, asoc, type, arg, commands); asoc 4753 net/sctp/sm_statefuns.c return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str, asoc 4818 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4841 net/sctp/sm_statefuns.c repl = sctp_make_init(asoc, &asoc->base.bind_addr, GFP_ATOMIC, 0); asoc 4852 net/sctp/sm_statefuns.c my_asoc = (struct sctp_association *)asoc; asoc 4930 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4970 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 4989 net/sctp/sm_statefuns.c if (sctp_outq_is_empty(&asoc->outqueue)) { asoc 4990 net/sctp/sm_statefuns.c disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type, asoc 5027 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5064 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5079 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5106 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5141 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5149 net/sctp/sm_statefuns.c return sctp_sf_cookie_wait_prm_shutdown(net, ep, asoc, type, arg, commands); asoc 5169 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5218 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5226 net/sctp/sm_statefuns.c return sctp_sf_cookie_wait_prm_abort(net, ep, asoc, type, arg, commands); asoc 5244 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5253 net/sctp/sm_statefuns.c return sctp_sf_do_9_1_prm_abort(net, ep, asoc, type, arg, commands); asoc 5271 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5284 net/sctp/sm_statefuns.c return sctp_sf_do_9_1_prm_abort(net, ep, asoc, type, arg, commands); asoc 5302 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5310 net/sctp/sm_statefuns.c return sctp_sf_shutdown_sent_prm_abort(net, ep, asoc, type, arg, commands); asoc 5338 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5343 net/sctp/sm_statefuns.c if (SCTP_DISPOSITION_NOMEM == sctp_sf_heartbeat(ep, asoc, type, asoc 5370 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5387 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5406 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5430 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5437 net/sctp/sm_statefuns.c event = sctp_ulpevent_make_sender_dry_event(asoc, GFP_ATOMIC); asoc 5462 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5474 net/sctp/sm_statefuns.c reply = sctp_make_shutdown(asoc, arg); asoc 5494 net/sctp/sm_statefuns.c if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) asoc 5532 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5548 net/sctp/sm_statefuns.c if (!sctp_vtag_verify(chunk, asoc)) asoc 5549 net/sctp/sm_statefuns.c return sctp_sf_pdiscard(net, ep, asoc, type, arg, asoc 5555 net/sctp/sm_statefuns.c return sctp_sf_violation_chunklen(net, ep, asoc, type, asoc 5562 net/sctp/sm_statefuns.c reply = sctp_make_shutdown_ack(asoc, chunk); asoc 5575 net/sctp/sm_statefuns.c if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) asoc 5605 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5633 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5642 net/sctp/sm_statefuns.c if (asoc->overall_error_count >= asoc->max_retrans) { asoc 5643 net/sctp/sm_statefuns.c if (asoc->peer.zero_window_announced && asoc 5644 net/sctp/sm_statefuns.c asoc->state == SCTP_STATE_SHUTDOWN_PENDING) { asoc 5721 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5753 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5758 net/sctp/sm_statefuns.c int attempts = asoc->init_err_counter + 1; asoc 5766 net/sctp/sm_statefuns.c if (attempts <= asoc->max_init_attempts) { asoc 5767 net/sctp/sm_statefuns.c bp = (struct sctp_bind_addr *) &asoc->base.bind_addr; asoc 5768 net/sctp/sm_statefuns.c repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0); asoc 5784 net/sctp/sm_statefuns.c asoc->max_init_attempts); asoc 5818 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5823 net/sctp/sm_statefuns.c int attempts = asoc->init_err_counter + 1; asoc 5830 net/sctp/sm_statefuns.c if (attempts <= asoc->max_init_attempts) { asoc 5831 net/sctp/sm_statefuns.c repl = sctp_make_cookie_echo(asoc, NULL); asoc 5869 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5880 net/sctp/sm_statefuns.c ((struct sctp_association *)asoc)->shutdown_retries++; asoc 5882 net/sctp/sm_statefuns.c if (asoc->overall_error_count >= asoc->max_retrans) { asoc 5893 net/sctp/sm_statefuns.c switch (asoc->state) { asoc 5895 net/sctp/sm_statefuns.c reply = sctp_make_shutdown(asoc, NULL); asoc 5899 net/sctp/sm_statefuns.c reply = sctp_make_shutdown_ack(asoc, NULL); asoc 5914 net/sctp/sm_statefuns.c if (asoc->shutdown_last_sent_to) asoc 5916 net/sctp/sm_statefuns.c SCTP_TRANSPORT(asoc->shutdown_last_sent_to)); asoc 5940 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 5945 net/sctp/sm_statefuns.c struct sctp_chunk *chunk = asoc->addip_last_asconf; asoc 5966 net/sctp/sm_statefuns.c if (asoc->overall_error_count >= asoc->max_retrans) { asoc 5989 net/sctp/sm_statefuns.c sctp_chunk_hold(asoc->addip_last_asconf); asoc 5991 net/sctp/sm_statefuns.c SCTP_CHUNK(asoc->addip_last_asconf)); asoc 6012 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6023 net/sctp/sm_statefuns.c reply = sctp_make_abort(asoc, NULL, 0); asoc 6049 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6070 net/sctp/sm_statefuns.c if (sctp_outq_is_empty(&asoc->outqueue)) { asoc 6071 net/sctp/sm_statefuns.c disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type, asoc 6092 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6109 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6129 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6174 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6181 net/sctp/sm_statefuns.c packet = sctp_ootb_pkt_new(net, asoc, chunk); asoc 6187 net/sctp/sm_statefuns.c abort = sctp_make_abort(asoc, chunk, paylen); asoc 6215 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6230 net/sctp/sm_statefuns.c if (asoc) { asoc 6244 net/sctp/sm_statefuns.c vtag = asoc->peer.i.init_tag; asoc 6296 net/sctp/sm_statefuns.c const struct sctp_association *asoc, asoc 6304 net/sctp/sm_statefuns.c packet = sctp_ootb_pkt_new(net, asoc, chunk); asoc 6325 net/sctp/sm_statefuns.c static int sctp_eat_data(const struct sctp_association *asoc, asoc 6329 net/sctp/sm_statefuns.c struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map; asoc 6330 net/sctp/sm_statefuns.c struct sock *sk = asoc->base.sk; asoc 6341 net/sctp/sm_statefuns.c skb_pull(chunk->skb, sctp_datahdr_len(&asoc->stream)); asoc 6358 net/sctp/sm_statefuns.c if (asoc->peer.ecn_capable && !chunk->ecn_ce_done) { asoc 6369 net/sctp/sm_statefuns.c tmp = sctp_tsnmap_check(&asoc->peer.tsn_map, tsn); asoc 6374 net/sctp/sm_statefuns.c if (chunk->asoc) asoc 6375 net/sctp/sm_statefuns.c chunk->asoc->stats.outofseqtsns++; asoc 6389 net/sctp/sm_statefuns.c datalen -= sctp_datachk_len(&asoc->stream); asoc 6394 net/sctp/sm_statefuns.c if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) { asoc 6407 net/sctp/sm_statefuns.c if ((!chunk->data_accepted) && (!asoc->rwnd || asoc->rwnd_over || asoc 6408 net/sctp/sm_statefuns.c (datalen > asoc->rwnd + asoc->frag_point))) { asoc 6422 net/sctp/sm_statefuns.c __func__, tsn, datalen, asoc->rwnd); asoc 6455 net/sctp/sm_statefuns.c err = sctp_make_abort_no_data(asoc, chunk, tsn); asoc 6480 net/sctp/sm_statefuns.c if (chunk->asoc) asoc 6481 net/sctp/sm_statefuns.c chunk->asoc->stats.iuodchunks++; asoc 6484 net/sctp/sm_statefuns.c if (chunk->asoc) asoc 6485 net/sctp/sm_statefuns.c chunk->asoc->stats.iodchunks++; asoc 6496 net/sctp/sm_statefuns.c if (ntohs(data_hdr->stream) >= asoc->stream.incnt) { asoc 6500 net/sctp/sm_statefuns.c err = sctp_make_op_error(asoc, chunk, SCTP_ERROR_INV_STRM, asoc 6517 net/sctp/sm_statefuns.c if (!asoc->stream.si->validate_data(chunk)) asoc 73 net/sctp/socket.c static int sctp_wait_for_sndbuf(struct sctp_association *asoc, long *timeo_p, asoc 86 net/sctp/socket.c static int sctp_send_asconf(struct sctp_association *asoc, asoc 105 net/sctp/socket.c static inline int sctp_wspace(struct sctp_association *asoc) asoc 107 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 109 net/sctp/socket.c return asoc->ep->sndbuf_policy ? sk->sk_sndbuf - asoc->sndbuf_used asoc 124 net/sctp/socket.c struct sctp_association *asoc = chunk->asoc; asoc 125 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 128 net/sctp/socket.c sctp_association_hold(asoc); asoc 140 net/sctp/socket.c asoc->sndbuf_used += chunk->skb->truesize + sizeof(struct sctp_chunk); asoc 156 net/sctp/socket.c if ((clear && asoc->base.sk == c->skb->sk) || \ asoc 157 net/sctp/socket.c (!clear && asoc->base.sk != c->skb->sk)) \ asoc 163 net/sctp/socket.c static void sctp_for_each_tx_datachunk(struct sctp_association *asoc, asoc 169 net/sctp/socket.c struct sctp_outq *q = &asoc->outqueue; asoc 173 net/sctp/socket.c list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) asoc 190 net/sctp/socket.c static void sctp_for_each_rx_skb(struct sctp_association *asoc, struct sock *sk, asoc 196 net/sctp/socket.c sctp_skb_for_each(skb, &asoc->ulpq.lobby, tmp) asoc 199 net/sctp/socket.c sctp_skb_for_each(skb, &asoc->ulpq.reasm, tmp) asoc 202 net/sctp/socket.c sctp_skb_for_each(skb, &asoc->ulpq.reasm_uo, tmp) asoc 232 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 245 net/sctp/socket.c asoc = list_entry(sctp_sk(sk)->ep->asocs.next, asoc 247 net/sctp/socket.c return asoc; asoc 255 net/sctp/socket.c asoc = (struct sctp_association *)idr_find(&sctp_assocs_id, (int)id); asoc 256 net/sctp/socket.c if (asoc && (asoc->base.sk != sk || asoc->base.dead)) asoc 257 net/sctp/socket.c asoc = NULL; asoc 260 net/sctp/socket.c return asoc; asoc 451 net/sctp/socket.c static int sctp_send_asconf(struct sctp_association *asoc, asoc 454 net/sctp/socket.c struct net *net = sock_net(asoc->base.sk); asoc 460 net/sctp/socket.c if (asoc->addip_last_asconf) { asoc 461 net/sctp/socket.c list_add_tail(&chunk->list, &asoc->addip_chunk_list); asoc 467 net/sctp/socket.c retval = sctp_primitive_ASCONF(net, asoc, chunk); asoc 471 net/sctp/socket.c asoc->addip_last_asconf = chunk; asoc 545 net/sctp/socket.c struct sctp_association *asoc; asoc 566 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) { asoc 567 net/sctp/socket.c if (!asoc->peer.asconf_capable) asoc 570 net/sctp/socket.c if (asoc->peer.addip_disabled_mask & SCTP_PARAM_ADD_IP) asoc 573 net/sctp/socket.c if (!sctp_state(asoc, ESTABLISHED)) asoc 590 net/sctp/socket.c if (sctp_assoc_lookup_laddr(asoc, addr)) asoc 601 net/sctp/socket.c bp = &asoc->base.bind_addr; asoc 604 net/sctp/socket.c chunk = sctp_make_asconf_update_ip(asoc, &laddr->a, addrs, asoc 624 net/sctp/socket.c if (asoc->src_out_of_asoc_ok) { asoc 628 net/sctp/socket.c &asoc->peer.transport_addr_list, transports) { asoc 629 net/sctp/socket.c trans->cwnd = min(4*asoc->pathmtu, max_t(__u32, asoc 630 net/sctp/socket.c 2*asoc->pathmtu, 4380)); asoc 631 net/sctp/socket.c trans->ssthresh = asoc->peer.i.a_rwnd; asoc 632 net/sctp/socket.c trans->rto = asoc->rto_initial; asoc 633 net/sctp/socket.c sctp_max_rto(asoc, trans); asoc 637 net/sctp/socket.c sctp_sk(asoc->base.sk)); asoc 640 net/sctp/socket.c retval = sctp_send_asconf(asoc, chunk); asoc 747 net/sctp/socket.c struct sctp_association *asoc; asoc 769 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) { asoc 771 net/sctp/socket.c if (!asoc->peer.asconf_capable) asoc 774 net/sctp/socket.c if (asoc->peer.addip_disabled_mask & SCTP_PARAM_DEL_IP) asoc 777 net/sctp/socket.c if (!sctp_state(asoc, ESTABLISHED)) asoc 794 net/sctp/socket.c if (!sctp_assoc_lookup_laddr(asoc, laddr)) asoc 807 net/sctp/socket.c bp = &asoc->base.bind_addr; asoc 811 net/sctp/socket.c if (asoc->asconf_addr_del_pending) asoc 813 net/sctp/socket.c asoc->asconf_addr_del_pending = asoc 815 net/sctp/socket.c if (asoc->asconf_addr_del_pending == NULL) { asoc 819 net/sctp/socket.c asoc->asconf_addr_del_pending->sa.sa_family = asoc 821 net/sctp/socket.c asoc->asconf_addr_del_pending->v4.sin_port = asoc 827 net/sctp/socket.c asoc->asconf_addr_del_pending->v4.sin_addr.s_addr = sin->sin_addr.s_addr; asoc 832 net/sctp/socket.c asoc->asconf_addr_del_pending->v6.sin6_addr = sin6->sin6_addr; asoc 836 net/sctp/socket.c __func__, asoc, &asoc->asconf_addr_del_pending->sa, asoc 837 net/sctp/socket.c asoc->asconf_addr_del_pending); asoc 839 net/sctp/socket.c asoc->src_out_of_asoc_ok = 1; asoc 851 net/sctp/socket.c chunk = sctp_make_asconf_update_ip(asoc, laddr, addrs, addrcnt, asoc 877 net/sctp/socket.c list_for_each_entry(transport, &asoc->peer.transport_addr_list, asoc 880 net/sctp/socket.c sctp_sk(asoc->base.sk)); asoc 886 net/sctp/socket.c retval = sctp_send_asconf(asoc, chunk); asoc 1066 net/sctp/socket.c struct sctp_association *asoc; asoc 1085 net/sctp/socket.c asoc = sctp_association_new(ep, sk, scope, GFP_KERNEL); asoc 1086 net/sctp/socket.c if (!asoc) asoc 1089 net/sctp/socket.c err = sctp_assoc_set_bind_addr_from_ep(asoc, scope, GFP_KERNEL); asoc 1093 net/sctp/socket.c *tp = sctp_assoc_add_peer(asoc, daddr, GFP_KERNEL, SCTP_UNKNOWN); asoc 1105 net/sctp/socket.c asoc->c.sinit_num_ostreams = outcnt; asoc 1107 net/sctp/socket.c err = sctp_stream_init(&asoc->stream, outcnt, 0, GFP_KERNEL); asoc 1113 net/sctp/socket.c asoc->c.sinit_max_instreams = init->sinit_max_instreams; asoc 1116 net/sctp/socket.c asoc->max_init_attempts = init->sinit_max_attempts; asoc 1119 net/sctp/socket.c asoc->max_init_timeo = asoc 1124 net/sctp/socket.c sctp_association_free(asoc); asoc 1128 net/sctp/socket.c static int sctp_connect_add_peer(struct sctp_association *asoc, asoc 1131 net/sctp/socket.c struct sctp_endpoint *ep = asoc->ep; asoc 1141 net/sctp/socket.c if (old && old != asoc) asoc 1148 net/sctp/socket.c t = sctp_assoc_add_peer(asoc, daddr, GFP_KERNEL, SCTP_UNKNOWN); asoc 1166 net/sctp/socket.c struct sctp_association *asoc; asoc 1186 net/sctp/socket.c asoc = sctp_endpoint_lookup_assoc(ep, daddr, &transport); asoc 1187 net/sctp/socket.c if (asoc) asoc 1188 net/sctp/socket.c return asoc->state >= SCTP_STATE_ESTABLISHED ? -EISCONN asoc 1194 net/sctp/socket.c asoc = transport->asoc; asoc 1208 net/sctp/socket.c if (asoc->peer.port != ntohs(daddr->v4.sin_port)) asoc 1211 net/sctp/socket.c err = sctp_connect_add_peer(asoc, daddr, af->sockaddr_len); asoc 1223 net/sctp/socket.c err = sctp_assoc_set_id(asoc, GFP_KERNEL); asoc 1228 net/sctp/socket.c err = sctp_primitive_ASSOCIATE(sock_net(sk), asoc, NULL); asoc 1233 net/sctp/socket.c inet_sk(sk)->inet_dport = htons(asoc->peer.port); asoc 1238 net/sctp/socket.c *assoc_id = asoc->assoc_id; asoc 1241 net/sctp/socket.c return sctp_wait_for_connect(asoc, &timeo); asoc 1245 net/sctp/socket.c __func__, asoc, kaddrs, err); asoc 1246 net/sctp/socket.c sctp_association_free(asoc); asoc 1489 net/sctp/socket.c struct sctp_association *asoc; asoc 1507 net/sctp/socket.c asoc = list_entry(pos, struct sctp_association, asocs); asoc 1515 net/sctp/socket.c if (sctp_state(asoc, CLOSED)) { asoc 1516 net/sctp/socket.c sctp_association_free(asoc); asoc 1521 net/sctp/socket.c if (data_was_unread || !skb_queue_empty(&asoc->ulpq.lobby) || asoc 1522 net/sctp/socket.c !skb_queue_empty(&asoc->ulpq.reasm) || asoc 1523 net/sctp/socket.c !skb_queue_empty(&asoc->ulpq.reasm_uo) || asoc 1527 net/sctp/socket.c chunk = sctp_make_abort_user(asoc, NULL, 0); asoc 1528 net/sctp/socket.c sctp_primitive_ABORT(net, asoc, chunk); asoc 1530 net/sctp/socket.c sctp_primitive_SHUTDOWN(net, asoc, NULL); asoc 1665 net/sctp/socket.c struct sctp_association *asoc; asoc 1698 net/sctp/socket.c asoc = (*tp)->asoc; asoc 1727 net/sctp/socket.c daddr->v4.sin_port = htons(asoc->peer.port); asoc 1738 net/sctp/socket.c daddr->v6.sin6_port = htons(asoc->peer.port); asoc 1742 net/sctp/socket.c err = sctp_connect_add_peer(asoc, daddr, sizeof(*daddr)); asoc 1750 net/sctp/socket.c sctp_association_free(asoc); asoc 1754 net/sctp/socket.c static int sctp_sendmsg_check_sflags(struct sctp_association *asoc, asoc 1758 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 1761 net/sctp/socket.c if (sctp_state(asoc, CLOSED) && sctp_style(sk, TCP)) asoc 1765 net/sctp/socket.c !sctp_state(asoc, ESTABLISHED)) asoc 1769 net/sctp/socket.c pr_debug("%s: shutting down association:%p\n", __func__, asoc); asoc 1770 net/sctp/socket.c sctp_primitive_SHUTDOWN(net, asoc, NULL); asoc 1778 net/sctp/socket.c chunk = sctp_make_abort_user(asoc, msg, msg_len); asoc 1782 net/sctp/socket.c pr_debug("%s: aborting association:%p\n", __func__, asoc); asoc 1783 net/sctp/socket.c sctp_primitive_ABORT(net, asoc, chunk); asoc 1792 net/sctp/socket.c static int sctp_sendmsg_to_asoc(struct sctp_association *asoc, asoc 1797 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 1806 net/sctp/socket.c if (sinfo->sinfo_stream >= asoc->stream.outcnt) { asoc 1811 net/sctp/socket.c if (unlikely(!SCTP_SO(&asoc->stream, sinfo->sinfo_stream)->ext)) { asoc 1812 net/sctp/socket.c err = sctp_stream_init_ext(&asoc->stream, sinfo->sinfo_stream); asoc 1817 net/sctp/socket.c if (sp->disable_fragments && msg_len > asoc->frag_point) { asoc 1822 net/sctp/socket.c if (asoc->pmtu_pending) { asoc 1824 net/sctp/socket.c sctp_assoc_sync_pmtu(asoc); asoc 1825 net/sctp/socket.c asoc->pmtu_pending = 0; asoc 1828 net/sctp/socket.c if (sctp_wspace(asoc) < (int)msg_len) asoc 1829 net/sctp/socket.c sctp_prsctp_prune(asoc, sinfo, msg_len - sctp_wspace(asoc)); asoc 1834 net/sctp/socket.c if (sctp_wspace(asoc) <= 0 || !sk_wmem_schedule(sk, msg_len)) { asoc 1836 net/sctp/socket.c err = sctp_wait_for_sndbuf(asoc, &timeo, msg_len); asoc 1841 net/sctp/socket.c if (sctp_state(asoc, CLOSED)) { asoc 1842 net/sctp/socket.c err = sctp_primitive_ASSOCIATE(net, asoc, NULL); asoc 1846 net/sctp/socket.c if (asoc->ep->intl_enable) { asoc 1848 net/sctp/socket.c err = sctp_wait_for_connect(asoc, &timeo); asoc 1860 net/sctp/socket.c datamsg = sctp_datamsg_from_user(asoc, sinfo, &msg->msg_iter); asoc 1866 net/sctp/socket.c asoc->force_delay = !!(msg->msg_flags & MSG_MORE); asoc 1874 net/sctp/socket.c err = sctp_primitive_SEND(net, asoc, datamsg); asoc 1886 net/sctp/socket.c sctp_wait_for_connect(asoc, &timeo); asoc 1918 net/sctp/socket.c static void sctp_sendmsg_update_sinfo(struct sctp_association *asoc, asoc 1923 net/sctp/socket.c sinfo->sinfo_stream = asoc->default_stream; asoc 1924 net/sctp/socket.c sinfo->sinfo_ppid = asoc->default_ppid; asoc 1925 net/sctp/socket.c sinfo->sinfo_context = asoc->default_context; asoc 1926 net/sctp/socket.c sinfo->sinfo_assoc_id = sctp_assoc2id(asoc); asoc 1929 net/sctp/socket.c sinfo->sinfo_flags = asoc->default_flags; asoc 1933 net/sctp/socket.c sinfo->sinfo_timetolive = asoc->default_timetolive; asoc 1949 net/sctp/socket.c struct sctp_association *asoc, *tmp; asoc 1975 net/sctp/socket.c list_for_each_entry_safe(asoc, tmp, &ep->asocs, asocs) { asoc 1976 net/sctp/socket.c err = sctp_sendmsg_check_sflags(asoc, sflags, msg, asoc 1983 net/sctp/socket.c sctp_sendmsg_update_sinfo(asoc, sinfo, &cmsgs); asoc 1985 net/sctp/socket.c err = sctp_sendmsg_to_asoc(asoc, msg, msg_len, asoc 1998 net/sctp/socket.c asoc = sctp_endpoint_lookup_assoc(ep, daddr, &transport); asoc 1999 net/sctp/socket.c if (asoc) { asoc 2000 net/sctp/socket.c err = sctp_sendmsg_check_sflags(asoc, sflags, msg, asoc 2010 net/sctp/socket.c asoc = transport->asoc; asoc 2017 net/sctp/socket.c asoc = sctp_id2assoc(sk, sinfo->sinfo_assoc_id); asoc 2018 net/sctp/socket.c if (!asoc) { asoc 2023 net/sctp/socket.c err = sctp_sendmsg_check_sflags(asoc, sflags, msg, msg_len); asoc 2029 net/sctp/socket.c sctp_sendmsg_update_sinfo(asoc, sinfo, &cmsgs); asoc 2032 net/sctp/socket.c err = sctp_sendmsg_to_asoc(asoc, msg, msg_len, transport, sinfo); asoc 2034 net/sctp/socket.c sctp_association_free(asoc); asoc 2173 net/sctp/socket.c sctp_assoc_rwnd_increase(event->asoc, copied); asoc 2229 net/sctp/socket.c struct sctp_association *asoc; asoc 2242 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) asoc 2243 net/sctp/socket.c asoc->subscribe = sctp_sk(sk)->subscribe; asoc 2252 net/sctp/socket.c asoc = sctp_id2assoc(sk, 0); asoc 2253 net/sctp/socket.c if (asoc && sctp_outq_is_empty(&asoc->outqueue)) { asoc 2254 net/sctp/socket.c event = sctp_ulpevent_make_sender_dry_event(asoc, asoc 2259 net/sctp/socket.c asoc->stream.si->enqueue_event(&asoc->ulpq, event); asoc 2437 net/sctp/socket.c struct sctp_association *asoc, asoc 2446 net/sctp/socket.c struct net *net = sock_net(trans->asoc->base.sk); asoc 2448 net/sctp/socket.c error = sctp_primitive_REQUESTHEARTBEAT(net, trans->asoc, trans); asoc 2471 net/sctp/socket.c } else if (asoc) { asoc 2472 net/sctp/socket.c asoc->hbinterval = asoc 2484 net/sctp/socket.c } else if (asoc) { asoc 2485 net/sctp/socket.c asoc->param_flags = asoc 2486 net/sctp/socket.c (asoc->param_flags & ~SPP_HB) | hb_change; asoc 2501 net/sctp/socket.c sctp_assoc_sync_pmtu(asoc); asoc 2502 net/sctp/socket.c } else if (asoc) { asoc 2503 net/sctp/socket.c sctp_assoc_set_pmtu(asoc, params->spp_pathmtu); asoc 2517 net/sctp/socket.c sctp_assoc_sync_pmtu(asoc); asoc 2519 net/sctp/socket.c } else if (asoc) { asoc 2520 net/sctp/socket.c asoc->param_flags = asoc 2521 net/sctp/socket.c (asoc->param_flags & ~SPP_PMTUD) | pmtud_change; asoc 2536 net/sctp/socket.c } else if (asoc) { asoc 2537 net/sctp/socket.c asoc->sackdelay = asoc 2549 net/sctp/socket.c } else if (asoc) { asoc 2550 net/sctp/socket.c asoc->param_flags = asoc 2551 net/sctp/socket.c (asoc->param_flags & ~SPP_SACKDELAY) | asoc 2566 net/sctp/socket.c } else if (asoc) { asoc 2567 net/sctp/socket.c asoc->pathmaxrxt = params->spp_pathmaxrxt; asoc 2580 net/sctp/socket.c } else if (asoc) { asoc 2583 net/sctp/socket.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 2591 net/sctp/socket.c asoc->flowlabel = params->spp_ipv6_flowlabel & asoc 2593 net/sctp/socket.c asoc->flowlabel |= SCTP_FLOWLABEL_SET_MASK; asoc 2605 net/sctp/socket.c } else if (asoc) { asoc 2608 net/sctp/socket.c list_for_each_entry(t, &asoc->peer.transport_addr_list, asoc 2614 net/sctp/socket.c asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK; asoc 2615 net/sctp/socket.c asoc->dscp |= SCTP_DSCP_SET_MASK; asoc 2631 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 2676 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.spp_assoc_id); asoc 2677 net/sctp/socket.c if (!asoc && params.spp_assoc_id != SCTP_FUTURE_ASSOC && asoc 2684 net/sctp/socket.c if (params.spp_flags & SPP_HB_DEMAND && !trans && !asoc) asoc 2688 net/sctp/socket.c error = sctp_apply_peer_addr_params(¶ms, trans, asoc, sp, asoc 2698 net/sctp/socket.c if (!trans && asoc) { asoc 2699 net/sctp/socket.c list_for_each_entry(trans, &asoc->peer.transport_addr_list, asoc 2701 net/sctp/socket.c sctp_apply_peer_addr_params(¶ms, trans, asoc, sp, asoc 2721 net/sctp/socket.c struct sctp_association *asoc) asoc 2726 net/sctp/socket.c asoc->sackdelay = msecs_to_jiffies(params->sack_delay); asoc 2727 net/sctp/socket.c asoc->param_flags = asoc 2728 net/sctp/socket.c sctp_spp_sackdelay_enable(asoc->param_flags); asoc 2731 net/sctp/socket.c asoc->param_flags = asoc 2732 net/sctp/socket.c sctp_spp_sackdelay_disable(asoc->param_flags); asoc 2734 net/sctp/socket.c asoc->sackfreq = params->sack_freq; asoc 2735 net/sctp/socket.c asoc->param_flags = asoc 2736 net/sctp/socket.c sctp_spp_sackdelay_enable(asoc->param_flags); asoc 2739 net/sctp/socket.c list_for_each_entry(trans, &asoc->peer.transport_addr_list, asoc 2797 net/sctp/socket.c struct sctp_association *asoc; asoc 2830 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.sack_assoc_id); asoc 2831 net/sctp/socket.c if (!asoc && params.sack_assoc_id > SCTP_ALL_ASSOC && asoc 2835 net/sctp/socket.c if (asoc) { asoc 2836 net/sctp/socket.c sctp_apply_asoc_delayed_ack(¶ms, asoc); asoc 2863 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) asoc 2864 net/sctp/socket.c sctp_apply_asoc_delayed_ack(¶ms, asoc); asoc 2921 net/sctp/socket.c struct sctp_association *asoc; asoc 2933 net/sctp/socket.c asoc = sctp_id2assoc(sk, info.sinfo_assoc_id); asoc 2934 net/sctp/socket.c if (!asoc && info.sinfo_assoc_id > SCTP_ALL_ASSOC && asoc 2938 net/sctp/socket.c if (asoc) { asoc 2939 net/sctp/socket.c asoc->default_stream = info.sinfo_stream; asoc 2940 net/sctp/socket.c asoc->default_flags = info.sinfo_flags; asoc 2941 net/sctp/socket.c asoc->default_ppid = info.sinfo_ppid; asoc 2942 net/sctp/socket.c asoc->default_context = info.sinfo_context; asoc 2943 net/sctp/socket.c asoc->default_timetolive = info.sinfo_timetolive; asoc 2962 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) { asoc 2963 net/sctp/socket.c asoc->default_stream = info.sinfo_stream; asoc 2964 net/sctp/socket.c asoc->default_flags = info.sinfo_flags; asoc 2965 net/sctp/socket.c asoc->default_ppid = info.sinfo_ppid; asoc 2966 net/sctp/socket.c asoc->default_context = info.sinfo_context; asoc 2967 net/sctp/socket.c asoc->default_timetolive = info.sinfo_timetolive; asoc 2982 net/sctp/socket.c struct sctp_association *asoc; asoc 2994 net/sctp/socket.c asoc = sctp_id2assoc(sk, info.snd_assoc_id); asoc 2995 net/sctp/socket.c if (!asoc && info.snd_assoc_id > SCTP_ALL_ASSOC && asoc 2999 net/sctp/socket.c if (asoc) { asoc 3000 net/sctp/socket.c asoc->default_stream = info.snd_sid; asoc 3001 net/sctp/socket.c asoc->default_flags = info.snd_flags; asoc 3002 net/sctp/socket.c asoc->default_ppid = info.snd_ppid; asoc 3003 net/sctp/socket.c asoc->default_context = info.snd_context; asoc 3021 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) { asoc 3022 net/sctp/socket.c asoc->default_stream = info.snd_sid; asoc 3023 net/sctp/socket.c asoc->default_flags = info.snd_flags; asoc 3024 net/sctp/socket.c asoc->default_ppid = info.snd_ppid; asoc 3025 net/sctp/socket.c asoc->default_context = info.snd_context; asoc 3067 net/sctp/socket.c sctp_assoc_set_primary(trans->asoc, trans); asoc 3109 net/sctp/socket.c struct sctp_association *asoc; asoc 3119 net/sctp/socket.c asoc = sctp_id2assoc(sk, rtoinfo.srto_assoc_id); asoc 3122 net/sctp/socket.c if (!asoc && rtoinfo.srto_assoc_id != SCTP_FUTURE_ASSOC && asoc 3130 net/sctp/socket.c rto_max = asoc ? msecs_to_jiffies(rto_max) : rto_max; asoc 3132 net/sctp/socket.c rto_max = asoc ? asoc->rto_max : sp->rtoinfo.srto_max; asoc 3135 net/sctp/socket.c rto_min = asoc ? msecs_to_jiffies(rto_min) : rto_min; asoc 3137 net/sctp/socket.c rto_min = asoc ? asoc->rto_min : sp->rtoinfo.srto_min; asoc 3142 net/sctp/socket.c if (asoc) { asoc 3144 net/sctp/socket.c asoc->rto_initial = asoc 3146 net/sctp/socket.c asoc->rto_max = rto_max; asoc 3147 net/sctp/socket.c asoc->rto_min = rto_min; asoc 3176 net/sctp/socket.c struct sctp_association *asoc; asoc 3183 net/sctp/socket.c asoc = sctp_id2assoc(sk, assocparams.sasoc_assoc_id); asoc 3185 net/sctp/socket.c if (!asoc && assocparams.sasoc_assoc_id != SCTP_FUTURE_ASSOC && asoc 3190 net/sctp/socket.c if (asoc) { asoc 3196 net/sctp/socket.c list_for_each_entry(peer_addr, &asoc->peer.transport_addr_list, asoc 3211 net/sctp/socket.c asoc->max_retrans = assocparams.sasoc_asocmaxrxt; asoc 3215 net/sctp/socket.c asoc->cookie_life = ms_to_ktime(assocparams.sasoc_cookie_life); asoc 3288 net/sctp/socket.c struct sctp_association *asoc; asoc 3308 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 3309 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 3315 net/sctp/socket.c __u16 datasize = asoc ? sctp_datachk_len(&asoc->stream) : asoc 3325 net/sctp/socket.c if (asoc) { asoc 3326 net/sctp/socket.c asoc->user_frag = val; asoc 3327 net/sctp/socket.c sctp_assoc_update_frag_point(asoc); asoc 3348 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 3365 net/sctp/socket.c asoc = sctp_id2assoc(sk, prim.sspp_assoc_id); asoc 3366 net/sctp/socket.c if (!asoc) asoc 3369 net/sctp/socket.c if (!asoc->peer.asconf_capable) asoc 3372 net/sctp/socket.c if (asoc->peer.addip_disabled_mask & SCTP_PARAM_SET_PRIMARY) asoc 3375 net/sctp/socket.c if (!sctp_state(asoc, ESTABLISHED)) asoc 3385 net/sctp/socket.c if (!sctp_assoc_lookup_laddr(asoc, (union sctp_addr *)&prim.sspp_addr)) asoc 3396 net/sctp/socket.c chunk = sctp_make_asconf_set_prim(asoc, asoc 3401 net/sctp/socket.c err = sctp_send_asconf(asoc, chunk); asoc 3442 net/sctp/socket.c struct sctp_association *asoc; asoc 3449 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 3450 net/sctp/socket.c if (!asoc && params.assoc_id > SCTP_ALL_ASSOC && asoc 3454 net/sctp/socket.c if (asoc) { asoc 3455 net/sctp/socket.c asoc->default_rcv_context = params.assoc_value; asoc 3469 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) asoc 3470 net/sctp/socket.c asoc->default_rcv_context = params.assoc_value; asoc 3574 net/sctp/socket.c struct sctp_association *asoc; asoc 3591 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 3592 net/sctp/socket.c if (!asoc && params.assoc_id > SCTP_ALL_ASSOC && asoc 3596 net/sctp/socket.c if (asoc) { asoc 3597 net/sctp/socket.c asoc->max_burst = params.assoc_value; asoc 3611 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) asoc 3612 net/sctp/socket.c asoc->max_burst = params.assoc_value; asoc 3703 net/sctp/socket.c struct sctp_association *asoc; asoc 3720 net/sctp/socket.c asoc = sctp_id2assoc(sk, authkey->sca_assoc_id); asoc 3721 net/sctp/socket.c if (!asoc && authkey->sca_assoc_id > SCTP_ALL_ASSOC && asoc 3725 net/sctp/socket.c if (asoc) { asoc 3726 net/sctp/socket.c ret = sctp_auth_set_key(ep, asoc, authkey); asoc 3735 net/sctp/socket.c ret = sctp_auth_set_key(ep, asoc, authkey); asoc 3744 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) { asoc 3745 net/sctp/socket.c int res = sctp_auth_set_key(ep, asoc, authkey); asoc 3768 net/sctp/socket.c struct sctp_association *asoc; asoc 3777 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.scact_assoc_id); asoc 3778 net/sctp/socket.c if (!asoc && val.scact_assoc_id > SCTP_ALL_ASSOC && asoc 3782 net/sctp/socket.c if (asoc) asoc 3783 net/sctp/socket.c return sctp_auth_set_active_key(ep, asoc, val.scact_keynumber); asoc 3790 net/sctp/socket.c ret = sctp_auth_set_active_key(ep, asoc, val.scact_keynumber); asoc 3797 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) { asoc 3798 net/sctp/socket.c int res = sctp_auth_set_active_key(ep, asoc, asoc 3819 net/sctp/socket.c struct sctp_association *asoc; asoc 3828 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.scact_assoc_id); asoc 3829 net/sctp/socket.c if (!asoc && val.scact_assoc_id > SCTP_ALL_ASSOC && asoc 3833 net/sctp/socket.c if (asoc) asoc 3834 net/sctp/socket.c return sctp_auth_del_key_id(ep, asoc, val.scact_keynumber); asoc 3841 net/sctp/socket.c ret = sctp_auth_del_key_id(ep, asoc, val.scact_keynumber); asoc 3848 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) { asoc 3849 net/sctp/socket.c int res = sctp_auth_del_key_id(ep, asoc, asoc 3869 net/sctp/socket.c struct sctp_association *asoc; asoc 3878 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.scact_assoc_id); asoc 3879 net/sctp/socket.c if (!asoc && val.scact_assoc_id > SCTP_ALL_ASSOC && asoc 3883 net/sctp/socket.c if (asoc) asoc 3884 net/sctp/socket.c return sctp_auth_deact_key_id(ep, asoc, val.scact_keynumber); asoc 3891 net/sctp/socket.c ret = sctp_auth_deact_key_id(ep, asoc, val.scact_keynumber); asoc 3898 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) { asoc 3899 net/sctp/socket.c int res = sctp_auth_deact_key_id(ep, asoc, asoc 3965 net/sctp/socket.c struct sctp_association *asoc; asoc 3986 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.spt_assoc_id); asoc 3987 net/sctp/socket.c if (!asoc && val.spt_assoc_id != SCTP_FUTURE_ASSOC && asoc 3991 net/sctp/socket.c if (asoc) { asoc 3992 net/sctp/socket.c list_for_each_entry(trans, &asoc->peer.transport_addr_list, asoc 4000 net/sctp/socket.c asoc->pathmaxrxt = val.spt_pathmaxrxt; asoc 4001 net/sctp/socket.c asoc->pf_retrans = val.spt_pathpfthld; asoc 4050 net/sctp/socket.c struct sctp_association *asoc; asoc 4058 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4059 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 4074 net/sctp/socket.c struct sctp_association *asoc; asoc 4091 net/sctp/socket.c asoc = sctp_id2assoc(sk, info.pr_assoc_id); asoc 4092 net/sctp/socket.c if (!asoc && info.pr_assoc_id > SCTP_ALL_ASSOC && asoc 4098 net/sctp/socket.c if (asoc) { asoc 4099 net/sctp/socket.c SCTP_PR_SET_POLICY(asoc->default_flags, info.pr_policy); asoc 4100 net/sctp/socket.c asoc->default_timetolive = info.pr_value; asoc 4115 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) { asoc 4116 net/sctp/socket.c SCTP_PR_SET_POLICY(asoc->default_flags, info.pr_policy); asoc 4117 net/sctp/socket.c asoc->default_timetolive = info.pr_value; asoc 4130 net/sctp/socket.c struct sctp_association *asoc; asoc 4141 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4142 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 4160 net/sctp/socket.c struct sctp_association *asoc; asoc 4174 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4175 net/sctp/socket.c if (!asoc && params.assoc_id > SCTP_ALL_ASSOC && asoc 4181 net/sctp/socket.c if (asoc) { asoc 4182 net/sctp/socket.c asoc->strreset_enable = params.assoc_value; asoc 4195 net/sctp/socket.c list_for_each_entry(asoc, &ep->asocs, asocs) asoc 4196 net/sctp/socket.c asoc->strreset_enable = params.assoc_value; asoc 4207 net/sctp/socket.c struct sctp_association *asoc; asoc 4224 net/sctp/socket.c asoc = sctp_id2assoc(sk, params->srs_assoc_id); asoc 4225 net/sctp/socket.c if (!asoc) asoc 4228 net/sctp/socket.c retval = sctp_send_reset_streams(asoc, params); asoc 4239 net/sctp/socket.c struct sctp_association *asoc; asoc 4251 net/sctp/socket.c asoc = sctp_id2assoc(sk, associd); asoc 4252 net/sctp/socket.c if (!asoc) asoc 4255 net/sctp/socket.c retval = sctp_send_reset_assoc(asoc); asoc 4265 net/sctp/socket.c struct sctp_association *asoc; asoc 4277 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.sas_assoc_id); asoc 4278 net/sctp/socket.c if (!asoc) asoc 4281 net/sctp/socket.c retval = sctp_send_add_streams(asoc, ¶ms); asoc 4292 net/sctp/socket.c struct sctp_association *asoc; asoc 4306 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4307 net/sctp/socket.c if (!asoc && params.assoc_id > SCTP_ALL_ASSOC && asoc 4311 net/sctp/socket.c if (asoc) asoc 4312 net/sctp/socket.c return sctp_sched_set_sched(asoc, params.assoc_value); asoc 4323 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) { asoc 4324 net/sctp/socket.c int ret = sctp_sched_set_sched(asoc, asoc 4340 net/sctp/socket.c struct sctp_association *asoc; asoc 4352 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4353 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_CURRENT_ASSOC && asoc 4357 net/sctp/socket.c if (asoc) { asoc 4358 net/sctp/socket.c retval = sctp_sched_set_value(asoc, params.stream_id, asoc 4365 net/sctp/socket.c list_for_each_entry(asoc, &sctp_sk(sk)->ep->asocs, asocs) { asoc 4366 net/sctp/socket.c int ret = sctp_sched_set_value(asoc, params.stream_id, asoc 4382 net/sctp/socket.c struct sctp_association *asoc; asoc 4394 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4395 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 4435 net/sctp/socket.c struct sctp_association *asoc) asoc 4439 net/sctp/socket.c sctp_ulpevent_type_set(&asoc->subscribe, param->se_type, param->se_on); asoc 4442 net/sctp/socket.c if (sctp_outq_is_empty(&asoc->outqueue)) { asoc 4443 net/sctp/socket.c event = sctp_ulpevent_make_sender_dry_event(asoc, asoc 4448 net/sctp/socket.c asoc->stream.si->enqueue_event(&asoc->ulpq, event); asoc 4459 net/sctp/socket.c struct sctp_association *asoc; asoc 4474 net/sctp/socket.c asoc = sctp_id2assoc(sk, param.se_assoc_id); asoc 4475 net/sctp/socket.c if (!asoc && param.se_assoc_id > SCTP_ALL_ASSOC && asoc 4479 net/sctp/socket.c if (asoc) asoc 4480 net/sctp/socket.c return sctp_assoc_ulpevent_type_set(¶m, asoc); asoc 4492 net/sctp/socket.c list_for_each_entry(asoc, &sp->ep->asocs, asocs) { asoc 4493 net/sctp/socket.c int ret = sctp_assoc_ulpevent_type_set(¶m, asoc); asoc 4508 net/sctp/socket.c struct sctp_association *asoc; asoc 4520 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4521 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 4544 net/sctp/socket.c struct sctp_association *asoc; asoc 4556 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4557 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 4584 net/sctp/socket.c struct sctp_association *asoc; asoc 4595 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 4596 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 4892 net/sctp/socket.c struct sctp_association *asoc; asoc 4920 net/sctp/socket.c asoc = list_entry(ep->asocs.next, struct sctp_association, asocs); asoc 4922 net/sctp/socket.c newsk = sp->pf->create_accept_sk(sk, asoc, kern); asoc 4931 net/sctp/socket.c error = sctp_sock_migrate(sk, newsk, asoc, SCTP_SOCKET_TCP); asoc 5201 net/sctp/socket.c struct sctp_association *asoc; asoc 5204 net/sctp/socket.c asoc = list_entry(ep->asocs.next, asoc 5206 net/sctp/socket.c sctp_primitive_SHUTDOWN(net, asoc, NULL); asoc 5210 net/sctp/socket.c int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc, asoc 5218 net/sctp/socket.c if (!asoc) { asoc 5233 net/sctp/socket.c info->sctpi_tag = asoc->c.my_vtag; asoc 5234 net/sctp/socket.c info->sctpi_state = asoc->state; asoc 5235 net/sctp/socket.c info->sctpi_rwnd = asoc->a_rwnd; asoc 5236 net/sctp/socket.c info->sctpi_unackdata = asoc->unack_data; asoc 5237 net/sctp/socket.c info->sctpi_penddata = sctp_tsnmap_pending(&asoc->peer.tsn_map); asoc 5238 net/sctp/socket.c info->sctpi_instrms = asoc->stream.incnt; asoc 5239 net/sctp/socket.c info->sctpi_outstrms = asoc->stream.outcnt; asoc 5240 net/sctp/socket.c list_for_each(pos, &asoc->base.inqueue.in_chunk_list) asoc 5242 net/sctp/socket.c list_for_each(pos, &asoc->outqueue.out_chunk_list) asoc 5244 net/sctp/socket.c info->sctpi_overall_error = asoc->overall_error_count; asoc 5245 net/sctp/socket.c info->sctpi_max_burst = asoc->max_burst; asoc 5246 net/sctp/socket.c info->sctpi_maxseg = asoc->frag_point; asoc 5247 net/sctp/socket.c info->sctpi_peer_rwnd = asoc->peer.rwnd; asoc 5248 net/sctp/socket.c info->sctpi_peer_tag = asoc->c.peer_vtag; asoc 5250 net/sctp/socket.c mask = asoc->peer.ecn_capable << 1; asoc 5251 net/sctp/socket.c mask = (mask | asoc->peer.ipv4_address) << 1; asoc 5252 net/sctp/socket.c mask = (mask | asoc->peer.ipv6_address) << 1; asoc 5253 net/sctp/socket.c mask = (mask | asoc->peer.hostname_address) << 1; asoc 5254 net/sctp/socket.c mask = (mask | asoc->peer.asconf_capable) << 1; asoc 5255 net/sctp/socket.c mask = (mask | asoc->peer.prsctp_capable) << 1; asoc 5256 net/sctp/socket.c mask = (mask | asoc->peer.auth_capable); asoc 5258 net/sctp/socket.c mask = asoc->peer.sack_needed << 1; asoc 5259 net/sctp/socket.c mask = (mask | asoc->peer.sack_generation) << 1; asoc 5260 net/sctp/socket.c mask = (mask | asoc->peer.zero_window_announced); asoc 5263 net/sctp/socket.c info->sctpi_isacks = asoc->stats.isacks; asoc 5264 net/sctp/socket.c info->sctpi_osacks = asoc->stats.osacks; asoc 5265 net/sctp/socket.c info->sctpi_opackets = asoc->stats.opackets; asoc 5266 net/sctp/socket.c info->sctpi_ipackets = asoc->stats.ipackets; asoc 5267 net/sctp/socket.c info->sctpi_rtxchunks = asoc->stats.rtxchunks; asoc 5268 net/sctp/socket.c info->sctpi_outofseqtsns = asoc->stats.outofseqtsns; asoc 5269 net/sctp/socket.c info->sctpi_idupchunks = asoc->stats.idupchunks; asoc 5270 net/sctp/socket.c info->sctpi_gapcnt = asoc->stats.gapcnt; asoc 5271 net/sctp/socket.c info->sctpi_ouodchunks = asoc->stats.ouodchunks; asoc 5272 net/sctp/socket.c info->sctpi_iuodchunks = asoc->stats.iuodchunks; asoc 5273 net/sctp/socket.c info->sctpi_oodchunks = asoc->stats.oodchunks; asoc 5274 net/sctp/socket.c info->sctpi_iodchunks = asoc->stats.iodchunks; asoc 5275 net/sctp/socket.c info->sctpi_octrlchunks = asoc->stats.octrlchunks; asoc 5276 net/sctp/socket.c info->sctpi_ictrlchunks = asoc->stats.ictrlchunks; asoc 5278 net/sctp/socket.c prim = asoc->peer.primary_path; asoc 5326 net/sctp/socket.c if (net_eq(sock_net(t->asoc->base.sk), net) && asoc 5327 net/sctp/socket.c t->asoc->peer.primary_path == t) asoc 5443 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 5460 net/sctp/socket.c asoc = sctp_id2assoc(sk, associd); asoc 5461 net/sctp/socket.c if (!asoc) { asoc 5466 net/sctp/socket.c transport = asoc->peer.primary_path; asoc 5468 net/sctp/socket.c status.sstat_assoc_id = sctp_assoc2id(asoc); asoc 5469 net/sctp/socket.c status.sstat_state = sctp_assoc_to_state(asoc); asoc 5470 net/sctp/socket.c status.sstat_rwnd = asoc->peer.rwnd; asoc 5471 net/sctp/socket.c status.sstat_unackdata = asoc->unack_data; asoc 5473 net/sctp/socket.c status.sstat_penddata = sctp_tsnmap_pending(&asoc->peer.tsn_map); asoc 5474 net/sctp/socket.c status.sstat_instrms = asoc->stream.incnt; asoc 5475 net/sctp/socket.c status.sstat_outstrms = asoc->stream.outcnt; asoc 5476 net/sctp/socket.c status.sstat_fragmentation_point = asoc->frag_point; asoc 5477 net/sctp/socket.c status.sstat_primary.spinfo_assoc_id = sctp_assoc2id(transport->asoc); asoc 5542 net/sctp/socket.c pinfo.spinfo_assoc_id = sctp_assoc2id(transport->asoc); asoc 5648 net/sctp/socket.c struct sctp_association *asoc = sctp_id2assoc(sk, id); asoc 5657 net/sctp/socket.c if (!asoc) asoc 5671 net/sctp/socket.c sctp_copy_sock(sock->sk, sk, asoc); asoc 5677 net/sctp/socket.c sp->pf->to_sk_daddr(&asoc->peer.primary_addr, sk); asoc 5683 net/sctp/socket.c err = sctp_sock_migrate(sk, sock->sk, asoc, asoc 5937 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 5968 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.spp_assoc_id); asoc 5969 net/sctp/socket.c if (!asoc && params.spp_assoc_id != SCTP_FUTURE_ASSOC && asoc 5993 net/sctp/socket.c } else if (asoc) { asoc 5995 net/sctp/socket.c params.spp_hbinterval = jiffies_to_msecs(asoc->hbinterval); asoc 5996 net/sctp/socket.c params.spp_pathmtu = asoc->pathmtu; asoc 5997 net/sctp/socket.c params.spp_pathmaxrxt = asoc->pathmaxrxt; asoc 5998 net/sctp/socket.c params.spp_sackdelay = jiffies_to_msecs(asoc->sackdelay); asoc 6001 net/sctp/socket.c params.spp_flags = asoc->param_flags; asoc 6002 net/sctp/socket.c if (asoc->flowlabel & SCTP_FLOWLABEL_SET_MASK) { asoc 6003 net/sctp/socket.c params.spp_ipv6_flowlabel = asoc->flowlabel & asoc 6007 net/sctp/socket.c if (asoc->dscp & SCTP_DSCP_SET_MASK) { asoc 6008 net/sctp/socket.c params.spp_dscp = asoc->dscp & SCTP_DSCP_VAL_MASK; asoc 6080 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 6103 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.sack_assoc_id); asoc 6104 net/sctp/socket.c if (!asoc && params.sack_assoc_id != SCTP_FUTURE_ASSOC && asoc 6108 net/sctp/socket.c if (asoc) { asoc 6110 net/sctp/socket.c if (asoc->param_flags & SPP_SACKDELAY_ENABLE) { asoc 6111 net/sctp/socket.c params.sack_delay = jiffies_to_msecs(asoc->sackdelay); asoc 6112 net/sctp/socket.c params.sack_freq = asoc->sackfreq; asoc 6165 net/sctp/socket.c struct sctp_association *asoc; asoc 6183 net/sctp/socket.c asoc = sctp_id2assoc(sk, getaddrs.assoc_id); asoc 6184 net/sctp/socket.c if (!asoc) asoc 6190 net/sctp/socket.c list_for_each_entry(from, &asoc->peer.transport_addr_list, asoc 6262 net/sctp/socket.c struct sctp_association *asoc; asoc 6291 net/sctp/socket.c asoc = sctp_id2assoc(sk, getaddrs.assoc_id); asoc 6292 net/sctp/socket.c if (!asoc) asoc 6294 net/sctp/socket.c bp = &asoc->base.bind_addr; asoc 6370 net/sctp/socket.c struct sctp_association *asoc; asoc 6381 net/sctp/socket.c asoc = sctp_id2assoc(sk, prim.ssp_assoc_id); asoc 6382 net/sctp/socket.c if (!asoc) asoc 6385 net/sctp/socket.c if (!asoc->peer.primary_path) asoc 6388 net/sctp/socket.c memcpy(&prim.ssp_addr, &asoc->peer.primary_path->ipaddr, asoc 6389 net/sctp/socket.c asoc->peer.primary_path->af_specific->sockaddr_len); asoc 6452 net/sctp/socket.c struct sctp_association *asoc; asoc 6463 net/sctp/socket.c asoc = sctp_id2assoc(sk, info.sinfo_assoc_id); asoc 6464 net/sctp/socket.c if (!asoc && info.sinfo_assoc_id != SCTP_FUTURE_ASSOC && asoc 6468 net/sctp/socket.c if (asoc) { asoc 6469 net/sctp/socket.c info.sinfo_stream = asoc->default_stream; asoc 6470 net/sctp/socket.c info.sinfo_flags = asoc->default_flags; asoc 6471 net/sctp/socket.c info.sinfo_ppid = asoc->default_ppid; asoc 6472 net/sctp/socket.c info.sinfo_context = asoc->default_context; asoc 6473 net/sctp/socket.c info.sinfo_timetolive = asoc->default_timetolive; asoc 6498 net/sctp/socket.c struct sctp_association *asoc; asoc 6509 net/sctp/socket.c asoc = sctp_id2assoc(sk, info.snd_assoc_id); asoc 6510 net/sctp/socket.c if (!asoc && info.snd_assoc_id != SCTP_FUTURE_ASSOC && asoc 6514 net/sctp/socket.c if (asoc) { asoc 6515 net/sctp/socket.c info.snd_sid = asoc->default_stream; asoc 6516 net/sctp/socket.c info.snd_flags = asoc->default_flags; asoc 6517 net/sctp/socket.c info.snd_ppid = asoc->default_ppid; asoc 6518 net/sctp/socket.c info.snd_context = asoc->default_context; asoc 6577 net/sctp/socket.c struct sctp_association *asoc; asoc 6587 net/sctp/socket.c asoc = sctp_id2assoc(sk, rtoinfo.srto_assoc_id); asoc 6589 net/sctp/socket.c if (!asoc && rtoinfo.srto_assoc_id != SCTP_FUTURE_ASSOC && asoc 6594 net/sctp/socket.c if (asoc) { asoc 6595 net/sctp/socket.c rtoinfo.srto_initial = jiffies_to_msecs(asoc->rto_initial); asoc 6596 net/sctp/socket.c rtoinfo.srto_max = jiffies_to_msecs(asoc->rto_max); asoc 6597 net/sctp/socket.c rtoinfo.srto_min = jiffies_to_msecs(asoc->rto_min); asoc 6633 net/sctp/socket.c struct sctp_association *asoc; asoc 6645 net/sctp/socket.c asoc = sctp_id2assoc(sk, assocparams.sasoc_assoc_id); asoc 6647 net/sctp/socket.c if (!asoc && assocparams.sasoc_assoc_id != SCTP_FUTURE_ASSOC && asoc 6652 net/sctp/socket.c if (asoc) { asoc 6653 net/sctp/socket.c assocparams.sasoc_asocmaxrxt = asoc->max_retrans; asoc 6654 net/sctp/socket.c assocparams.sasoc_peer_rwnd = asoc->peer.rwnd; asoc 6655 net/sctp/socket.c assocparams.sasoc_local_rwnd = asoc->a_rwnd; asoc 6656 net/sctp/socket.c assocparams.sasoc_cookie_life = ktime_to_ms(asoc->cookie_life); asoc 6658 net/sctp/socket.c list_for_each(pos, &asoc->peer.transport_addr_list) { asoc 6723 net/sctp/socket.c struct sctp_association *asoc; asoc 6733 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 6734 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 6738 net/sctp/socket.c params.assoc_value = asoc ? asoc->default_rcv_context asoc 6780 net/sctp/socket.c struct sctp_association *asoc; asoc 6796 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 6797 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 6801 net/sctp/socket.c if (asoc) asoc 6802 net/sctp/socket.c params.assoc_value = asoc->frag_point; asoc 6875 net/sctp/socket.c struct sctp_association *asoc; asoc 6891 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 6892 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 6896 net/sctp/socket.c params.assoc_value = asoc ? asoc->max_burst : sctp_sk(sk)->max_burst; asoc 6951 net/sctp/socket.c struct sctp_association *asoc; asoc 6960 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.scact_assoc_id); asoc 6961 net/sctp/socket.c if (!asoc && val.scact_assoc_id && sctp_style(sk, UDP)) asoc 6964 net/sctp/socket.c if (asoc) { asoc 6965 net/sctp/socket.c if (!asoc->peer.auth_capable) asoc 6967 net/sctp/socket.c val.scact_keynumber = asoc->active_key_id; asoc 6987 net/sctp/socket.c struct sctp_association *asoc; asoc 6999 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.gauth_assoc_id); asoc 7000 net/sctp/socket.c if (!asoc) asoc 7003 net/sctp/socket.c if (!asoc->peer.auth_capable) asoc 7006 net/sctp/socket.c ch = asoc->peer.peer_chunks; asoc 7032 net/sctp/socket.c struct sctp_association *asoc; asoc 7044 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.gauth_assoc_id); asoc 7045 net/sctp/socket.c if (!asoc && val.gauth_assoc_id != SCTP_FUTURE_ASSOC && asoc 7049 net/sctp/socket.c if (asoc) { asoc 7050 net/sctp/socket.c if (!asoc->peer.auth_capable) asoc 7052 net/sctp/socket.c ch = (struct sctp_chunks_param *)asoc->c.auth_chunks; asoc 7086 net/sctp/socket.c struct sctp_association *asoc; asoc 7097 net/sctp/socket.c list_for_each_entry(asoc, &(sp->ep->asocs), asocs) { asoc 7142 net/sctp/socket.c struct sctp_association *asoc; asoc 7152 net/sctp/socket.c list_for_each_entry(asoc, &(sp->ep->asocs), asocs) { asoc 7167 net/sctp/socket.c list_for_each_entry(asoc, &(sp->ep->asocs), asocs) { asoc 7168 net/sctp/socket.c ids->gaids_assoc_id[num++] = asoc->assoc_id; asoc 7194 net/sctp/socket.c struct sctp_association *asoc; asoc 7214 net/sctp/socket.c asoc = sctp_id2assoc(sk, val.spt_assoc_id); asoc 7215 net/sctp/socket.c if (!asoc && val.spt_assoc_id != SCTP_FUTURE_ASSOC && asoc 7219 net/sctp/socket.c if (asoc) { asoc 7220 net/sctp/socket.c val.spt_pathpfthld = asoc->pf_retrans; asoc 7221 net/sctp/socket.c val.spt_pathmaxrxt = asoc->pathmaxrxt; asoc 7247 net/sctp/socket.c struct sctp_association *asoc = NULL; asoc 7259 net/sctp/socket.c asoc = sctp_id2assoc(sk, sas.sas_assoc_id); asoc 7260 net/sctp/socket.c if (!asoc) asoc 7263 net/sctp/socket.c sas.sas_rtxchunks = asoc->stats.rtxchunks; asoc 7264 net/sctp/socket.c sas.sas_gapcnt = asoc->stats.gapcnt; asoc 7265 net/sctp/socket.c sas.sas_outofseqtsns = asoc->stats.outofseqtsns; asoc 7266 net/sctp/socket.c sas.sas_osacks = asoc->stats.osacks; asoc 7267 net/sctp/socket.c sas.sas_isacks = asoc->stats.isacks; asoc 7268 net/sctp/socket.c sas.sas_octrlchunks = asoc->stats.octrlchunks; asoc 7269 net/sctp/socket.c sas.sas_ictrlchunks = asoc->stats.ictrlchunks; asoc 7270 net/sctp/socket.c sas.sas_oodchunks = asoc->stats.oodchunks; asoc 7271 net/sctp/socket.c sas.sas_iodchunks = asoc->stats.iodchunks; asoc 7272 net/sctp/socket.c sas.sas_ouodchunks = asoc->stats.ouodchunks; asoc 7273 net/sctp/socket.c sas.sas_iuodchunks = asoc->stats.iuodchunks; asoc 7274 net/sctp/socket.c sas.sas_idupchunks = asoc->stats.idupchunks; asoc 7275 net/sctp/socket.c sas.sas_opackets = asoc->stats.opackets; asoc 7276 net/sctp/socket.c sas.sas_ipackets = asoc->stats.ipackets; asoc 7282 net/sctp/socket.c sas.sas_maxrto = asoc->stats.max_obs_rto; asoc 7283 net/sctp/socket.c memcpy(&sas.sas_obs_rto_ipaddr, &asoc->stats.obs_rto_ipaddr, asoc 7287 net/sctp/socket.c asoc->stats.max_obs_rto = asoc->rto_min; asoc 7345 net/sctp/socket.c struct sctp_association *asoc; asoc 7357 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7358 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7364 net/sctp/socket.c params.assoc_value = asoc ? asoc->peer.prsctp_capable asoc 7384 net/sctp/socket.c struct sctp_association *asoc; asoc 7396 net/sctp/socket.c asoc = sctp_id2assoc(sk, info.pr_assoc_id); asoc 7397 net/sctp/socket.c if (!asoc && info.pr_assoc_id != SCTP_FUTURE_ASSOC && asoc 7403 net/sctp/socket.c if (asoc) { asoc 7404 net/sctp/socket.c info.pr_policy = SCTP_PR_POLICY(asoc->default_flags); asoc 7405 net/sctp/socket.c info.pr_value = asoc->default_timetolive; asoc 7430 net/sctp/socket.c struct sctp_association *asoc; asoc 7448 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.sprstat_assoc_id); asoc 7449 net/sctp/socket.c if (!asoc) asoc 7457 net/sctp/socket.c asoc->abandoned_unsent[policy]; asoc 7459 net/sctp/socket.c asoc->abandoned_sent[policy]; asoc 7463 net/sctp/socket.c asoc->abandoned_unsent[__SCTP_PR_INDEX(policy)]; asoc 7465 net/sctp/socket.c asoc->abandoned_sent[__SCTP_PR_INDEX(policy)]; asoc 7489 net/sctp/socket.c struct sctp_association *asoc; asoc 7508 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.sprstat_assoc_id); asoc 7509 net/sctp/socket.c if (!asoc || params.sprstat_sid >= asoc->stream.outcnt) asoc 7512 net/sctp/socket.c streamoute = SCTP_SO(&asoc->stream, params.sprstat_sid)->ext; asoc 7553 net/sctp/socket.c struct sctp_association *asoc; asoc 7565 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7566 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7572 net/sctp/socket.c params.assoc_value = asoc ? asoc->peer.reconf_capable asoc 7592 net/sctp/socket.c struct sctp_association *asoc; asoc 7604 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7605 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7611 net/sctp/socket.c params.assoc_value = asoc ? asoc->strreset_enable asoc 7631 net/sctp/socket.c struct sctp_association *asoc; asoc 7643 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7644 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7650 net/sctp/socket.c params.assoc_value = asoc ? sctp_sched_get_sched(asoc) asoc 7670 net/sctp/socket.c struct sctp_association *asoc; asoc 7682 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7683 net/sctp/socket.c if (!asoc) { asoc 7688 net/sctp/socket.c retval = sctp_sched_get_value(asoc, params.stream_id, asoc 7712 net/sctp/socket.c struct sctp_association *asoc; asoc 7724 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7725 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7731 net/sctp/socket.c params.assoc_value = asoc ? asoc->peer.intl_capable asoc 7769 net/sctp/socket.c struct sctp_association *asoc; asoc 7784 net/sctp/socket.c asoc = sctp_id2assoc(sk, param.se_assoc_id); asoc 7785 net/sctp/socket.c if (!asoc && param.se_assoc_id != SCTP_FUTURE_ASSOC && asoc 7789 net/sctp/socket.c subscribe = asoc ? asoc->subscribe : sctp_sk(sk)->subscribe; asoc 7806 net/sctp/socket.c struct sctp_association *asoc; asoc 7818 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7819 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7825 net/sctp/socket.c params.assoc_value = asoc ? asoc->peer.asconf_capable asoc 7845 net/sctp/socket.c struct sctp_association *asoc; asoc 7857 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7858 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7864 net/sctp/socket.c params.assoc_value = asoc ? asoc->peer.auth_capable asoc 7884 net/sctp/socket.c struct sctp_association *asoc; asoc 7896 net/sctp/socket.c asoc = sctp_id2assoc(sk, params.assoc_id); asoc 7897 net/sctp/socket.c if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC && asoc 7903 net/sctp/socket.c params.assoc_value = asoc ? asoc->peer.ecn_capable asoc 8907 net/sctp/socket.c static void __sctp_write_space(struct sctp_association *asoc) asoc 8909 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 8911 net/sctp/socket.c if (sctp_wspace(asoc) <= 0) asoc 8914 net/sctp/socket.c if (waitqueue_active(&asoc->wait)) asoc 8915 net/sctp/socket.c wake_up_interruptible(&asoc->wait); asoc 8938 net/sctp/socket.c struct sctp_association *asoc) asoc 8940 net/sctp/socket.c struct sctp_association *tmp = asoc; asoc 8945 net/sctp/socket.c if (asoc->ep->sndbuf_policy) asoc 8946 net/sctp/socket.c return __sctp_write_space(asoc); asoc 8951 net/sctp/socket.c if (asoc->base.dead) asoc 8972 net/sctp/socket.c if (tmp == asoc) asoc 8984 net/sctp/socket.c struct sctp_association *asoc = chunk->asoc; asoc 8985 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 8989 net/sctp/socket.c asoc->sndbuf_used -= skb->truesize + sizeof(struct sctp_chunk); asoc 9004 net/sctp/socket.c ev = sctp_ulpevent_make_authkey(asoc, shkey->key_id, asoc 9008 net/sctp/socket.c asoc->stream.si->enqueue_event(&asoc->ulpq, ev); asoc 9014 net/sctp/socket.c sctp_wake_up_waiters(sk, asoc); asoc 9016 net/sctp/socket.c sctp_association_put(asoc); asoc 9039 net/sctp/socket.c static int sctp_wait_for_sndbuf(struct sctp_association *asoc, long *timeo_p, asoc 9042 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 9047 net/sctp/socket.c pr_debug("%s: asoc:%p, timeo:%ld, msg_len:%zu\n", __func__, asoc, asoc 9051 net/sctp/socket.c sctp_association_hold(asoc); asoc 9055 net/sctp/socket.c prepare_to_wait_exclusive(&asoc->wait, &wait, asoc 9057 net/sctp/socket.c if (asoc->base.dead) asoc 9061 net/sctp/socket.c if (sk->sk_err || asoc->state >= SCTP_STATE_SHUTDOWN_PENDING) asoc 9067 net/sctp/socket.c if ((int)msg_len <= sctp_wspace(asoc) && asoc 9077 net/sctp/socket.c if (sk != asoc->base.sk) asoc 9084 net/sctp/socket.c finish_wait(&asoc->wait, &wait); asoc 9087 net/sctp/socket.c sctp_association_put(asoc); asoc 9124 net/sctp/socket.c struct sctp_association *asoc; asoc 9127 net/sctp/socket.c list_for_each_entry(asoc, &((sctp_sk(sk))->ep->asocs), asocs) { asoc 9128 net/sctp/socket.c __sctp_write_space(asoc); asoc 9151 net/sctp/socket.c static int sctp_wait_for_connect(struct sctp_association *asoc, long *timeo_p) asoc 9153 net/sctp/socket.c struct sock *sk = asoc->base.sk; asoc 9158 net/sctp/socket.c pr_debug("%s: asoc:%p, timeo:%ld\n", __func__, asoc, *timeo_p); asoc 9161 net/sctp/socket.c sctp_association_hold(asoc); asoc 9164 net/sctp/socket.c prepare_to_wait_exclusive(&asoc->wait, &wait, asoc 9170 net/sctp/socket.c if (sk->sk_err || asoc->state >= SCTP_STATE_SHUTDOWN_PENDING || asoc 9171 net/sctp/socket.c asoc->base.dead) asoc 9176 net/sctp/socket.c if (sctp_state(asoc, ESTABLISHED)) asoc 9190 net/sctp/socket.c finish_wait(&asoc->wait, &wait); asoc 9193 net/sctp/socket.c sctp_association_put(asoc); asoc 9198 net/sctp/socket.c if (asoc->init_err_counter + 1 > asoc->max_init_attempts) asoc 9286 net/sctp/socket.c struct sctp_association *asoc) asoc 9322 net/sctp/socket.c newinet->inet_dport = htons(asoc->peer.port); asoc 9417 net/sctp/socket.c if (event->asoc == assoc) { asoc 9446 net/sctp/socket.c if (event->asoc == assoc) { asoc 32 net/sctp/stream.c struct sctp_association *asoc; asoc 37 net/sctp/stream.c asoc = container_of(stream, struct sctp_association, stream); asoc 38 net/sctp/stream.c outq = &asoc->outqueue; asoc 53 net/sctp/stream.c if (asoc->peer.prsctp_capable && asoc 55 net/sctp/stream.c asoc->sent_cnt_removable--; asoc 222 net/sctp/stream.c static int sctp_send_reconf(struct sctp_association *asoc, asoc 225 net/sctp/stream.c struct net *net = sock_net(asoc->base.sk); asoc 228 net/sctp/stream.c retval = sctp_primitive_RECONF(net, asoc, chunk); asoc 238 net/sctp/stream.c struct sctp_association *asoc; asoc 241 net/sctp/stream.c asoc = container_of(stream, struct sctp_association, stream); asoc 242 net/sctp/stream.c if (!asoc->outqueue.out_qlen) asoc 259 net/sctp/stream.c int sctp_send_reset_streams(struct sctp_association *asoc, asoc 262 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 269 net/sctp/stream.c if (!asoc->peer.reconf_capable || asoc 270 net/sctp/stream.c !(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ)) { asoc 275 net/sctp/stream.c if (asoc->strreset_outstanding) { asoc 328 net/sctp/stream.c chunk = sctp_make_strreset_req(asoc, str_nums, nstr_list, out, in); asoc 347 net/sctp/stream.c asoc->strreset_chunk = chunk; asoc 348 net/sctp/stream.c sctp_chunk_hold(asoc->strreset_chunk); asoc 350 net/sctp/stream.c retval = sctp_send_reconf(asoc, chunk); asoc 352 net/sctp/stream.c sctp_chunk_put(asoc->strreset_chunk); asoc 353 net/sctp/stream.c asoc->strreset_chunk = NULL; asoc 368 net/sctp/stream.c asoc->strreset_outstanding = out + in; asoc 374 net/sctp/stream.c int sctp_send_reset_assoc(struct sctp_association *asoc) asoc 376 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 381 net/sctp/stream.c if (!asoc->peer.reconf_capable || asoc 382 net/sctp/stream.c !(asoc->strreset_enable & SCTP_ENABLE_RESET_ASSOC_REQ)) asoc 385 net/sctp/stream.c if (asoc->strreset_outstanding) asoc 388 net/sctp/stream.c if (!sctp_outq_is_empty(&asoc->outqueue)) asoc 391 net/sctp/stream.c chunk = sctp_make_strreset_tsnreq(asoc); asoc 399 net/sctp/stream.c asoc->strreset_chunk = chunk; asoc 400 net/sctp/stream.c sctp_chunk_hold(asoc->strreset_chunk); asoc 402 net/sctp/stream.c retval = sctp_send_reconf(asoc, chunk); asoc 404 net/sctp/stream.c sctp_chunk_put(asoc->strreset_chunk); asoc 405 net/sctp/stream.c asoc->strreset_chunk = NULL; asoc 413 net/sctp/stream.c asoc->strreset_outstanding = 1; asoc 418 net/sctp/stream.c int sctp_send_add_streams(struct sctp_association *asoc, asoc 421 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 427 net/sctp/stream.c if (!asoc->peer.reconf_capable || asoc 428 net/sctp/stream.c !(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ)) { asoc 433 net/sctp/stream.c if (asoc->strreset_outstanding) { asoc 454 net/sctp/stream.c chunk = sctp_make_strreset_addstrm(asoc, out, in); asoc 460 net/sctp/stream.c asoc->strreset_chunk = chunk; asoc 461 net/sctp/stream.c sctp_chunk_hold(asoc->strreset_chunk); asoc 463 net/sctp/stream.c retval = sctp_send_reconf(asoc, chunk); asoc 465 net/sctp/stream.c sctp_chunk_put(asoc->strreset_chunk); asoc 466 net/sctp/stream.c asoc->strreset_chunk = NULL; asoc 470 net/sctp/stream.c asoc->strreset_outstanding = !!out + !!in; asoc 477 net/sctp/stream.c struct sctp_association *asoc, __be32 resp_seq, asoc 480 net/sctp/stream.c struct sctp_chunk *chunk = asoc->strreset_chunk; asoc 503 net/sctp/stream.c static void sctp_update_strreset_result(struct sctp_association *asoc, asoc 506 net/sctp/stream.c asoc->strreset_result[1] = asoc->strreset_result[0]; asoc 507 net/sctp/stream.c asoc->strreset_result[0] = result; asoc 511 net/sctp/stream.c struct sctp_association *asoc, asoc 516 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 525 net/sctp/stream.c sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map)) { asoc 530 net/sctp/stream.c if (TSN_lt(asoc->strreset_inseq, request_seq) || asoc 531 net/sctp/stream.c TSN_lt(request_seq, asoc->strreset_inseq - 2)) { asoc 534 net/sctp/stream.c } else if (TSN_lt(request_seq, asoc->strreset_inseq)) { asoc 535 net/sctp/stream.c i = asoc->strreset_inseq - request_seq - 1; asoc 536 net/sctp/stream.c result = asoc->strreset_result[i]; asoc 539 net/sctp/stream.c asoc->strreset_inseq++; asoc 545 net/sctp/stream.c if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ)) asoc 557 net/sctp/stream.c if (asoc->strreset_chunk) { asoc 559 net/sctp/stream.c asoc, outreq->response_seq, asoc 566 net/sctp/stream.c asoc->strreset_outstanding--; asoc 567 net/sctp/stream.c asoc->strreset_outseq++; asoc 569 net/sctp/stream.c if (!asoc->strreset_outstanding) { asoc 572 net/sctp/stream.c t = asoc->strreset_chunk->transport; asoc 576 net/sctp/stream.c sctp_chunk_put(asoc->strreset_chunk); asoc 577 net/sctp/stream.c asoc->strreset_chunk = NULL; asoc 590 net/sctp/stream.c *evp = sctp_ulpevent_make_stream_reset_event(asoc, asoc 594 net/sctp/stream.c sctp_update_strreset_result(asoc, result); asoc 596 net/sctp/stream.c return sctp_make_strreset_resp(asoc, result, request_seq); asoc 600 net/sctp/stream.c struct sctp_association *asoc, asoc 605 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 613 net/sctp/stream.c if (TSN_lt(asoc->strreset_inseq, request_seq) || asoc 614 net/sctp/stream.c TSN_lt(request_seq, asoc->strreset_inseq - 2)) { asoc 617 net/sctp/stream.c } else if (TSN_lt(request_seq, asoc->strreset_inseq)) { asoc 618 net/sctp/stream.c i = asoc->strreset_inseq - request_seq - 1; asoc 619 net/sctp/stream.c result = asoc->strreset_result[i]; asoc 624 net/sctp/stream.c asoc->strreset_inseq++; asoc 626 net/sctp/stream.c if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ)) asoc 629 net/sctp/stream.c if (asoc->strreset_outstanding) { asoc 645 net/sctp/stream.c asoc->strreset_inseq--; asoc 649 net/sctp/stream.c chunk = sctp_make_strreset_req(asoc, nums, str_p, 1, 0); asoc 661 net/sctp/stream.c asoc->strreset_chunk = chunk; asoc 662 net/sctp/stream.c asoc->strreset_outstanding = 1; asoc 663 net/sctp/stream.c sctp_chunk_hold(asoc->strreset_chunk); asoc 668 net/sctp/stream.c sctp_update_strreset_result(asoc, result); asoc 671 net/sctp/stream.c chunk = sctp_make_strreset_resp(asoc, result, request_seq); asoc 677 net/sctp/stream.c struct sctp_association *asoc, asoc 683 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 689 net/sctp/stream.c if (TSN_lt(asoc->strreset_inseq, request_seq) || asoc 690 net/sctp/stream.c TSN_lt(request_seq, asoc->strreset_inseq - 2)) { asoc 693 net/sctp/stream.c } else if (TSN_lt(request_seq, asoc->strreset_inseq)) { asoc 694 net/sctp/stream.c i = asoc->strreset_inseq - request_seq - 1; asoc 695 net/sctp/stream.c result = asoc->strreset_result[i]; asoc 697 net/sctp/stream.c next_tsn = asoc->ctsn_ack_point + 1; asoc 699 net/sctp/stream.c sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + 1; asoc 704 net/sctp/stream.c if (!sctp_outq_is_empty(&asoc->outqueue)) { asoc 709 net/sctp/stream.c asoc->strreset_inseq++; asoc 711 net/sctp/stream.c if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_ASSOC_REQ)) asoc 714 net/sctp/stream.c if (asoc->strreset_outstanding) { asoc 724 net/sctp/stream.c max_tsn_seen = sctp_tsnmap_get_max_tsn_seen(&asoc->peer.tsn_map); asoc 725 net/sctp/stream.c asoc->stream.si->report_ftsn(&asoc->ulpq, max_tsn_seen); asoc 732 net/sctp/stream.c init_tsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + (1 << 31); asoc 733 net/sctp/stream.c sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL, asoc 740 net/sctp/stream.c sctp_outq_free(&asoc->outqueue); asoc 747 net/sctp/stream.c next_tsn = asoc->next_tsn; asoc 748 net/sctp/stream.c asoc->ctsn_ack_point = next_tsn - 1; asoc 749 net/sctp/stream.c asoc->adv_peer_ack_point = asoc->ctsn_ack_point; asoc 763 net/sctp/stream.c *evp = sctp_ulpevent_make_assoc_reset_event(asoc, 0, init_tsn, asoc 767 net/sctp/stream.c sctp_update_strreset_result(asoc, result); asoc 769 net/sctp/stream.c return sctp_make_strreset_tsnresp(asoc, result, request_seq, asoc 774 net/sctp/stream.c struct sctp_association *asoc, asoc 779 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 785 net/sctp/stream.c if (TSN_lt(asoc->strreset_inseq, request_seq) || asoc 786 net/sctp/stream.c TSN_lt(request_seq, asoc->strreset_inseq - 2)) { asoc 789 net/sctp/stream.c } else if (TSN_lt(request_seq, asoc->strreset_inseq)) { asoc 790 net/sctp/stream.c i = asoc->strreset_inseq - request_seq - 1; asoc 791 net/sctp/stream.c result = asoc->strreset_result[i]; asoc 794 net/sctp/stream.c asoc->strreset_inseq++; asoc 796 net/sctp/stream.c if (!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ)) asoc 807 net/sctp/stream.c if (asoc->strreset_chunk) { asoc 809 net/sctp/stream.c asoc, 0, SCTP_PARAM_RESET_ADD_IN_STREAMS)) { asoc 815 net/sctp/stream.c asoc->strreset_outstanding--; asoc 816 net/sctp/stream.c asoc->strreset_outseq++; asoc 818 net/sctp/stream.c if (!asoc->strreset_outstanding) { asoc 821 net/sctp/stream.c t = asoc->strreset_chunk->transport; asoc 825 net/sctp/stream.c sctp_chunk_put(asoc->strreset_chunk); asoc 826 net/sctp/stream.c asoc->strreset_chunk = NULL; asoc 834 net/sctp/stream.c *evp = sctp_ulpevent_make_stream_change_event(asoc, asoc 838 net/sctp/stream.c sctp_update_strreset_result(asoc, result); asoc 840 net/sctp/stream.c return sctp_make_strreset_resp(asoc, result, request_seq); asoc 844 net/sctp/stream.c struct sctp_association *asoc, asoc 849 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 857 net/sctp/stream.c if (TSN_lt(asoc->strreset_inseq, request_seq) || asoc 858 net/sctp/stream.c TSN_lt(request_seq, asoc->strreset_inseq - 2)) { asoc 861 net/sctp/stream.c } else if (TSN_lt(request_seq, asoc->strreset_inseq)) { asoc 862 net/sctp/stream.c i = asoc->strreset_inseq - request_seq - 1; asoc 863 net/sctp/stream.c result = asoc->strreset_result[i]; asoc 868 net/sctp/stream.c asoc->strreset_inseq++; asoc 870 net/sctp/stream.c if (!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ)) asoc 873 net/sctp/stream.c if (asoc->strreset_outstanding) { asoc 887 net/sctp/stream.c chunk = sctp_make_strreset_addstrm(asoc, out, 0); asoc 891 net/sctp/stream.c asoc->strreset_chunk = chunk; asoc 892 net/sctp/stream.c asoc->strreset_outstanding = 1; asoc 893 net/sctp/stream.c sctp_chunk_hold(asoc->strreset_chunk); asoc 900 net/sctp/stream.c sctp_update_strreset_result(asoc, result); asoc 903 net/sctp/stream.c chunk = sctp_make_strreset_resp(asoc, result, request_seq); asoc 909 net/sctp/stream.c struct sctp_association *asoc, asoc 913 net/sctp/stream.c struct sctp_stream *stream = &asoc->stream; asoc 920 net/sctp/stream.c req = sctp_chunk_lookup_strreset_param(asoc, resp->response_seq, 0); asoc 966 net/sctp/stream.c *evp = sctp_ulpevent_make_stream_reset_event(asoc, flags, asoc 983 net/sctp/stream.c *evp = sctp_ulpevent_make_stream_reset_event(asoc, flags, asoc 999 net/sctp/stream.c &asoc->peer.tsn_map); asoc 1002 net/sctp/stream.c asoc->stream.si->report_ftsn(&asoc->ulpq, mtsn); asoc 1004 net/sctp/stream.c sctp_tsnmap_init(&asoc->peer.tsn_map, asoc 1012 net/sctp/stream.c list_splice_init(&asoc->outqueue.out_chunk_list, &temp); asoc 1013 net/sctp/stream.c sctp_outq_free(&asoc->outqueue); asoc 1014 net/sctp/stream.c list_splice_init(&temp, &asoc->outqueue.out_chunk_list); asoc 1016 net/sctp/stream.c asoc->next_tsn = rtsn; asoc 1017 net/sctp/stream.c asoc->ctsn_ack_point = asoc->next_tsn - 1; asoc 1018 net/sctp/stream.c asoc->adv_peer_ack_point = asoc->ctsn_ack_point; asoc 1031 net/sctp/stream.c *evp = sctp_ulpevent_make_assoc_reset_event(asoc, flags, asoc 1047 net/sctp/stream.c *evp = sctp_ulpevent_make_stream_change_event(asoc, flags, asoc 1061 net/sctp/stream.c *evp = sctp_ulpevent_make_stream_change_event(asoc, flags, asoc 1065 net/sctp/stream.c asoc->strreset_outstanding--; asoc 1066 net/sctp/stream.c asoc->strreset_outseq++; asoc 1069 net/sctp/stream.c if (!asoc->strreset_outstanding) { asoc 1070 net/sctp/stream.c t = asoc->strreset_chunk->transport; asoc 1074 net/sctp/stream.c sctp_chunk_put(asoc->strreset_chunk); asoc 1075 net/sctp/stream.c asoc->strreset_chunk = NULL; asoc 25 net/sctp/stream_interleave.c const struct sctp_association *asoc, asoc 38 net/sctp/stream_interleave.c retval = sctp_make_idata(asoc, flags, sizeof(dp) + len, gfp); asoc 59 net/sctp/stream_interleave.c stream = &chunk->asoc->stream; asoc 98 net/sctp/stream_interleave.c stream = &chunk->asoc->stream; asoc 117 net/sctp/stream_interleave.c stream = &chunk->asoc->stream; asoc 192 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); asoc 244 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 262 net/sctp/stream_interleave.c struct sctp_association *asoc = ulpq->asoc; asoc 273 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); asoc 327 net/sctp/stream_interleave.c pd_point = sctp_sk(asoc->base.sk)->pd_point; asoc 329 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(asoc->base.sk), asoc 340 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(asoc->base.sk), asoc 363 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); asoc 427 net/sctp/stream_interleave.c stream = &ulpq->asoc->stream; asoc 456 net/sctp/stream_interleave.c stream = &ulpq->asoc->stream; asoc 474 net/sctp/stream_interleave.c struct sock *sk = ulpq->asoc->base.sk; asoc 492 net/sctp/stream_interleave.c if (!sctp_ulpevent_is_enabled(event, ulpq->asoc->subscribe)) asoc 578 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); asoc 633 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 651 net/sctp/stream_interleave.c struct sctp_association *asoc = ulpq->asoc; asoc 662 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); asoc 717 net/sctp/stream_interleave.c pd_point = sctp_sk(asoc->base.sk)->pd_point; asoc 719 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(asoc->base.sk), asoc 730 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(asoc->base.sk), asoc 753 net/sctp/stream_interleave.c sin = sctp_stream_in(&ulpq->asoc->stream, event->stream); asoc 777 net/sctp/stream_interleave.c csin = sctp_stream_in(&ulpq->asoc->stream, cevent->stream); asoc 817 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 835 net/sctp/stream_interleave.c event = sctp_ulpevent_make_rcvmsg(chunk->asoc, chunk, gfp); asoc 883 net/sctp/stream_interleave.c csin = sctp_stream_in(&ulpq->asoc->stream, cevent->stream); asoc 924 net/sctp/stream_interleave.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 966 net/sctp/stream_interleave.c struct sctp_association *asoc = ulpq->asoc; asoc 973 net/sctp/stream_interleave.c if (skb_queue_empty(&asoc->base.sk->sk_receive_queue)) { asoc 986 net/sctp/stream_interleave.c sk_mem_reclaim(asoc->base.sk); asoc 992 net/sctp/stream_interleave.c struct sock *sk = ulpq->asoc->base.sk; asoc 995 net/sctp/stream_interleave.c if (!sctp_ulpevent_type_enabled(ulpq->asoc->subscribe, asoc 999 net/sctp/stream_interleave.c ev = sctp_ulpevent_make_pdapi(ulpq->asoc, SCTP_PARTIAL_DELIVERY_ABORTED, asoc 1015 net/sctp/stream_interleave.c struct sctp_stream *stream = &ulpq->asoc->stream; asoc 1066 net/sctp/stream_interleave.c struct sctp_stream *stream = &ulpq->asoc->stream; asoc 1112 net/sctp/stream_interleave.c struct sctp_association *asoc = q->asoc; asoc 1119 net/sctp/stream_interleave.c if (!asoc->peer.prsctp_capable) asoc 1122 net/sctp/stream_interleave.c if (TSN_lt(asoc->adv_peer_ack_point, ctsn)) asoc 1123 net/sctp/stream_interleave.c asoc->adv_peer_ack_point = ctsn; asoc 1132 net/sctp/stream_interleave.c } else if (TSN_lte(tsn, asoc->adv_peer_ack_point + 1)) { asoc 1140 net/sctp/stream_interleave.c asoc->adv_peer_ack_point = tsn; asoc 1156 net/sctp/stream_interleave.c if (asoc->adv_peer_ack_point > ctsn) asoc 1157 net/sctp/stream_interleave.c ftsn_chunk = sctp_make_ifwdtsn(asoc, asoc->adv_peer_ack_point, asoc 1162 net/sctp/stream_interleave.c SCTP_INC_STATS(sock_net(asoc->base.sk), SCTP_MIB_OUTCTRLCHUNKS); asoc 1182 net/sctp/stream_interleave.c incnt = chunk->asoc->stream.incnt; asoc 1198 net/sctp/stream_interleave.c incnt = chunk->asoc->stream.incnt; asoc 1209 net/sctp/stream_interleave.c sctp_tsnmap_skip(&ulpq->asoc->peer.tsn_map, ftsn); asoc 1244 net/sctp/stream_interleave.c sctp_tsnmap_skip(&ulpq->asoc->peer.tsn_map, ftsn); asoc 1248 net/sctp/stream_interleave.c if (ftsn == sctp_tsnmap_get_max_tsn_seen(&ulpq->asoc->peer.tsn_map)) asoc 1264 net/sctp/stream_interleave.c struct sctp_stream_in *sin = sctp_stream_in(&ulpq->asoc->stream, sid); asoc 1265 net/sctp/stream_interleave.c struct sctp_stream *stream = &ulpq->asoc->stream; asoc 1358 net/sctp/stream_interleave.c struct sctp_association *asoc; asoc 1360 net/sctp/stream_interleave.c asoc = container_of(stream, struct sctp_association, stream); asoc 1361 net/sctp/stream_interleave.c stream->si = asoc->peer.intl_capable ? &sctp_stream_interleave_1 asoc 60 net/sctp/stream_sched.c struct sctp_stream *stream = &q->asoc->stream; asoc 129 net/sctp/stream_sched.c int sctp_sched_set_sched(struct sctp_association *asoc, asoc 133 net/sctp/stream_sched.c struct sctp_sched_ops *old = asoc->outqueue.sched; asoc 145 net/sctp/stream_sched.c old->free(&asoc->stream); asoc 148 net/sctp/stream_sched.c for (i = 0; i < asoc->stream.outcnt; i++) { asoc 149 net/sctp/stream_sched.c void *p = SCTP_SO(&asoc->stream, i)->ext; asoc 160 net/sctp/stream_sched.c asoc->outqueue.sched = n; asoc 161 net/sctp/stream_sched.c n->init(&asoc->stream); asoc 162 net/sctp/stream_sched.c for (i = 0; i < asoc->stream.outcnt; i++) { asoc 163 net/sctp/stream_sched.c if (!SCTP_SO(&asoc->stream, i)->ext) asoc 166 net/sctp/stream_sched.c ret = n->init_sid(&asoc->stream, i, GFP_KERNEL); asoc 172 net/sctp/stream_sched.c list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) { asoc 176 net/sctp/stream_sched.c n->enqueue(&asoc->outqueue, msg); asoc 182 net/sctp/stream_sched.c n->free(&asoc->stream); asoc 183 net/sctp/stream_sched.c asoc->outqueue.sched = &sctp_sched_fcfs; /* Always safe */ asoc 188 net/sctp/stream_sched.c int sctp_sched_get_sched(struct sctp_association *asoc) asoc 193 net/sctp/stream_sched.c if (asoc->outqueue.sched == sctp_sched_ops[i]) asoc 199 net/sctp/stream_sched.c int sctp_sched_set_value(struct sctp_association *asoc, __u16 sid, asoc 202 net/sctp/stream_sched.c if (sid >= asoc->stream.outcnt) asoc 205 net/sctp/stream_sched.c if (!SCTP_SO(&asoc->stream, sid)->ext) { asoc 208 net/sctp/stream_sched.c ret = sctp_stream_init_ext(&asoc->stream, sid); asoc 213 net/sctp/stream_sched.c return asoc->outqueue.sched->set(&asoc->stream, sid, value, gfp); asoc 216 net/sctp/stream_sched.c int sctp_sched_get_value(struct sctp_association *asoc, __u16 sid, asoc 219 net/sctp/stream_sched.c if (sid >= asoc->stream.outcnt) asoc 222 net/sctp/stream_sched.c if (!SCTP_SO(&asoc->stream, sid)->ext) asoc 225 net/sctp/stream_sched.c return asoc->outqueue.sched->get(&asoc->stream, sid, value); asoc 231 net/sctp/stream_sched.c !q->asoc->peer.intl_capable) { asoc 240 net/sctp/stream_sched.c sout = SCTP_SO(&q->asoc->stream, sid); asoc 241 net/sctp/stream_sched.c q->asoc->stream.out_curr = sout; asoc 245 net/sctp/stream_sched.c q->asoc->stream.out_curr = NULL; asoc 268 net/sctp/stream_sched.c struct sctp_association *asoc; asoc 270 net/sctp/stream_sched.c asoc = container_of(stream, struct sctp_association, stream); asoc 272 net/sctp/stream_sched.c return asoc->outqueue.sched; asoc 242 net/sctp/stream_sched_prio.c stream = &q->asoc->stream; asoc 248 net/sctp/stream_sched_prio.c struct sctp_stream *stream = &q->asoc->stream; asoc 285 net/sctp/stream_sched_prio.c soute = SCTP_SO(&q->asoc->stream, sid)->ext; asoc 296 net/sctp/stream_sched_prio.c struct sctp_association *asoc; asoc 300 net/sctp/stream_sched_prio.c asoc = container_of(stream, struct sctp_association, stream); asoc 301 net/sctp/stream_sched_prio.c list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) { asoc 107 net/sctp/stream_sched_rr.c stream = &q->asoc->stream; asoc 113 net/sctp/stream_sched_rr.c struct sctp_stream *stream = &q->asoc->stream; asoc 142 net/sctp/stream_sched_rr.c soute = SCTP_SO(&q->asoc->stream, sid)->ext; asoc 144 net/sctp/stream_sched_rr.c sctp_sched_rr_next_stream(&q->asoc->stream); asoc 147 net/sctp/stream_sched_rr.c sctp_sched_rr_unsched(&q->asoc->stream, soute); asoc 152 net/sctp/stream_sched_rr.c struct sctp_association *asoc; asoc 156 net/sctp/stream_sched_rr.c asoc = container_of(stream, struct sctp_association, stream); asoc 157 net/sctp/stream_sched_rr.c list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) { asoc 136 net/sctp/transport.c sctp_association_put(transport->asoc); asoc 164 net/sctp/transport.c if (transport->asoc) asoc 165 net/sctp/transport.c sctp_association_put(transport->asoc); asoc 215 net/sctp/transport.c struct sctp_association *asoc) asoc 217 net/sctp/transport.c transport->asoc = asoc; asoc 218 net/sctp/transport.c sctp_association_hold(asoc); asoc 232 net/sctp/transport.c struct sctp_association *asoc = transport->asoc; asoc 234 net/sctp/transport.c if (!transport->pathmtu && asoc && asoc->pathmtu) asoc 235 net/sctp/transport.c transport->pathmtu = asoc->pathmtu; asoc 249 net/sctp/transport.c struct sock *sk = t->asoc->base.sk; asoc 293 net/sctp/transport.c struct sctp_association *asoc = transport->asoc; asoc 309 net/sctp/transport.c if (transport->dst && asoc && asoc 310 net/sctp/transport.c (!asoc->peer.primary_path || transport == asoc->peer.active_path)) asoc 311 net/sctp/transport.c opt->pf->to_sk_saddr(&transport->saddr, asoc->base.sk); asoc 337 net/sctp/transport.c struct net *net = sock_net(tp->asoc->base.sk); asoc 373 net/sctp/transport.c if (tp->rto < tp->asoc->rto_min) asoc 374 net/sctp/transport.c tp->rto = tp->asoc->rto_min; asoc 379 net/sctp/transport.c if (tp->rto > tp->asoc->rto_max) asoc 380 net/sctp/transport.c tp->rto = tp->asoc->rto_max; asoc 382 net/sctp/transport.c sctp_max_rto(tp->asoc, tp); asoc 400 net/sctp/transport.c struct sctp_association *asoc = transport->asoc; asoc 407 net/sctp/transport.c if (asoc->fast_recovery && asoc 408 net/sctp/transport.c TSN_lte(asoc->fast_recovery_exit, sack_ctsn)) asoc 409 net/sctp/transport.c asoc->fast_recovery = 0; asoc 413 net/sctp/transport.c pmtu = transport->asoc->pathmtu; asoc 430 net/sctp/transport.c if (asoc->fast_recovery) asoc 498 net/sctp/transport.c struct sctp_association *asoc = transport->asoc; asoc 510 net/sctp/transport.c 4*asoc->pathmtu); asoc 511 net/sctp/transport.c transport->cwnd = asoc->pathmtu; asoc 514 net/sctp/transport.c asoc->fast_recovery = 0; asoc 530 net/sctp/transport.c if (asoc->fast_recovery) asoc 534 net/sctp/transport.c asoc->fast_recovery = 1; asoc 535 net/sctp/transport.c asoc->fast_recovery_exit = asoc->next_tsn - 1; asoc 538 net/sctp/transport.c 4*asoc->pathmtu); asoc 558 net/sctp/transport.c 4*asoc->pathmtu); asoc 574 net/sctp/transport.c 4*asoc->pathmtu); asoc 599 net/sctp/transport.c struct sctp_association *asoc = t->asoc; asoc 603 net/sctp/transport.c if (t->burst_limited || asoc->max_burst == 0) asoc 606 net/sctp/transport.c max_burst_bytes = t->flight_size + (asoc->max_burst * asoc->pathmtu); asoc 640 net/sctp/transport.c struct sctp_association *asoc = t->asoc; asoc 647 net/sctp/transport.c t->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380)); asoc 649 net/sctp/transport.c t->ssthresh = asoc->peer.i.a_rwnd; asoc 650 net/sctp/transport.c t->rto = asoc->rto_initial; asoc 651 net/sctp/transport.c sctp_max_rto(asoc, t); asoc 677 net/sctp/transport.c sctp_retransmit(&t->asoc->outqueue, t, SCTP_RTXR_T3_RTX); asoc 117 net/sctp/tsnmap.c trans->asoc->peer.sack_generation; asoc 32 net/sctp/ulpevent.c struct sctp_association *asoc); asoc 77 net/sctp/ulpevent.c const struct sctp_association *asoc) asoc 85 net/sctp/ulpevent.c sctp_association_hold((struct sctp_association *)asoc); asoc 87 net/sctp/ulpevent.c event->asoc = (struct sctp_association *)asoc; asoc 88 net/sctp/ulpevent.c atomic_add(event->rmem_len, &event->asoc->rmem_alloc); asoc 89 net/sctp/ulpevent.c sctp_skb_set_owner_r(skb, asoc->base.sk); asoc 91 net/sctp/ulpevent.c chunk->head_skb->sk = asoc->base.sk; asoc 97 net/sctp/ulpevent.c struct sctp_association *asoc = event->asoc; asoc 99 net/sctp/ulpevent.c atomic_sub(event->rmem_len, &asoc->rmem_alloc); asoc 100 net/sctp/ulpevent.c sctp_association_put(asoc); asoc 115 net/sctp/ulpevent.c const struct sctp_association *asoc, asoc 224 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 225 net/sctp/ulpevent.c sac->sac_assoc_id = sctp_assoc2id(asoc); asoc 242 net/sctp/ulpevent.c const struct sctp_association *asoc, asoc 315 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 316 net/sctp/ulpevent.c spc->spc_assoc_id = sctp_assoc2id(asoc); asoc 329 net/sctp/ulpevent.c sctp_get_pf_specific(asoc->base.sk->sk_family)->addr_to_user( asoc 330 net/sctp/ulpevent.c sctp_sk(asoc->base.sk), asoc 355 net/sctp/ulpevent.c sctp_ulpevent_make_remote_error(const struct sctp_association *asoc, asoc 398 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 399 net/sctp/ulpevent.c sre->sre_assoc_id = sctp_assoc2id(asoc); asoc 412 net/sctp/ulpevent.c const struct sctp_association *asoc, struct sctp_chunk *chunk, asoc 431 net/sctp/ulpevent.c skb_pull(skb, sctp_datachk_len(&asoc->stream)); asoc 432 net/sctp/ulpevent.c len -= sctp_datachk_len(&asoc->stream); asoc 506 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 507 net/sctp/ulpevent.c ssf->ssf_assoc_id = sctp_assoc2id(asoc); asoc 520 net/sctp/ulpevent.c const struct sctp_association *asoc, asoc 568 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 569 net/sctp/ulpevent.c sse->sse_assoc_id = sctp_assoc2id(asoc); asoc 583 net/sctp/ulpevent.c const struct sctp_association *asoc, gfp_t gfp) asoc 600 net/sctp/ulpevent.c sai->sai_adaptation_ind = asoc->peer.adaptation_ind; asoc 601 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 602 net/sctp/ulpevent.c sai->sai_assoc_id = sctp_assoc2id(asoc); asoc 617 net/sctp/ulpevent.c struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, asoc 623 net/sctp/ulpevent.c struct sock *sk = asoc->base.sk; asoc 632 net/sctp/ulpevent.c if (asoc->ep->rcvbuf_policy) asoc 633 net/sctp/ulpevent.c rx_count = atomic_read(&asoc->rmem_alloc); asoc 650 net/sctp/ulpevent.c if (sctp_tsnmap_mark(&asoc->peer.tsn_map, asoc 687 net/sctp/ulpevent.c sctp_ulpevent_receive_data(event, asoc); asoc 692 net/sctp/ulpevent.c event->cumtsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map); asoc 714 net/sctp/ulpevent.c const struct sctp_association *asoc, asoc 759 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 760 net/sctp/ulpevent.c pd->pdapi_assoc_id = sctp_assoc2id(asoc); asoc 768 net/sctp/ulpevent.c const struct sctp_association *asoc, __u16 key_id, asoc 794 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 795 net/sctp/ulpevent.c ak->auth_assoc_id = sctp_assoc2id(asoc); asoc 807 net/sctp/ulpevent.c const struct sctp_association *asoc, gfp_t gfp) asoc 824 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 825 net/sctp/ulpevent.c sdry->sender_dry_assoc_id = sctp_assoc2id(asoc); asoc 831 net/sctp/ulpevent.c const struct sctp_association *asoc, __u16 flags, __u16 stream_num, asoc 850 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 851 net/sctp/ulpevent.c sreset->strreset_assoc_id = sctp_assoc2id(asoc); asoc 860 net/sctp/ulpevent.c const struct sctp_association *asoc, __u16 flags, __u32 local_tsn, asoc 878 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 879 net/sctp/ulpevent.c areset->assocreset_assoc_id = sctp_assoc2id(asoc); asoc 887 net/sctp/ulpevent.c const struct sctp_association *asoc, __u16 flags, asoc 905 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 906 net/sctp/ulpevent.c schange->strchange_assoc_id = sctp_assoc2id(asoc); asoc 944 net/sctp/ulpevent.c sinfo.sinfo_assoc_id = sctp_assoc2id(event->asoc); asoc 946 net/sctp/ulpevent.c sinfo.sinfo_context = event->asoc->default_rcv_context; asoc 972 net/sctp/ulpevent.c rinfo.rcv_assoc_id = sctp_assoc2id(event->asoc); asoc 973 net/sctp/ulpevent.c rinfo.rcv_context = event->asoc->default_rcv_context; asoc 995 net/sctp/ulpevent.c nxtinfo.nxt_assoc_id = sctp_assoc2id(event->asoc); asoc 1021 net/sctp/ulpevent.c struct sctp_association *asoc) asoc 1027 net/sctp/ulpevent.c sctp_ulpevent_set_owner(event, asoc); asoc 1028 net/sctp/ulpevent.c sctp_assoc_rwnd_decrease(asoc, skb_headlen(skb)); asoc 1040 net/sctp/ulpevent.c sctp_ulpevent_receive_data(sctp_skb2event(frag), asoc); asoc 1074 net/sctp/ulpevent.c sctp_assoc_rwnd_increase(event->asoc, len); asoc 42 net/sctp/ulpqueue.c struct sctp_association *asoc) asoc 46 net/sctp/ulpqueue.c ulpq->asoc = asoc; asoc 93 net/sctp/ulpqueue.c event = sctp_ulpevent_make_rcvmsg(chunk->asoc, chunk, gfp); asoc 128 net/sctp/ulpqueue.c int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc) asoc 147 net/sctp/ulpqueue.c if (!skb_queue_empty(&sp->pd_lobby) && asoc) { asoc 153 net/sctp/ulpqueue.c if (event->asoc == asoc) { asoc 168 net/sctp/ulpqueue.c struct sctp_sock *sp = sctp_sk(ulpq->asoc->base.sk); asoc 179 net/sctp/ulpqueue.c return sctp_clear_pd(ulpq->asoc->base.sk, ulpq->asoc); asoc 184 net/sctp/ulpqueue.c struct sock *sk = ulpq->asoc->base.sk; asoc 207 net/sctp/ulpqueue.c if (!sctp_ulpevent_is_enabled(event, ulpq->asoc->subscribe)) asoc 409 net/sctp/ulpqueue.c struct sctp_association *asoc; asoc 475 net/sctp/ulpqueue.c asoc = ulpq->asoc; asoc 482 net/sctp/ulpqueue.c if (!sctp_sk(asoc->base.sk)->frag_interleave && asoc 483 net/sctp/ulpqueue.c atomic_read(&sctp_sk(asoc->base.sk)->pd_mode)) asoc 487 net/sctp/ulpqueue.c pd_point = sctp_sk(asoc->base.sk)->pd_point; asoc 489 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(asoc->base.sk), asoc 500 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 566 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 599 net/sctp/ulpqueue.c ctsnap = sctp_tsnmap_get_ctsn(&ulpq->asoc->peer.tsn_map); asoc 667 net/sctp/ulpqueue.c retval = sctp_make_reassembled_event(sock_net(ulpq->asoc->base.sk), asoc 756 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; asoc 850 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; asoc 885 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; asoc 950 net/sctp/ulpqueue.c stream = &ulpq->asoc->stream; asoc 974 net/sctp/ulpqueue.c tsnmap = &ulpq->asoc->peer.tsn_map; asoc 1030 net/sctp/ulpqueue.c struct sctp_association *asoc; asoc 1035 net/sctp/ulpqueue.c asoc = ulpq->asoc; asoc 1036 net/sctp/ulpqueue.c sp = sctp_sk(asoc->base.sk); asoc 1047 net/sctp/ulpqueue.c skb = skb_peek(&asoc->ulpq.reasm); asoc 1050 net/sctp/ulpqueue.c if (!TSN_lte(ctsn, sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map))) asoc 1079 net/sctp/ulpqueue.c struct sctp_association *asoc = ulpq->asoc; asoc 1086 net/sctp/ulpqueue.c if (skb_queue_empty(&asoc->base.sk->sk_receive_queue)) { asoc 1092 net/sctp/ulpqueue.c if (sk_rmem_schedule(asoc->base.sk, chunk->skb, needed) && asoc 1105 net/sctp/ulpqueue.c sk_mem_reclaim(asoc->base.sk); asoc 1122 net/sctp/ulpqueue.c sk = ulpq->asoc->base.sk; asoc 1124 net/sctp/ulpqueue.c if (sctp_ulpevent_type_enabled(ulpq->asoc->subscribe, asoc 1126 net/sctp/ulpqueue.c ev = sctp_ulpevent_make_pdapi(ulpq->asoc,