/net/sctp/ |
D | associola.c | 58 static void sctp_select_active_and_retran_path(struct sctp_association *asoc); 60 static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc); 61 static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc); 66 static struct sctp_association *sctp_association_init(struct sctp_association *asoc, in sctp_association_init() argument 82 asoc->ep = (struct sctp_endpoint *)ep; in sctp_association_init() 83 asoc->base.sk = (struct sock *)sk; in sctp_association_init() 85 sctp_endpoint_hold(asoc->ep); in sctp_association_init() 86 sock_hold(asoc->base.sk); in sctp_association_init() 89 asoc->base.type = SCTP_EP_TYPE_ASSOCIATION; in sctp_association_init() 92 atomic_set(&asoc->base.refcnt, 1); in sctp_association_init() [all …]
|
D | sm_sideeffect.c | 58 struct sctp_association *asoc, 66 struct sctp_association *asoc, 79 static void sctp_do_ecn_ce_work(struct sctp_association *asoc, in sctp_do_ecn_ce_work() argument 84 asoc->last_ecne_tsn = lowest_tsn; in sctp_do_ecn_ce_work() 85 asoc->need_ecne = 1; in sctp_do_ecn_ce_work() 100 static struct sctp_chunk *sctp_do_ecn_ecne_work(struct sctp_association *asoc, in sctp_do_ecn_ecne_work() argument 116 if (TSN_lt(asoc->last_cwr_tsn, lowest_tsn)) { in sctp_do_ecn_ecne_work() 122 transport = sctp_assoc_lookup_tsn(asoc, lowest_tsn); in sctp_do_ecn_ecne_work() 128 asoc->last_cwr_tsn = lowest_tsn; in sctp_do_ecn_ecne_work() 134 repl = sctp_make_cwr(asoc, asoc->last_cwr_tsn, chunk); in sctp_do_ecn_ecne_work() [all …]
|
D | sm_statefuns.c | 64 const struct sctp_association *asoc, 68 static int sctp_eat_data(const struct sctp_association *asoc, 72 const struct sctp_association *asoc, 76 const struct sctp_association *asoc, 82 const struct sctp_association *asoc, 88 const struct sctp_association *asoc, 94 const struct sctp_association *asoc, 103 const struct sctp_association *asoc, 109 const struct sctp_association *asoc, 118 const struct sctp_association *asoc, [all …]
|
D | sm_make_chunk.c | 64 static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc, 66 static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc, 68 static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc, 71 const struct sctp_association *asoc, 75 static int sctp_process_param(struct sctp_association *asoc, 92 struct sctp_association *asoc = chunk->asoc; in sctp_control_set_owner_w() local 102 skb->sk = asoc ? asoc->base.sk : NULL; in sctp_control_set_owner_w() 217 struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, in sctp_make_init() argument 221 struct net *net = sock_net(asoc->base.sk); in sctp_make_init() 222 struct sctp_endpoint *ep = asoc->ep; in sctp_make_init() [all …]
|
D | socket.c | 85 static int sctp_wait_for_sndbuf(struct sctp_association *asoc, long *timeo_p, 98 static int sctp_send_asconf(struct sctp_association *asoc, 121 static inline int sctp_wspace(struct sctp_association *asoc) in sctp_wspace() argument 125 if (asoc->ep->sndbuf_policy) in sctp_wspace() 126 amt = asoc->sndbuf_used; in sctp_wspace() 128 amt = sk_wmem_alloc_get(asoc->base.sk); in sctp_wspace() 130 if (amt >= asoc->base.sk->sk_sndbuf) { in sctp_wspace() 131 if (asoc->base.sk->sk_userlocks & SOCK_SNDBUF_LOCK) in sctp_wspace() 134 amt = sk_stream_wspace(asoc->base.sk); in sctp_wspace() 139 amt = asoc->base.sk->sk_sndbuf - amt; in sctp_wspace() [all …]
|
D | input.c | 110 struct sctp_association *asoc; in sctp_rcv() local 174 asoc = __sctp_rcv_lookup(net, skb, &src, &dest, &transport); in sctp_rcv() 176 if (!asoc) in sctp_rcv() 180 rcvr = asoc ? &asoc->base : &ep->base; in sctp_rcv() 188 if (asoc) { in sctp_rcv() 189 sctp_association_put(asoc); in sctp_rcv() 190 asoc = NULL; in sctp_rcv() 209 if (!asoc) { in sctp_rcv() 224 chunk = sctp_chunkify(skb, asoc, sk); in sctp_rcv() 276 if (asoc) in sctp_rcv() [all …]
|
D | transport.c | 151 sctp_association_put(transport->asoc); in sctp_transport_free() 179 if (transport->asoc) in sctp_transport_destroy() 180 sctp_association_put(transport->asoc); in sctp_transport_destroy() 214 struct sctp_association *asoc) in sctp_transport_set_owner() argument 216 transport->asoc = asoc; in sctp_transport_set_owner() 217 sctp_association_hold(asoc); in sctp_transport_set_owner() 271 struct sctp_association *asoc = transport->asoc; in sctp_transport_route() local 290 if (asoc && (!asoc->peer.primary_path || in sctp_transport_route() 291 (transport == asoc->peer.active_path))) in sctp_transport_route() 293 asoc->base.sk); in sctp_transport_route() [all …]
|
D | auth.c | 225 const struct sctp_association *asoc, in sctp_auth_make_local_vector() argument 229 (sctp_random_param_t *)asoc->c.auth_random, in sctp_auth_make_local_vector() 230 (sctp_chunks_param_t *)asoc->c.auth_chunks, in sctp_auth_make_local_vector() 231 (sctp_hmac_algo_param_t *)asoc->c.auth_hmacs, in sctp_auth_make_local_vector() 237 const struct sctp_association *asoc, in sctp_auth_make_peer_vector() argument 240 return sctp_auth_make_key_vector(asoc->peer.peer_random, in sctp_auth_make_peer_vector() 241 asoc->peer.peer_chunks, in sctp_auth_make_peer_vector() 242 asoc->peer.peer_hmacs, in sctp_auth_make_peer_vector() 291 const struct sctp_association *asoc, in sctp_auth_asoc_create_secret() argument 315 local_key_vector = sctp_auth_make_local_vector(asoc, gfp); in sctp_auth_asoc_create_secret() [all …]
|
D | ulpevent.c | 47 struct sctp_association *asoc); 92 const struct sctp_association *asoc) in sctp_ulpevent_set_owner() argument 99 sctp_association_hold((struct sctp_association *)asoc); in sctp_ulpevent_set_owner() 101 event->asoc = (struct sctp_association *)asoc; in sctp_ulpevent_set_owner() 102 atomic_add(event->rmem_len, &event->asoc->rmem_alloc); in sctp_ulpevent_set_owner() 103 sctp_skb_set_owner_r(skb, asoc->base.sk); in sctp_ulpevent_set_owner() 109 struct sctp_association *asoc = event->asoc; in sctp_ulpevent_release_owner() local 111 atomic_sub(event->rmem_len, &asoc->rmem_alloc); in sctp_ulpevent_release_owner() 112 sctp_association_put(asoc); in sctp_ulpevent_release_owner() 127 const struct sctp_association *asoc, in sctp_ulpevent_make_assoc_change() argument [all …]
|
D | output.c | 94 chunk = sctp_get_ecne_prepend(packet->transport->asoc); in sctp_packet_config() 111 struct sctp_association *asoc = transport->asoc; in sctp_packet_init() local 120 if (asoc) { in sctp_packet_init() 121 struct sctp_sock *sp = sctp_sk(asoc->base.sk); in sctp_packet_init() 192 struct sctp_association *asoc = pkt->transport->asoc; in sctp_packet_bundle_auth() local 197 if (!asoc) in sctp_packet_bundle_auth() 212 auth = sctp_make_auth(asoc); in sctp_packet_bundle_auth() 235 struct sctp_association *asoc; in sctp_packet_bundle_sack() local 237 asoc = pkt->transport->asoc; in sctp_packet_bundle_sack() 238 timer = &asoc->timers[SCTP_EVENT_TIMEOUT_SACK]; in sctp_packet_bundle_sack() [all …]
|
D | outqueue.c | 200 void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q) in sctp_outq_init() argument 204 q->asoc = asoc; in sctp_outq_init() 221 list_for_each_entry(transport, &q->asoc->peer.transport_addr_list, in __sctp_outq_teardown() 277 sctp_outq_init(q->asoc, q); in sctp_outq_teardown() 290 struct net *net = sock_net(q->asoc->base.sk); in sctp_outq_tail() 311 switch (q->asoc->state) { in sctp_outq_tail() 402 q->asoc->peer.rwnd += sctp_data_size(chunk); in sctp_retransmit_mark() 422 q->asoc->peer.rwnd += sctp_data_size(chunk); in sctp_retransmit_mark() 467 struct net *net = sock_net(q->asoc->base.sk); in sctp_retransmit() 477 if (transport == transport->asoc->peer.retran_path) in sctp_retransmit() [all …]
|
D | chunk.c | 93 struct sctp_association *asoc = NULL; in sctp_datamsg_destroy() local 105 asoc = chunk->asoc; in sctp_datamsg_destroy() 109 error = asoc->outqueue.error; in sctp_datamsg_destroy() 111 sp = sctp_sk(asoc->base.sk); in sctp_datamsg_destroy() 124 ev = sctp_ulpevent_make_send_failed(asoc, chunk, sent, in sctp_datamsg_destroy() 127 sctp_ulpq_tail_event(&asoc->ulpq, ev); in sctp_datamsg_destroy() 165 struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, in sctp_datamsg_from_user() argument 197 max_data = (asoc->pathmtu - in sctp_datamsg_from_user() 198 sctp_sk(asoc->base.sk)->pf->af->net_header_len - in sctp_datamsg_from_user() 201 max = asoc->frag_point; in sctp_datamsg_from_user() [all …]
|
D | endpointola.c | 207 struct sctp_association *asoc) in sctp_endpoint_add_asoc() argument 215 if (asoc->temp) in sctp_endpoint_add_asoc() 219 list_add_tail(&asoc->asocs, &ep->asocs); in sctp_endpoint_add_asoc() 325 struct sctp_association *asoc = NULL; in __sctp_endpoint_lookup_assoc() local 354 asoc = tmp; in __sctp_endpoint_lookup_assoc() 361 return asoc; in __sctp_endpoint_lookup_assoc() 370 struct sctp_association *asoc; in sctp_endpoint_lookup_assoc() local 373 asoc = __sctp_endpoint_lookup_assoc(ep, paddr, transport); in sctp_endpoint_lookup_assoc() 376 return asoc; in sctp_endpoint_lookup_assoc() 409 struct sctp_association *asoc; in sctp_endpoint_bh_rcv() local [all …]
|
D | ulpqueue.c | 57 struct sctp_association *asoc) in sctp_ulpq_init() argument 61 ulpq->asoc = asoc; in sctp_ulpq_init() 103 event = sctp_ulpevent_make_rcvmsg(chunk->asoc, chunk, gfp); in sctp_ulpq_tail_data() 134 int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc) in sctp_clear_pd() argument 155 if (!skb_queue_empty(&sp->pd_lobby) && asoc) { in sctp_clear_pd() 161 if (event->asoc == asoc) { in sctp_clear_pd() 176 struct sctp_sock *sp = sctp_sk(ulpq->asoc->base.sk); in sctp_ulpq_set_pd() 187 return sctp_clear_pd(ulpq->asoc->base.sk, ulpq->asoc); in sctp_ulpq_clear_pd() 195 struct sock *sk = ulpq->asoc->base.sk; in sctp_ulpq_tail_event() 416 struct sctp_association *asoc; in sctp_ulpq_retrieve_reassembled() local [all …]
|
D | primitive.c | 53 int sctp_primitive_ ## name(struct net *net, struct sctp_association *asoc, \ 62 state = asoc ? asoc->state : SCTP_STATE_CLOSED; \ 63 ep = asoc ? asoc->ep : NULL; \ 65 error = sctp_do_sm(net, event_type, subtype, state, ep, asoc, \
|
D | probe.c | 132 const struct sctp_association *asoc, in jsctp_sf_eat_sack() argument 143 sp = asoc->peer.primary_path; in jsctp_sf_eat_sack() 146 asoc->peer.port == port || in jsctp_sf_eat_sack() 158 printl("%p %5d %5d %5d %8d %5d ", asoc, in jsctp_sf_eat_sack() 159 ep->base.bind_addr.port, asoc->peer.port, in jsctp_sf_eat_sack() 160 asoc->pathmtu, asoc->peer.rwnd, asoc->unack_data); in jsctp_sf_eat_sack() 162 list_for_each_entry(sp, &asoc->peer.transport_addr_list, in jsctp_sf_eat_sack() 164 if (sp == asoc->peer.primary_path) in jsctp_sf_eat_sack()
|
D | ipv6.c | 146 struct sctp_association *asoc; in sctp_v6_err() local 160 sk = sctp_err_lookup(net, AF_INET6, skb, sctp_hdr(skb), &asoc, &transport); in sctp_v6_err() 176 sctp_icmp_frag_needed(sk, asoc, transport, ntohl(info)); in sctp_v6_err() 180 sctp_icmp_proto_unreachable(sk, asoc, transport); in sctp_v6_err() 201 sctp_err_finish(sk, asoc); in sctp_v6_err() 236 struct sctp_association *asoc = t->asoc; in sctp_v6_get_dst() local 257 if (asoc) in sctp_v6_get_dst() 258 fl6->fl6_sport = htons(asoc->base.bind_addr.port); in sctp_v6_get_dst() 272 if (!asoc || saddr) in sctp_v6_get_dst() 275 bp = &asoc->base.bind_addr; in sctp_v6_get_dst() [all …]
|
D | protocol.c | 424 struct sctp_association *asoc = t->asoc; in sctp_v4_get_dst() local 437 if (asoc) { in sctp_v4_get_dst() 438 fl4->flowi4_tos = RT_CONN_FLAGS(asoc->base.sk); in sctp_v4_get_dst() 439 fl4->flowi4_oif = asoc->base.sk->sk_bound_dev_if; in sctp_v4_get_dst() 440 fl4->fl4_sport = htons(asoc->base.bind_addr.port); in sctp_v4_get_dst() 457 if (!asoc || saddr) in sctp_v4_get_dst() 460 bp = &asoc->base.bind_addr; in sctp_v4_get_dst() 471 !asoc->src_out_of_asoc_ok)) in sctp_v4_get_dst() 496 asoc->base.sk->sk_bound_dev_if, in sctp_v4_get_dst() 497 RT_CONN_FLAGS(asoc->base.sk), in sctp_v4_get_dst() [all …]
|
D | proc.c | 123 struct sctp_association *asoc; in sctp_seq_dump_local_addrs() local 130 asoc = sctp_assoc(epb); in sctp_seq_dump_local_addrs() 132 peer = asoc->peer.primary_path; in sctp_seq_dump_local_addrs() 134 WARN(1, "Association %p with NULL primary path!\n", asoc); in sctp_seq_dump_local_addrs() 470 seq_printf(seq, "%d ", tsp->asoc->assoc_id); in sctp_remaddr_seq_show()
|
D | inqueue.c | 93 if (chunk->asoc) in sctp_inq_push() 94 chunk->asoc->stats.ipackets++; in sctp_inq_push()
|
D | tsnmap.c | 132 trans->asoc->peer.sack_generation; in sctp_tsnmap_mark()
|