include/linux/lsm_hook_defs.h
370
LSM_HOOK(int, 0, sctp_assoc_request, struct sctp_association *asoc,
include/linux/lsm_hook_defs.h
374
LSM_HOOK(void, LSM_RET_VOID, sctp_sk_clone, struct sctp_association *asoc,
include/linux/lsm_hook_defs.h
376
LSM_HOOK(int, 0, sctp_assoc_established, struct sctp_association *asoc,
include/linux/sctp.h
738
struct sctp_association *asoc;
include/linux/security.h
1688
int security_sctp_assoc_request(struct sctp_association *asoc, struct sk_buff *skb);
include/linux/security.h
1691
void security_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk,
include/linux/security.h
1693
int security_sctp_assoc_established(struct sctp_association *asoc,
include/linux/security.h
1904
static inline int security_sctp_assoc_request(struct sctp_association *asoc,
include/linux/security.h
1917
static inline void security_sctp_sk_clone(struct sctp_association *asoc,
include/linux/security.h
1923
static inline int security_sctp_assoc_established(struct sctp_association *asoc,
include/net/sctp/auth.h
101
struct sctp_association *asoc, __u16 key_id);
include/net/sctp/auth.h
103
struct sctp_association *asoc, __u16 key_id);
include/net/sctp/auth.h
68
int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp);
include/net/sctp/auth.h
70
const struct sctp_association *asoc,
include/net/sctp/auth.h
73
struct sctp_association *asoc,
include/net/sctp/auth.h
77
sctp_auth_asoc_get_hmac(const struct sctp_association *asoc);
include/net/sctp/auth.h
78
void sctp_auth_asoc_set_default_hmac(struct sctp_association *asoc,
include/net/sctp/auth.h
80
int sctp_auth_asoc_verify_hmac_id(const struct sctp_association *asoc,
include/net/sctp/auth.h
83
const struct sctp_association *asoc);
include/net/sctp/auth.h
85
const struct sctp_association *asoc);
include/net/sctp/auth.h
86
void sctp_auth_calculate_hmac(const struct sctp_association *asoc,
include/net/sctp/auth.h
96
int sctp_auth_set_key(struct sctp_endpoint *ep, struct sctp_association *asoc,
include/net/sctp/auth.h
99
struct sctp_association *asoc, __u16 key_id);
include/net/sctp/command.h
117
struct sctp_association *asoc;
include/net/sctp/command.h
158
SCTP_ARG_CONSTRUCTOR(ASOC, struct sctp_association *, asoc)
include/net/sctp/sctp.h
115
int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
include/net/sctp/sctp.h
127
int sctp_primitive_RECONF(struct net *net, struct sctp_association *asoc,
include/net/sctp/sctp.h
148
struct sctp_association *asoc,
include/net/sctp/sctp.h
182
int sctp_send_reset_streams(struct sctp_association *asoc,
include/net/sctp/sctp.h
184
int sctp_send_reset_assoc(struct sctp_association *asoc);
include/net/sctp/sctp.h
185
int sctp_send_add_streams(struct sctp_association *asoc,
include/net/sctp/sctp.h
255
static inline void sctp_max_rto(struct sctp_association *asoc,
include/net/sctp/sctp.h
258
if (asoc->stats.max_obs_rto < (__u64)trans->rto) {
include/net/sctp/sctp.h
259
asoc->stats.max_obs_rto = trans->rto;
include/net/sctp/sctp.h
260
memset(&asoc->stats.obs_rto_ipaddr, 0,
include/net/sctp/sctp.h
262
memcpy(&asoc->stats.obs_rto_ipaddr, &trans->ipaddr,
include/net/sctp/sctp.h
345
static inline sctp_assoc_t sctp_assoc2id(const struct sctp_association *asoc)
include/net/sctp/sctp.h
347
return asoc ? asoc->assoc_id : 0;
include/net/sctp/sctp.h
351
sctp_assoc_to_state(const struct sctp_association *asoc)
include/net/sctp/sctp.h
360
return asoc->state + 1;
include/net/sctp/sctp.h
516
#define sctp_state(asoc, state) __sctp_state((asoc), (SCTP_STATE_##state))
include/net/sctp/sctp.h
517
static inline int __sctp_state(const struct sctp_association *asoc,
include/net/sctp/sctp.h
520
return asoc->state == state;
include/net/sctp/sctp.h
620
return __sctp_mtu_payload(sctp_sk(t->asoc->base.sk), t, 0, 0) -
include/net/sctp/sm.h
338
size -= sctp_datachk_len(&chunk->asoc->stream);
include/net/sctp/sm.h
375
const struct sctp_association *asoc)
include/net/sctp/sm.h
383
if (ntohl(chunk->sctp_hdr->vtag) != asoc->c.my_vtag)
include/net/sctp/sm.h
419
(ntohl(chunk->sctp_hdr->vtag) == asoc->c.my_vtag)) ||
include/net/sctp/sm.h
420
(sctp_test_T_bit(chunk) && asoc->c.peer_vtag &&
include/net/sctp/sm.h
421
(ntohl(chunk->sctp_hdr->vtag) == asoc->c.peer_vtag))) {
include/net/sctp/stream_interleave.h
23
struct sctp_chunk *(*make_datafrag)(const struct sctp_association *asoc,
include/net/sctp/stream_sched.h
44
int sctp_sched_set_sched(struct sctp_association *asoc,
include/net/sctp/stream_sched.h
46
int sctp_sched_get_sched(struct sctp_association *asoc);
include/net/sctp/stream_sched.h
47
int sctp_sched_set_value(struct sctp_association *asoc, __u16 sid,
include/net/sctp/stream_sched.h
49
int sctp_sched_get_value(struct sctp_association *asoc, __u16 sid,
include/net/sctp/structs.h
1066
struct sctp_association *asoc;
include/net/sctp/structs.h
1117
void sctp_prsctp_prune(struct sctp_association *asoc,
include/net/sctp/structs.h
1358
const struct sctp_association *asoc,
include/net/sctp/structs.h
2100
struct sctp_association *asoc;
include/net/sctp/structs.h
2102
asoc = container_of(base, struct sctp_association, base);
include/net/sctp/structs.h
2103
return asoc;
include/net/sctp/structs.h
2121
int sctp_assoc_lookup_laddr(struct sctp_association *asoc,
include/net/sctp/structs.h
2127
void sctp_assoc_rm_peer(struct sctp_association *asoc,
include/net/sctp/structs.h
2129
void sctp_assoc_control_transport(struct sctp_association *asoc,
include/net/sctp/structs.h
2140
void sctp_assoc_update_frag_point(struct sctp_association *asoc);
include/net/sctp/structs.h
2141
void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu);
include/net/sctp/structs.h
2142
void sctp_assoc_sync_pmtu(struct sctp_association *asoc);
include/net/sctp/structs.h
2149
int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc,
include/net/sctp/structs.h
2155
void sctp_assoc_clean_asconf_ack_cache(const struct sctp_association *asoc);
include/net/sctp/structs.h
2157
const struct sctp_association *asoc,
include/net/sctp/structs.h
2159
void sctp_asconf_queue_teardown(struct sctp_association *asoc);
include/net/sctp/structs.h
2163
struct sctp_chunk *sctp_get_ecne_prepend(struct sctp_association *asoc);
include/net/sctp/structs.h
605
struct sctp_association *asoc;
include/net/sctp/structs.h
804
struct sctp_association *asoc;
include/net/sctp/ulpevent.h
106
const struct sctp_association *asoc,
include/net/sctp/ulpevent.h
111
const struct sctp_association *asoc,
include/net/sctp/ulpevent.h
116
const struct sctp_association *asoc, gfp_t gfp);
include/net/sctp/ulpevent.h
118
struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
include/net/sctp/ulpevent.h
123
const struct sctp_association *asoc, __u16 key_id,
include/net/sctp/ulpevent.h
127
const struct sctp_association *asoc, gfp_t gfp);
include/net/sctp/ulpevent.h
130
const struct sctp_association *asoc, __u16 flags,
include/net/sctp/ulpevent.h
134
const struct sctp_association *asoc, __u16 flags,
include/net/sctp/ulpevent.h
138
const struct sctp_association *asoc, __u16 flags,
include/net/sctp/ulpevent.h
39
struct sctp_association *asoc;
include/net/sctp/ulpevent.h
74
const struct sctp_association *asoc,
include/net/sctp/ulpevent.h
87
const struct sctp_association *asoc,
include/net/sctp/ulpevent.h
92
const struct sctp_association *asoc,
include/net/sctp/ulpevent.h
99
const struct sctp_association *asoc,
include/net/sctp/ulpqueue.h
31
struct sctp_association *asoc;
include/net/sctp/ulpqueue.h
38
void sctp_ulpq_init(struct sctp_ulpq *ulpq, struct sctp_association *asoc);
include/net/sctp/ulpqueue.h
58
int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc);
include/trace/events/asoc.h
3
#define TRACE_SYSTEM asoc
include/trace/events/sctp.h
14
const struct sctp_association *asoc),
include/trace/events/sctp.h
16
TP_ARGS(sp, asoc),
include/trace/events/sctp.h
19
__field(__u64, asoc)
include/trace/events/sctp.h
31
__entry->asoc = (unsigned long)asoc;
include/trace/events/sctp.h
32
__entry->primary = (sp == asoc->peer.primary_path);
include/trace/events/sctp.h
44
__entry->asoc, __entry->primary ? "(*)" : "",
include/trace/events/sctp.h
53
const struct sctp_association *asoc,
include/trace/events/sctp.h
56
TP_ARGS(ep, asoc, chunk),
include/trace/events/sctp.h
59
__field(__u64, asoc)
include/trace/events/sctp.h
71
__entry->asoc = (unsigned long)asoc;
include/trace/events/sctp.h
74
__entry->peer_port = asoc->peer.port;
include/trace/events/sctp.h
75
__entry->pathmtu = asoc->pathmtu;
include/trace/events/sctp.h
76
__entry->rwnd = asoc->peer.rwnd;
include/trace/events/sctp.h
77
__entry->unack_data = asoc->unack_data;
include/trace/events/sctp.h
82
__entry->asoc, __entry->mark, __entry->bind_port,
net/sctp/associola.c
100
asoc->hbinterval = msecs_to_jiffies(sp->hbinterval);
net/sctp/associola.c
101
asoc->probe_interval = msecs_to_jiffies(sp->probe_interval);
net/sctp/associola.c
1015
if (sctp_auth_recv_cid(subtype.chunk, asoc) && !chunk->auth)
net/sctp/associola.c
1022
asoc->peer.last_data_from = chunk->transport;
net/sctp/associola.c
1025
asoc->stats.ictrlchunks++;
net/sctp/associola.c
1027
asoc->stats.isacks++;
net/sctp/associola.c
103
asoc->encap_port = sp->encap_port;
net/sctp/associola.c
1035
state, ep, asoc, chunk, GFP_ATOMIC);
net/sctp/associola.c
1040
if (asoc->base.dead)
net/sctp/associola.c
1050
sctp_association_put(asoc);
net/sctp/associola.c
106
asoc->pathmaxrxt = sp->pathmaxrxt;
net/sctp/associola.c
108
asoc->flowlabel = sp->flowlabel;
net/sctp/associola.c
1085
int sctp_assoc_update(struct sctp_association *asoc,
net/sctp/associola.c
109
asoc->dscp = sp->dscp;
net/sctp/associola.c
1092
asoc->c = new->c;
net/sctp/associola.c
1093
asoc->peer.rwnd = new->peer.rwnd;
net/sctp/associola.c
1094
asoc->peer.sack_needed = new->peer.sack_needed;
net/sctp/associola.c
1095
asoc->peer.auth_capable = new->peer.auth_capable;
net/sctp/associola.c
1096
asoc->peer.i = new->peer.i;
net/sctp/associola.c
1098
if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
net/sctp/associola.c
1099
asoc->peer.i.initial_tsn, GFP_ATOMIC))
net/sctp/associola.c
1103
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/associola.c
1106
sctp_assoc_rm_peer(asoc, trans);
net/sctp/associola.c
1110
if (asoc->state >= SCTP_STATE_ESTABLISHED)
net/sctp/associola.c
1119
if (asoc->state >= SCTP_STATE_ESTABLISHED) {
net/sctp/associola.c
112
asoc->sackdelay = msecs_to_jiffies(sp->sackdelay);
net/sctp/associola.c
1120
asoc->next_tsn = new->next_tsn;
net/sctp/associola.c
1121
asoc->ctsn_ack_point = new->ctsn_ack_point;
net/sctp/associola.c
1122
asoc->adv_peer_ack_point = new->adv_peer_ack_point;
net/sctp/associola.c
1127
sctp_stream_clear(&asoc->stream);
net/sctp/associola.c
113
asoc->sackfreq = sp->sackfreq;
net/sctp/associola.c
1133
sctp_ulpq_flush(&asoc->ulpq);
net/sctp/associola.c
1139
asoc->overall_error_count = 0;
net/sctp/associola.c
1145
if (!sctp_assoc_add_peer(asoc, &trans->ipaddr,
net/sctp/associola.c
1149
asoc->ctsn_ack_point = asoc->next_tsn - 1;
net/sctp/associola.c
1150
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/associola.c
1152
if (sctp_state(asoc, COOKIE_WAIT))
net/sctp/associola.c
1153
sctp_stream_update(&asoc->stream, &new->stream);
net/sctp/associola.c
1156
if (sctp_assoc_set_id(asoc, GFP_ATOMIC))
net/sctp/associola.c
1163
kfree(asoc->peer.peer_random);
net/sctp/associola.c
1164
asoc->peer.peer_random = new->peer.peer_random;
net/sctp/associola.c
1167
kfree(asoc->peer.peer_chunks);
net/sctp/associola.c
1168
asoc->peer.peer_chunks = new->peer.peer_chunks;
net/sctp/associola.c
1171
kfree(asoc->peer.peer_hmacs);
net/sctp/associola.c
1172
asoc->peer.peer_hmacs = new->peer.peer_hmacs;
net/sctp/associola.c
1175
return sctp_auth_asoc_init_active_key(asoc, GFP_ATOMIC);
net/sctp/associola.c
118
asoc->param_flags = sp->param_flags;
net/sctp/associola.c
123
asoc->max_burst = sp->max_burst;
net/sctp/associola.c
125
asoc->subscribe = sp->subscribe;
net/sctp/associola.c
1257
void sctp_assoc_update_retran_path(struct sctp_association *asoc)
net/sctp/associola.c
1259
struct sctp_transport *trans = asoc->peer.retran_path;
net/sctp/associola.c
1263
if (asoc->peer.transport_count == 1)
net/sctp/associola.c
1268
if (asoc->peer.active_path == asoc->peer.retran_path &&
net/sctp/associola.c
1269
asoc->peer.active_path->state == SCTP_ACTIVE)
net/sctp/associola.c
1276
if (&trans->transports == &asoc->peer.transport_addr_list)
net/sctp/associola.c
128
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = asoc->rto_initial;
net/sctp/associola.c
1285
if (trans == asoc->peer.retran_path)
net/sctp/associola.c
1289
asoc->peer.retran_path = trans_next;
net/sctp/associola.c
129
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc->rto_initial;
net/sctp/associola.c
1292
__func__, asoc, &asoc->peer.retran_path->ipaddr.sa);
net/sctp/associola.c
1295
static void sctp_select_active_and_retran_path(struct sctp_association *asoc)
net/sctp/associola.c
130
asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = asoc->rto_initial;
net/sctp/associola.c
1301
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/associola.c
1335
if ((asoc->peer.primary_path->state == SCTP_ACTIVE ||
net/sctp/associola.c
1336
asoc->peer.primary_path->state == SCTP_UNKNOWN) &&
net/sctp/associola.c
1337
asoc->peer.primary_path != trans_pri) {
net/sctp/associola.c
1339
trans_pri = asoc->peer.primary_path;
net/sctp/associola.c
1353
trans_pri = sctp_trans_elect_best(asoc->peer.active_path, trans_pf);
net/sctp/associola.c
1358
asoc->peer.active_path = trans_pri;
net/sctp/associola.c
1359
asoc->peer.retran_path = trans_sec;
net/sctp/associola.c
136
asoc->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]
net/sctp/associola.c
1363
sctp_assoc_choose_alter_transport(struct sctp_association *asoc,
net/sctp/associola.c
137
= 5 * asoc->rto_max;
net/sctp/associola.c
1371
return asoc->peer.active_path;
net/sctp/associola.c
1373
if (last_sent_to == asoc->peer.retran_path)
net/sctp/associola.c
1374
sctp_assoc_update_retran_path(asoc);
net/sctp/associola.c
1376
return asoc->peer.retran_path;
net/sctp/associola.c
1380
void sctp_assoc_update_frag_point(struct sctp_association *asoc)
net/sctp/associola.c
1382
int frag = sctp_mtu_payload(sctp_sk(asoc->base.sk), asoc->pathmtu,
net/sctp/associola.c
1383
sctp_datachk_len(&asoc->stream));
net/sctp/associola.c
1385
if (asoc->user_frag)
net/sctp/associola.c
1386
frag = min_t(int, frag, asoc->user_frag);
net/sctp/associola.c
1389
sctp_datachk_len(&asoc->stream));
net/sctp/associola.c
139
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc->sackdelay;
net/sctp/associola.c
1391
asoc->frag_point = SCTP_TRUNC4(frag);
net/sctp/associola.c
1394
void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu)
net/sctp/associola.c
1396
if (asoc->pathmtu != pmtu) {
net/sctp/associola.c
1397
asoc->pathmtu = pmtu;
net/sctp/associola.c
1398
sctp_assoc_update_frag_point(asoc);
net/sctp/associola.c
140
asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] =
net/sctp/associola.c
1401
pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc,
net/sctp/associola.c
1402
asoc->pathmtu, asoc->frag_point);
net/sctp/associola.c
1408
void sctp_assoc_sync_pmtu(struct sctp_association *asoc)
net/sctp/associola.c
1413
if (!asoc)
net/sctp/associola.c
1417
list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) {
net/sctp/associola.c
1427
sctp_assoc_set_pmtu(asoc, pmtu);
net/sctp/associola.c
1431
static inline bool sctp_peer_needs_update(struct sctp_association *asoc)
net/sctp/associola.c
1433
struct net *net = asoc->base.net;
net/sctp/associola.c
1435
switch (asoc->state) {
net/sctp/associola.c
1440
if ((asoc->rwnd > asoc->a_rwnd) &&
net/sctp/associola.c
1441
((asoc->rwnd - asoc->a_rwnd) >= max_t(__u32,
net/sctp/associola.c
1442
(asoc->base.sk->sk_rcvbuf >> net->sctp.rwnd_upd_shift),
net/sctp/associola.c
1443
asoc->pathmtu)))
net/sctp/associola.c
145
timer_setup(&asoc->timers[i], sctp_timer_events[i], 0);
net/sctp/associola.c
1453
void sctp_assoc_rwnd_increase(struct sctp_association *asoc, unsigned int len)
net/sctp/associola.c
1458
if (asoc->rwnd_over) {
net/sctp/associola.c
1459
if (asoc->rwnd_over >= len) {
net/sctp/associola.c
1460
asoc->rwnd_over -= len;
net/sctp/associola.c
1462
asoc->rwnd += (len - asoc->rwnd_over);
net/sctp/associola.c
1463
asoc->rwnd_over = 0;
net/sctp/associola.c
1466
asoc->rwnd += len;
net/sctp/associola.c
1474
if (asoc->rwnd_press) {
net/sctp/associola.c
1475
int change = min(asoc->pathmtu, asoc->rwnd_press);
net/sctp/associola.c
1476
asoc->rwnd += change;
net/sctp/associola.c
1477
asoc->rwnd_press -= change;
net/sctp/associola.c
1481
__func__, asoc, len, asoc->rwnd, asoc->rwnd_over,
net/sctp/associola.c
1482
asoc->a_rwnd);
net/sctp/associola.c
1489
if (sctp_peer_needs_update(asoc)) {
net/sctp/associola.c
1490
asoc->a_rwnd = asoc->rwnd;
net/sctp/associola.c
1493
"a_rwnd:%u\n", __func__, asoc, asoc->rwnd,
net/sctp/associola.c
1494
asoc->a_rwnd);
net/sctp/associola.c
1496
sack = sctp_make_sack(asoc);
net/sctp/associola.c
1500
asoc->peer.sack_needed = 0;
net/sctp/associola.c
1502
sctp_outq_tail(&asoc->outqueue, sack, GFP_ATOMIC);
net/sctp/associola.c
1505
timer = &asoc->timers[SCTP_EVENT_TIMEOUT_SACK];
net/sctp/associola.c
1507
sctp_association_put(asoc);
net/sctp/associola.c
151
asoc->c.sinit_max_instreams = sp->initmsg.sinit_max_instreams;
net/sctp/associola.c
1512
void sctp_assoc_rwnd_decrease(struct sctp_association *asoc, unsigned int len)
net/sctp/associola.c
1517
if (unlikely(!asoc->rwnd || asoc->rwnd_over))
net/sctp/associola.c
1519
"asoc->rwnd_over:%u!\n", __func__, asoc,
net/sctp/associola.c
152
asoc->c.sinit_num_ostreams = sp->initmsg.sinit_num_ostreams;
net/sctp/associola.c
1520
asoc->rwnd, asoc->rwnd_over);
net/sctp/associola.c
1522
if (asoc->ep->rcvbuf_policy)
net/sctp/associola.c
1523
rx_count = atomic_read(&asoc->rmem_alloc);
net/sctp/associola.c
1525
rx_count = atomic_read(&asoc->base.sk->sk_rmem_alloc);
net/sctp/associola.c
153
asoc->max_init_attempts = sp->initmsg.sinit_max_attempts;
net/sctp/associola.c
1532
if (rx_count >= asoc->base.sk->sk_rcvbuf)
net/sctp/associola.c
1535
if (asoc->rwnd >= len) {
net/sctp/associola.c
1536
asoc->rwnd -= len;
net/sctp/associola.c
1538
asoc->rwnd_press += asoc->rwnd;
net/sctp/associola.c
1539
asoc->rwnd = 0;
net/sctp/associola.c
1542
asoc->rwnd_over += len - asoc->rwnd;
net/sctp/associola.c
1543
asoc->rwnd = 0;
net/sctp/associola.c
1547
__func__, asoc, len, asoc->rwnd, asoc->rwnd_over,
net/sctp/associola.c
1548
asoc->rwnd_press);
net/sctp/associola.c
155
asoc->max_init_timeo =
net/sctp/associola.c
1554
int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc,
net/sctp/associola.c
1557
struct sock *sk = asoc->base.sk;
net/sctp/associola.c
1566
if (asoc->peer.ipv4_address)
net/sctp/associola.c
1568
if (asoc->peer.ipv6_address)
net/sctp/associola.c
1571
return sctp_bind_addr_copy(asoc->base.net,
net/sctp/associola.c
1572
&asoc->base.bind_addr,
net/sctp/associola.c
1573
&asoc->ep->base.bind_addr,
net/sctp/associola.c
1578
int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc,
net/sctp/associola.c
1587
return sctp_raw_to_bind_addrs(&asoc->base.bind_addr, raw, var_size3,
net/sctp/associola.c
1588
asoc->ep->base.bind_addr.port, gfp);
net/sctp/associola.c
1592
int sctp_assoc_lookup_laddr(struct sctp_association *asoc,
net/sctp/associola.c
1597
if ((asoc->base.bind_addr.port == ntohs(laddr->v4.sin_port)) &&
net/sctp/associola.c
1598
sctp_bind_addr_match(&asoc->base.bind_addr, laddr,
net/sctp/associola.c
1599
sctp_sk(asoc->base.sk)))
net/sctp/associola.c
1606
int sctp_assoc_set_id(struct sctp_association *asoc, gfp_t gfp)
net/sctp/associola.c
1612
if (asoc->assoc_id)
net/sctp/associola.c
1621
ret = idr_alloc_cyclic(&sctp_assocs_id, asoc, SCTP_ALL_ASSOC + 1, 0,
net/sctp/associola.c
1629
asoc->assoc_id = (sctp_assoc_t)ret;
net/sctp/associola.c
1634
static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc)
net/sctp/associola.c
1639
list_for_each_entry_safe(asconf, tmp, &asoc->addip_chunk_list, list) {
net/sctp/associola.c
164
asoc->rwnd = SCTP_DEFAULT_MINWINDOW;
net/sctp/associola.c
1646
static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc)
net/sctp/associola.c
1651
list_for_each_entry_safe(ack, tmp, &asoc->asconf_ack_list,
net/sctp/associola.c
1659
void sctp_assoc_clean_asconf_ack_cache(const struct sctp_association *asoc)
net/sctp/associola.c
166
asoc->rwnd = sk->sk_rcvbuf/2;
net/sctp/associola.c
1667
list_for_each_entry_safe(ack, tmp, &asoc->asconf_ack_list,
net/sctp/associola.c
1670
htonl(asoc->peer.addip_serial))
net/sctp/associola.c
168
asoc->a_rwnd = asoc->rwnd;
net/sctp/associola.c
1680
const struct sctp_association *asoc,
net/sctp/associola.c
1688
list_for_each_entry(ack, &asoc->asconf_ack_list, transmitted_list) {
net/sctp/associola.c
1700
void sctp_asconf_queue_teardown(struct sctp_association *asoc)
net/sctp/associola.c
1703
sctp_assoc_free_asconf_acks(asoc);
net/sctp/associola.c
1706
sctp_assoc_free_asconf_queue(asoc);
net/sctp/associola.c
1709
if (asoc->addip_last_asconf)
net/sctp/associola.c
171
asoc->peer.rwnd = SCTP_DEFAULT_MAXWINDOW;
net/sctp/associola.c
1710
sctp_chunk_free(asoc->addip_last_asconf);
net/sctp/associola.c
174
atomic_set(&asoc->rmem_alloc, 0);
net/sctp/associola.c
176
init_waitqueue_head(&asoc->wait);
net/sctp/associola.c
178
asoc->c.my_vtag = sctp_generate_tag(ep);
net/sctp/associola.c
179
asoc->c.my_port = ep->base.bind_addr.port;
net/sctp/associola.c
181
asoc->c.initial_tsn = sctp_generate_tsn(ep);
net/sctp/associola.c
183
asoc->next_tsn = asoc->c.initial_tsn;
net/sctp/associola.c
185
asoc->ctsn_ack_point = asoc->next_tsn - 1;
net/sctp/associola.c
186
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/associola.c
187
asoc->highest_sacked = asoc->ctsn_ack_point;
net/sctp/associola.c
188
asoc->last_cwr_tsn = asoc->ctsn_ack_point;
net/sctp/associola.c
200
asoc->addip_serial = asoc->c.initial_tsn;
net/sctp/associola.c
201
asoc->strreset_outseq = asoc->c.initial_tsn;
net/sctp/associola.c
203
INIT_LIST_HEAD(&asoc->addip_chunk_list);
net/sctp/associola.c
204
INIT_LIST_HEAD(&asoc->asconf_ack_list);
net/sctp/associola.c
207
INIT_LIST_HEAD(&asoc->peer.transport_addr_list);
net/sctp/associola.c
220
asoc->peer.sack_needed = 1;
net/sctp/associola.c
221
asoc->peer.sack_generation = 1;
net/sctp/associola.c
224
sctp_inq_init(&asoc->base.inqueue);
net/sctp/associola.c
225
sctp_inq_set_th_handler(&asoc->base.inqueue, sctp_assoc_bh_rcv);
net/sctp/associola.c
228
sctp_outq_init(asoc, &asoc->outqueue);
net/sctp/associola.c
230
sctp_ulpq_init(&asoc->ulpq, asoc);
net/sctp/associola.c
232
if (sctp_stream_init(&asoc->stream, asoc->c.sinit_num_ostreams, 0, gfp))
net/sctp/associola.c
236
asoc->pathmtu = sp->pathmtu;
net/sctp/associola.c
237
sctp_assoc_update_frag_point(asoc);
net/sctp/associola.c
242
asoc->peer.ipv4_address = 1;
net/sctp/associola.c
243
if (asoc->base.sk->sk_family == PF_INET6)
net/sctp/associola.c
244
asoc->peer.ipv6_address = 1;
net/sctp/associola.c
245
INIT_LIST_HEAD(&asoc->asocs);
net/sctp/associola.c
247
asoc->default_stream = sp->default_stream;
net/sctp/associola.c
248
asoc->default_ppid = sp->default_ppid;
net/sctp/associola.c
249
asoc->default_flags = sp->default_flags;
net/sctp/associola.c
250
asoc->default_context = sp->default_context;
net/sctp/associola.c
251
asoc->default_timetolive = sp->default_timetolive;
net/sctp/associola.c
252
asoc->default_rcv_context = sp->default_rcv_context;
net/sctp/associola.c
255
INIT_LIST_HEAD(&asoc->endpoint_shared_keys);
net/sctp/associola.c
256
if (sctp_auth_asoc_copy_shkeys(ep, asoc, gfp))
net/sctp/associola.c
259
asoc->active_key_id = ep->active_key_id;
net/sctp/associola.c
260
asoc->strreset_enable = ep->strreset_enable;
net/sctp/associola.c
264
memcpy(asoc->c.auth_hmacs, ep->auth_hmacs_list,
net/sctp/associola.c
267
memcpy(asoc->c.auth_chunks, ep->auth_chunk_list,
net/sctp/associola.c
271
p = (struct sctp_paramhdr *)asoc->c.auth_random;
net/sctp/associola.c
276
return asoc;
net/sctp/associola.c
279
sctp_stream_free(&asoc->stream);
net/sctp/associola.c
280
sock_put(asoc->base.sk);
net/sctp/associola.c
281
sctp_endpoint_put(asoc->ep);
net/sctp/associola.c
290
struct sctp_association *asoc;
net/sctp/associola.c
292
asoc = kzalloc_obj(*asoc, gfp);
net/sctp/associola.c
293
if (!asoc)
net/sctp/associola.c
296
if (!sctp_association_init(asoc, ep, sk, scope, gfp))
net/sctp/associola.c
301
pr_debug("Created asoc %p\n", asoc);
net/sctp/associola.c
303
return asoc;
net/sctp/associola.c
306
kfree(asoc);
net/sctp/associola.c
314
void sctp_association_free(struct sctp_association *asoc)
net/sctp/associola.c
316
struct sock *sk = asoc->base.sk;
net/sctp/associola.c
324
if (!list_empty(&asoc->asocs)) {
net/sctp/associola.c
325
list_del(&asoc->asocs);
net/sctp/associola.c
337
asoc->base.dead = true;
net/sctp/associola.c
340
sctp_outq_free(&asoc->outqueue);
net/sctp/associola.c
343
sctp_ulpq_free(&asoc->ulpq);
net/sctp/associola.c
346
sctp_inq_free(&asoc->base.inqueue);
net/sctp/associola.c
348
sctp_tsnmap_free(&asoc->peer.tsn_map);
net/sctp/associola.c
351
sctp_stream_free(&asoc->stream);
net/sctp/associola.c
353
if (asoc->strreset_chunk)
net/sctp/associola.c
354
sctp_chunk_free(asoc->strreset_chunk);
net/sctp/associola.c
357
sctp_bind_addr_free(&asoc->base.bind_addr);
net/sctp/associola.c
365
if (timer_delete(&asoc->timers[i]))
net/sctp/associola.c
366
sctp_association_put(asoc);
net/sctp/associola.c
370
kfree(asoc->peer.cookie);
net/sctp/associola.c
371
kfree(asoc->peer.peer_random);
net/sctp/associola.c
372
kfree(asoc->peer.peer_chunks);
net/sctp/associola.c
373
kfree(asoc->peer.peer_hmacs);
net/sctp/associola.c
376
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/associola.c
383
asoc->peer.transport_count = 0;
net/sctp/associola.c
385
sctp_asconf_queue_teardown(asoc);
net/sctp/associola.c
388
kfree(asoc->asconf_addr_del_pending);
net/sctp/associola.c
391
sctp_auth_destroy_keys(&asoc->endpoint_shared_keys);
net/sctp/associola.c
394
sctp_auth_key_put(asoc->asoc_shared_key);
net/sctp/associola.c
396
sctp_association_put(asoc);
net/sctp/associola.c
400
static void sctp_association_destroy(struct sctp_association *asoc)
net/sctp/associola.c
402
if (unlikely(!asoc->base.dead)) {
net/sctp/associola.c
403
WARN(1, "Attempt to destroy undead association %p!\n", asoc);
net/sctp/associola.c
407
sctp_endpoint_put(asoc->ep);
net/sctp/associola.c
408
sock_put(asoc->base.sk);
net/sctp/associola.c
410
if (asoc->assoc_id != 0) {
net/sctp/associola.c
412
idr_remove(&sctp_assocs_id, asoc->assoc_id);
net/sctp/associola.c
416
WARN_ON(atomic_read(&asoc->rmem_alloc));
net/sctp/associola.c
418
kfree_rcu(asoc, rcu);
net/sctp/associola.c
423
void sctp_assoc_set_primary(struct sctp_association *asoc,
net/sctp/associola.c
43
static void sctp_select_active_and_retran_path(struct sctp_association *asoc);
net/sctp/associola.c
431
if (asoc->peer.primary_path != NULL &&
net/sctp/associola.c
432
asoc->peer.primary_path != transport)
net/sctp/associola.c
435
asoc->peer.primary_path = transport;
net/sctp/associola.c
440
memcpy(&asoc->peer.primary_addr, &transport->ipaddr,
net/sctp/associola.c
448
asoc->peer.active_path = transport;
net/sctp/associola.c
45
static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc);
net/sctp/associola.c
46
static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc);
net/sctp/associola.c
464
if (!asoc->outqueue.outstanding_bytes && !asoc->outqueue.out_qlen)
net/sctp/associola.c
478
transport->cacc.next_tsn_at_change = asoc->next_tsn;
net/sctp/associola.c
482
void sctp_assoc_rm_peer(struct sctp_association *asoc,
net/sctp/associola.c
490
__func__, asoc, &peer->ipaddr.sa);
net/sctp/associola.c
495
if (asoc->peer.retran_path == peer)
net/sctp/associola.c
496
sctp_assoc_update_retran_path(asoc);
net/sctp/associola.c
504
pos = asoc->peer.transport_addr_list.next;
net/sctp/associola.c
508
if (asoc->peer.primary_path == peer)
net/sctp/associola.c
509
sctp_assoc_set_primary(asoc, transport);
net/sctp/associola.c
510
if (asoc->peer.active_path == peer)
net/sctp/associola.c
511
asoc->peer.active_path = transport;
net/sctp/associola.c
512
if (asoc->peer.retran_path == peer)
net/sctp/associola.c
513
asoc->peer.retran_path = transport;
net/sctp/associola.c
514
if (asoc->peer.last_data_from == peer)
net/sctp/associola.c
515
asoc->peer.last_data_from = transport;
net/sctp/associola.c
517
if (asoc->strreset_chunk &&
net/sctp/associola.c
518
asoc->strreset_chunk->transport == peer) {
net/sctp/associola.c
519
asoc->strreset_chunk->transport = transport;
net/sctp/associola.c
52
struct sctp_association *asoc,
net/sctp/associola.c
528
if (asoc->init_last_sent_to == peer)
net/sctp/associola.c
529
asoc->init_last_sent_to = NULL;
net/sctp/associola.c
536
if (asoc->shutdown_last_sent_to == peer)
net/sctp/associola.c
537
asoc->shutdown_last_sent_to = NULL;
net/sctp/associola.c
542
if (asoc->addip_last_asconf &&
net/sctp/associola.c
543
asoc->addip_last_asconf->transport == peer)
net/sctp/associola.c
544
asoc->addip_last_asconf->transport = NULL;
net/sctp/associola.c
550
struct sctp_transport *active = asoc->peer.active_path;
net/sctp/associola.c
572
list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list)
net/sctp/associola.c
576
asoc->peer.transport_count--;
net/sctp/associola.c
583
struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
net/sctp/associola.c
592
sp = sctp_sk(asoc->base.sk);
net/sctp/associola.c
598
asoc, &addr->sa, peer_state);
net/sctp/associola.c
601
if (0 == asoc->peer.port)
net/sctp/associola.c
602
asoc->peer.port = port;
net/sctp/associola.c
605
peer = sctp_assoc_lookup_paddr(asoc, addr);
net/sctp/associola.c
617
peer = sctp_transport_new(asoc->base.net, addr, gfp);
net/sctp/associola.c
621
sctp_transport_set_owner(peer, asoc);
net/sctp/associola.c
626
peer->hbinterval = asoc->hbinterval;
net/sctp/associola.c
627
peer->probe_interval = asoc->probe_interval;
net/sctp/associola.c
629
peer->encap_port = asoc->encap_port;
net/sctp/associola.c
632
peer->pathmaxrxt = asoc->pathmaxrxt;
net/sctp/associola.c
635
peer->pf_retrans = asoc->pf_retrans;
net/sctp/associola.c
637
peer->ps_retrans = asoc->ps_retrans;
net/sctp/associola.c
642
peer->sackdelay = asoc->sackdelay;
net/sctp/associola.c
643
peer->sackfreq = asoc->sackfreq;
net/sctp/associola.c
65
asoc->ep = (struct sctp_endpoint *)ep;
net/sctp/associola.c
652
peer->flowlabel = asoc->flowlabel;
net/sctp/associola.c
655
peer->dscp = asoc->dscp;
net/sctp/associola.c
66
asoc->base.sk = (struct sock *)sk;
net/sctp/associola.c
660
peer->param_flags = asoc->param_flags;
net/sctp/associola.c
67
asoc->base.net = sock_net(sk);
net/sctp/associola.c
670
sctp_assoc_set_pmtu(asoc, asoc->pathmtu ?
net/sctp/associola.c
671
min_t(int, peer->pathmtu, asoc->pathmtu) :
net/sctp/associola.c
679
sctp_packet_init(&peer->packet, peer, asoc->base.bind_addr.port,
net/sctp/associola.c
680
asoc->peer.port);
net/sctp/associola.c
69
sctp_endpoint_hold(asoc->ep);
net/sctp/associola.c
692
peer->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380));
net/sctp/associola.c
70
sock_hold(asoc->base.sk);
net/sctp/associola.c
705
peer->rto = asoc->rto_initial;
net/sctp/associola.c
706
sctp_max_rto(asoc, peer);
net/sctp/associola.c
720
list_add_tail_rcu(&peer->transports, &asoc->peer.transport_addr_list);
net/sctp/associola.c
721
asoc->peer.transport_count++;
net/sctp/associola.c
726
if (!asoc->peer.primary_path) {
net/sctp/associola.c
727
sctp_assoc_set_primary(asoc, peer);
net/sctp/associola.c
728
asoc->peer.retran_path = peer;
net/sctp/associola.c
73
asoc->base.type = SCTP_EP_TYPE_ASSOCIATION;
net/sctp/associola.c
731
if (asoc->peer.active_path == asoc->peer.retran_path &&
net/sctp/associola.c
733
asoc->peer.retran_path = peer;
net/sctp/associola.c
741
const struct sctp_association *asoc,
net/sctp/associola.c
748
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/associola.c
758
void sctp_assoc_del_nonprimary_peers(struct sctp_association *asoc,
net/sctp/associola.c
76
refcount_set(&asoc->base.refcnt, 1);
net/sctp/associola.c
764
list_for_each_entry_safe(t, temp, &asoc->peer.transport_addr_list,
net/sctp/associola.c
768
sctp_assoc_rm_peer(asoc, t);
net/sctp/associola.c
776
void sctp_assoc_control_transport(struct sctp_association *asoc,
net/sctp/associola.c
79
sctp_bind_addr_init(&asoc->base.bind_addr, ep->base.bind_addr.port);
net/sctp/associola.c
792
asoc->pf_expose != SCTP_PF_EXPOSE_ENABLE)
net/sctp/associola.c
81
asoc->state = SCTP_STATE_CLOSED;
net/sctp/associola.c
819
if (asoc->pf_expose != SCTP_PF_EXPOSE_ENABLE)
net/sctp/associola.c
82
asoc->cookie_life = ms_to_ktime(sp->assocparams.sasoc_cookie_life);
net/sctp/associola.c
83
asoc->user_frag = sp->user_frag;
net/sctp/associola.c
837
sctp_select_active_and_retran_path(asoc);
net/sctp/associola.c
841
void sctp_association_hold(struct sctp_association *asoc)
net/sctp/associola.c
843
refcount_inc(&asoc->base.refcnt);
net/sctp/associola.c
849
void sctp_association_put(struct sctp_association *asoc)
net/sctp/associola.c
851
if (refcount_dec_and_test(&asoc->base.refcnt))
net/sctp/associola.c
852
sctp_association_destroy(asoc);
net/sctp/associola.c
858
__u32 sctp_association_get_next_tsn(struct sctp_association *asoc)
net/sctp/associola.c
865
__u32 retval = asoc->next_tsn;
net/sctp/associola.c
866
asoc->next_tsn++;
net/sctp/associola.c
867
asoc->unack_data++;
net/sctp/associola.c
88
asoc->max_retrans = sp->assocparams.sasoc_asocmaxrxt;
net/sctp/associola.c
89
asoc->pf_retrans = sp->pf_retrans;
net/sctp/associola.c
891
struct sctp_chunk *sctp_get_ecne_prepend(struct sctp_association *asoc)
net/sctp/associola.c
893
if (!asoc->need_ecne)
net/sctp/associola.c
899
return sctp_make_ecne(asoc, asoc->last_ecne_tsn);
net/sctp/associola.c
90
asoc->ps_retrans = sp->ps_retrans;
net/sctp/associola.c
905
struct sctp_transport *sctp_assoc_lookup_tsn(struct sctp_association *asoc,
net/sctp/associola.c
91
asoc->pf_expose = sp->pf_expose;
net/sctp/associola.c
93
asoc->rto_initial = msecs_to_jiffies(sp->rtoinfo.srto_initial);
net/sctp/associola.c
931
active = asoc->peer.active_path;
net/sctp/associola.c
94
asoc->rto_max = msecs_to_jiffies(sp->rtoinfo.srto_max);
net/sctp/associola.c
943
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/associola.c
95
asoc->rto_min = msecs_to_jiffies(sp->rtoinfo.srto_min);
net/sctp/associola.c
963
struct sctp_association *asoc =
net/sctp/associola.c
966
struct net *net = asoc->base.net;
net/sctp/associola.c
976
ep = asoc->ep;
net/sctp/associola.c
978
inqueue = &asoc->base.inqueue;
net/sctp/associola.c
979
sctp_association_hold(asoc);
net/sctp/associola.c
981
state = asoc->state;
net/sctp/auth.c
223
const struct sctp_association *asoc,
net/sctp/auth.c
227
(struct sctp_random_param *)asoc->c.auth_random,
net/sctp/auth.c
228
(struct sctp_chunks_param *)asoc->c.auth_chunks,
net/sctp/auth.c
229
(struct sctp_hmac_algo_param *)asoc->c.auth_hmacs, gfp);
net/sctp/auth.c
234
const struct sctp_association *asoc,
net/sctp/auth.c
237
return sctp_auth_make_key_vector(asoc->peer.peer_random,
net/sctp/auth.c
238
asoc->peer.peer_chunks,
net/sctp/auth.c
239
asoc->peer.peer_hmacs,
net/sctp/auth.c
288
const struct sctp_association *asoc,
net/sctp/auth.c
312
local_key_vector = sctp_auth_make_local_vector(asoc, gfp);
net/sctp/auth.c
313
peer_key_vector = sctp_auth_make_peer_vector(asoc, gfp);
net/sctp/auth.c
355
struct sctp_association *asoc,
net/sctp/auth.c
361
BUG_ON(!list_empty(&asoc->endpoint_shared_keys));
net/sctp/auth.c
370
list_add(&new->key_list, &asoc->endpoint_shared_keys);
net/sctp/auth.c
376
sctp_auth_destroy_keys(&asoc->endpoint_shared_keys);
net/sctp/auth.c
384
int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp)
net/sctp/auth.c
393
if (!asoc->peer.auth_capable)
net/sctp/auth.c
401
ep_key = sctp_auth_get_shkey(asoc, asoc->active_key_id);
net/sctp/auth.c
404
secret = sctp_auth_asoc_create_secret(asoc, ep_key, gfp);
net/sctp/auth.c
408
sctp_auth_key_put(asoc->asoc_shared_key);
net/sctp/auth.c
409
asoc->asoc_shared_key = secret;
net/sctp/auth.c
410
asoc->shkey = ep_key;
net/sctp/auth.c
415
list_for_each_entry(chunk, &asoc->outqueue.out_chunk_list, list) {
net/sctp/auth.c
416
if (sctp_auth_send_cid(chunk->chunk_hdr->type, asoc)) {
net/sctp/auth.c
419
chunk->shkey = asoc->shkey;
net/sctp/auth.c
431
const struct sctp_association *asoc,
net/sctp/auth.c
437
key_for_each(key, &asoc->endpoint_shared_keys) {
net/sctp/auth.c
457
sctp_auth_asoc_get_hmac(const struct sctp_association *asoc)
net/sctp/auth.c
465
if (asoc->default_hmac_id)
net/sctp/auth.c
466
return &sctp_hmac_list[asoc->default_hmac_id];
net/sctp/auth.c
471
hmacs = asoc->peer.peer_hmacs;
net/sctp/auth.c
501
int sctp_auth_asoc_verify_hmac_id(const struct sctp_association *asoc,
net/sctp/auth.c
507
if (!asoc)
net/sctp/auth.c
510
hmacs = (struct sctp_hmac_algo_param *)asoc->c.auth_hmacs;
net/sctp/auth.c
523
void sctp_auth_asoc_set_default_hmac(struct sctp_association *asoc,
net/sctp/auth.c
531
if (asoc->default_hmac_id)
net/sctp/auth.c
539
asoc->default_hmac_id = id;
net/sctp/auth.c
583
int sctp_auth_send_cid(enum sctp_cid chunk, const struct sctp_association *asoc)
net/sctp/auth.c
585
if (!asoc)
net/sctp/auth.c
588
if (!asoc->peer.auth_capable)
net/sctp/auth.c
591
return __sctp_auth_cid(chunk, asoc->peer.peer_chunks);
net/sctp/auth.c
595
int sctp_auth_recv_cid(enum sctp_cid chunk, const struct sctp_association *asoc)
net/sctp/auth.c
597
if (!asoc)
net/sctp/auth.c
600
if (!asoc->peer.auth_capable)
net/sctp/auth.c
604
(struct sctp_chunks_param *)asoc->c.auth_chunks);
net/sctp/auth.c
616
void sctp_auth_calculate_hmac(const struct sctp_association *asoc,
net/sctp/auth.c
633
if (key_id == asoc->active_key_id)
net/sctp/auth.c
634
asoc_key = asoc->asoc_shared_key;
net/sctp/auth.c
637
asoc_key = sctp_auth_asoc_create_secret(asoc, ep_key, gfp);
net/sctp/auth.c
721
struct sctp_association *asoc,
net/sctp/auth.c
732
if (asoc) {
net/sctp/auth.c
733
if (!asoc->peer.auth_capable)
net/sctp/auth.c
735
sh_keys = &asoc->endpoint_shared_keys;
net/sctp/auth.c
771
if (asoc && asoc->active_key_id == auth_key->sca_keynumber &&
net/sctp/auth.c
772
sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL)) {
net/sctp/auth.c
784
struct sctp_association *asoc,
net/sctp/auth.c
792
if (asoc) {
net/sctp/auth.c
793
if (!asoc->peer.auth_capable)
net/sctp/auth.c
795
sh_keys = &asoc->endpoint_shared_keys;
net/sctp/auth.c
812
if (asoc) {
net/sctp/auth.c
813
__u16 active_key_id = asoc->active_key_id;
net/sctp/auth.c
815
asoc->active_key_id = key_id;
net/sctp/auth.c
816
if (sctp_auth_asoc_init_active_key(asoc, GFP_KERNEL)) {
net/sctp/auth.c
817
asoc->active_key_id = active_key_id;
net/sctp/auth.c
827
struct sctp_association *asoc,
net/sctp/auth.c
837
if (asoc) {
net/sctp/auth.c
838
if (!asoc->peer.auth_capable)
net/sctp/auth.c
840
if (asoc->active_key_id == key_id)
net/sctp/auth.c
843
sh_keys = &asoc->endpoint_shared_keys;
net/sctp/auth.c
871
struct sctp_association *asoc, __u16 key_id)
net/sctp/auth.c
880
if (asoc) {
net/sctp/auth.c
881
if (!asoc->peer.auth_capable)
net/sctp/auth.c
883
if (asoc->active_key_id == key_id)
net/sctp/auth.c
886
sh_keys = &asoc->endpoint_shared_keys;
net/sctp/auth.c
910
if (asoc && !list_empty(&key->key_list) &&
net/sctp/auth.c
914
ev = sctp_ulpevent_make_authkey(asoc, key->key_id,
net/sctp/auth.c
917
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/chunk.c
102
if (sctp_ulpevent_type_enabled(asoc->subscribe,
net/sctp/chunk.c
104
ev = sctp_ulpevent_make_send_failed_event(asoc, chunk,
net/sctp/chunk.c
108
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/chunk.c
146
struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc,
net/sctp/chunk.c
165
if (asoc->peer.prsctp_capable && sinfo->sinfo_timetolive &&
net/sctp/chunk.c
174
max_data = asoc->frag_point;
net/sctp/chunk.c
176
max_data = sctp_min_frag_point(sctp_sk(asoc->base.sk),
net/sctp/chunk.c
177
sctp_datachk_len(&asoc->stream));
net/sctp/chunk.c
179
__func__, asoc, max_data);
net/sctp/chunk.c
186
if (sctp_auth_send_cid(SCTP_CID_DATA, asoc)) {
net/sctp/chunk.c
188
sctp_auth_asoc_get_hmac(asoc);
net/sctp/chunk.c
195
sinfo->sinfo_ssn != asoc->active_key_id) {
net/sctp/chunk.c
196
shkey = sctp_auth_get_shkey(asoc, sinfo->sinfo_ssn);
net/sctp/chunk.c
202
shkey = asoc->shkey;
net/sctp/chunk.c
215
if (timer_pending(&asoc->timers[SCTP_EVENT_TIMEOUT_SACK]) &&
net/sctp/chunk.c
216
asoc->outqueue.out_qlen == 0 &&
net/sctp/chunk.c
217
list_empty(&asoc->outqueue.retransmit) &&
net/sctp/chunk.c
222
if (asoc->state < SCTP_STATE_COOKIE_ECHOED)
net/sctp/chunk.c
229
SCTP_INC_STATS(asoc->base.net,
net/sctp/chunk.c
263
chunk = asoc->stream.si->make_datafrag(asoc, sinfo, len, frag,
net/sctp/chunk.c
303
if (!chunk->asoc->peer.prsctp_capable)
net/sctp/chunk.c
316
SCTP_SO(&chunk->asoc->stream,
net/sctp/chunk.c
320
chunk->asoc->abandoned_sent[SCTP_PR_INDEX(TTL)]++;
net/sctp/chunk.c
323
chunk->asoc->abandoned_unsent[SCTP_PR_INDEX(TTL)]++;
net/sctp/chunk.c
331
SCTP_SO(&chunk->asoc->stream,
net/sctp/chunk.c
334
chunk->asoc->abandoned_sent[SCTP_PR_INDEX(RTX)]++;
net/sctp/chunk.c
74
struct sctp_association *asoc = NULL;
net/sctp/chunk.c
90
asoc = chunk->asoc;
net/sctp/chunk.c
91
error = msg->send_error ?: asoc->outqueue.error;
net/sctp/chunk.c
94
if (sctp_ulpevent_type_enabled(asoc->subscribe,
net/sctp/chunk.c
96
ev = sctp_ulpevent_make_send_failed(asoc, chunk, sent,
net/sctp/chunk.c
99
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/diag.c
101
struct sctp_association *asoc)
net/sctp/diag.c
109
addrlen * asoc->peer.transport_count);
net/sctp/diag.c
114
list_for_each_entry(from, &asoc->peer.transport_addr_list,
net/sctp/diag.c
126
static int inet_sctp_diag_fill(struct sock *sk, struct sctp_association *asoc,
net/sctp/diag.c
153
if (asoc) {
net/sctp/diag.c
154
inet_diag_msg_sctpasoc_fill(r, sk, asoc);
net/sctp/diag.c
167
if (asoc && asoc->ep->sndbuf_policy)
net/sctp/diag.c
168
amt = asoc->sndbuf_used;
net/sctp/diag.c
172
if (asoc && asoc->ep->rcvbuf_policy)
net/sctp/diag.c
173
amt = atomic_read(&asoc->rmem_alloc);
net/sctp/diag.c
201
infox.asoc = asoc;
net/sctp/diag.c
204
addr_list = asoc ? &asoc->base.bind_addr.address_list
net/sctp/diag.c
209
if (asoc && (ext & (1 << (INET_DIAG_CONG - 1))))
net/sctp/diag.c
213
if (asoc && inet_diag_msg_sctpaddrs_fill(skb, asoc))
net/sctp/diag.c
234
struct sctp_association *asoc)
net/sctp/diag.c
240
list_for_each_entry_rcu(laddr, &asoc->base.bind_addr.address_list,
net/sctp/diag.c
245
+ nla_total_size(addrlen * asoc->peer.transport_count)
net/sctp/diag.c
255
struct sctp_association *assoc = tsp->asoc;
net/sctp/diag.c
28
struct sctp_association *asoc)
net/sctp/diag.c
308
if (ep != tsp->asoc->ep)
net/sctp/diag.c
32
struct timer_list *t3_rtx = &asoc->peer.primary_path->T3_rtx_timer;
net/sctp/diag.c
34
laddr = list_entry(asoc->base.bind_addr.address_list.next,
net/sctp/diag.c
359
if (!list_is_first(&tsp->asoc->asocs, &ep->asocs))
net/sctp/diag.c
36
paddr = asoc->peer.primary_path->ipaddr;
net/sctp/diag.c
37
dst = asoc->peer.primary_path->dst;
net/sctp/diag.c
40
r->id.idiag_sport = htons(asoc->base.bind_addr.port);
net/sctp/diag.c
41
r->id.idiag_dport = htons(asoc->peer.port);
net/sctp/diag.c
420
if (infox->asoc) {
net/sctp/diag.c
421
r->idiag_rqueue = atomic_read(&infox->asoc->rmem_alloc);
net/sctp/diag.c
422
r->idiag_wqueue = infox->asoc->sndbuf_used;
net/sctp/diag.c
428
sctp_get_sctp_info(sk, infox->asoc, infox->sctpinfo);
net/sctp/diag.c
59
r->idiag_state = asoc->state;
net/sctp/diag.c
62
r->idiag_retrans = asoc->rtx_data_chunks;
net/sctp/endpointola.c
156
struct sctp_association *asoc)
net/sctp/endpointola.c
164
if (asoc->temp)
net/sctp/endpointola.c
168
list_add_tail(&asoc->asocs, &ep->asocs);
net/sctp/endpointola.c
276
struct sctp_association *asoc = NULL;
net/sctp/endpointola.c
293
asoc = t->asoc;
net/sctp/endpointola.c
296
return asoc;
net/sctp/endpointola.c
331
struct sctp_association *asoc;
net/sctp/endpointola.c
345
asoc = NULL;
net/sctp/endpointola.c
382
if (NULL == chunk->asoc) {
net/sctp/endpointola.c
383
asoc = sctp_endpoint_lookup_assoc(ep,
net/sctp/endpointola.c
386
chunk->asoc = asoc;
net/sctp/endpointola.c
390
state = asoc ? asoc->state : SCTP_STATE_CLOSED;
net/sctp/endpointola.c
391
if (sctp_auth_recv_cid(subtype.chunk, asoc) && !chunk->auth)
net/sctp/endpointola.c
397
if (asoc && sctp_chunk_is_data(chunk))
net/sctp/endpointola.c
398
asoc->peer.last_data_from = chunk->transport;
net/sctp/endpointola.c
401
if (asoc)
net/sctp/endpointola.c
402
asoc->stats.ictrlchunks++;
net/sctp/endpointola.c
409
ep, asoc, chunk, GFP_ATOMIC);
net/sctp/input.c
1017
bound_dev_if = READ_ONCE(t->asoc->base.sk->sk_bound_dev_if);
net/sctp/input.c
1019
sctp_bind_addr_match(&t->asoc->base.bind_addr,
net/sctp/input.c
1020
laddr, sctp_sk(t->asoc->base.sk)))
net/sctp/input.c
1045
if (ep == t->asoc->ep)
net/sctp/input.c
1060
struct sctp_association *asoc = NULL;
net/sctp/input.c
1066
asoc = t->asoc;
net/sctp/input.c
1070
return asoc;
net/sctp/input.c
1081
struct sctp_association *asoc;
net/sctp/input.c
1084
asoc = __sctp_lookup_association(net, laddr, paddr, transportp, dif, sdif);
net/sctp/input.c
1087
return asoc;
net/sctp/input.c
1129
struct sctp_association *asoc;
net/sctp/input.c
1166
asoc = __sctp_lookup_association(net, laddr, paddr, transportp, dif, sdif);
net/sctp/input.c
1167
if (asoc)
net/sctp/input.c
1168
return asoc;
net/sctp/input.c
1233
struct sctp_association *asoc = NULL;
net/sctp/input.c
1271
asoc = __sctp_rcv_asconf_lookup(
net/sctp/input.c
1280
if (asoc)
net/sctp/input.c
1287
return asoc;
net/sctp/input.c
1337
struct sctp_association *asoc;
net/sctp/input.c
1339
asoc = __sctp_lookup_association(net, laddr, paddr, transportp, dif, sdif);
net/sctp/input.c
1340
if (asoc)
net/sctp/input.c
1347
asoc = __sctp_rcv_lookup_harder(net, skb, laddr, transportp, dif, sdif);
net/sctp/input.c
1348
if (asoc)
net/sctp/input.c
1361
return asoc;
net/sctp/input.c
165
asoc = __sctp_rcv_lookup(net, skb, &src, &dest, &transport, dif, sdif);
net/sctp/input.c
167
if (!asoc)
net/sctp/input.c
171
rcvr = asoc ? &asoc->base : &ep->base;
net/sctp/input.c
182
if (!asoc) {
net/sctp/input.c
197
chunk = sctp_chunkify(skb, asoc, sk, GFP_ATOMIC);
net/sctp/input.c
372
void sctp_icmp_frag_needed(struct sock *sk, struct sctp_association *asoc,
net/sctp/input.c
382
asoc->pmtu_pending = 1;
net/sctp/input.c
402
sctp_assoc_sync_pmtu(asoc);
net/sctp/input.c
405
sctp_retransmit(&asoc->outqueue, t, SCTP_RTXR_PMTUD);
net/sctp/input.c
432
struct sctp_association *asoc,
net/sctp/input.c
454
asoc->state, asoc->ep, asoc, t,
net/sctp/input.c
470
struct sctp_association *asoc;
net/sctp/input.c
490
asoc = __sctp_lookup_association(net, &saddr, &daddr, &transport, dif, sdif);
net/sctp/input.c
491
if (!asoc)
net/sctp/input.c
494
sk = asoc->base.sk;
net/sctp/input.c
516
ntohl(chunkhdr->init_hdr.init_tag) != asoc->c.my_vtag)
net/sctp/input.c
519
} else if (vtag != asoc->c.peer_vtag) {
net/sctp/input.c
531
*app = asoc;
net/sctp/input.c
551
struct sctp_association *asoc = t->asoc;
net/sctp/input.c
552
struct sock *sk = asoc->base.sk;
net/sctp/input.c
563
sctp_icmp_frag_needed(sk, asoc, t, SCTP_TRUNC4(info));
net/sctp/input.c
567
sctp_icmp_proto_unreachable(sk, asoc, t);
net/sctp/input.c
614
struct sctp_association *asoc;
net/sctp/input.c
623
sk = sctp_err_lookup(net, AF_INET, skb, sctp_hdr(skb), &asoc, &transport);
net/sctp/input.c
641
struct sctp_association *asoc;
net/sctp/input.c
647
sk = sctp_err_lookup(net, AF_INET, skb, sctp_hdr(skb), &asoc, &t);
net/sctp/input.c
897
if (!net_eq(t->asoc->base.net, x->net))
net/sctp/input.c
899
if (x->lport != htons(t->asoc->base.bind_addr.port))
net/sctp/input.c
91
struct sctp_association *asoc;
net/sctp/input.c
912
return sctp_hashfn(t->asoc->base.net,
net/sctp/input.c
913
htons(t->asoc->base.bind_addr.port),
net/sctp/input.c
949
if (t->asoc->temp)
net/sctp/input.c
952
arg.net = t->asoc->base.net;
net/sctp/input.c
954
arg.lport = htons(t->asoc->base.bind_addr.port);
net/sctp/input.c
961
if (transport->asoc->ep == t->asoc->ep) {
net/sctp/input.c
977
if (t->asoc->temp)
net/sctp/inqueue.c
183
if (chunk->asoc)
net/sctp/inqueue.c
184
sock_rps_save_rxhash(chunk->asoc->base.sk, chunk->skb);
net/sctp/inqueue.c
86
if (chunk->asoc)
net/sctp/inqueue.c
87
chunk->asoc->stats.ipackets++;
net/sctp/ipv6.c
129
struct sctp_association *asoc = t->asoc;
net/sctp/ipv6.c
130
struct sock *sk = asoc->base.sk;
net/sctp/ipv6.c
136
sctp_icmp_frag_needed(sk, asoc, t, info);
net/sctp/ipv6.c
140
sctp_icmp_proto_unreachable(sk, asoc, t);
net/sctp/ipv6.c
166
struct sctp_association *asoc;
net/sctp/ipv6.c
175
sk = sctp_err_lookup(net, AF_INET6, skb, sctp_hdr(skb), &asoc, &transport);
net/sctp/ipv6.c
193
struct sctp_association *asoc;
net/sctp/ipv6.c
199
sk = sctp_err_lookup(net, AF_INET6, skb, sctp_hdr(skb), &asoc, &t);
net/sctp/ipv6.c
276
struct sctp_association *asoc = t->asoc;
net/sctp/ipv6.c
295
else if (asoc)
net/sctp/ipv6.c
296
fl6->flowi6_oif = asoc->base.sk->sk_bound_dev_if;
net/sctp/ipv6.c
312
if (asoc)
net/sctp/ipv6.c
313
fl6->fl6_sport = htons(asoc->base.bind_addr.port);
net/sctp/ipv6.c
328
if (!asoc || saddr) {
net/sctp/ipv6.c
334
bp = &asoc->base.bind_addr;
net/sctp/ipv6.c
348
!asoc->src_out_of_asoc_ok))
net/sctp/ipv6.c
449
pr_debug("%s: asoc:%p dst:%p\n", __func__, t->asoc, t->dst);
net/sctp/ipv6.c
836
struct sctp_association *asoc;
net/sctp/ipv6.c
843
asoc = event->asoc;
net/sctp/ipv6.c
844
paddr = &asoc->peer.primary_addr;
net/sctp/ipv6.c
848
addr->v4.sin_port = htons(asoc->peer.port);
net/sctp/ipv6.c
857
addr->v6.sin6_port = htons(asoc->peer.port);
net/sctp/ipv6.c
861
*addrlen = sctp_v6_addr_to_user(sctp_sk(asoc->base.sk), addr);
net/sctp/output.c
104
if (asoc->param_flags & SPP_PMTUD_ENABLE)
net/sctp/output.c
105
sctp_assoc_sync_pmtu(asoc);
net/sctp/output.c
107
asoc->param_flags & SPP_PMTUD_ENABLE) {
net/sctp/output.c
109
sctp_assoc_sync_pmtu(asoc);
net/sctp/output.c
112
if (asoc->pmtu_pending) {
net/sctp/output.c
113
if (asoc->param_flags & SPP_PMTUD_ENABLE)
net/sctp/output.c
114
sctp_assoc_sync_pmtu(asoc);
net/sctp/output.c
115
asoc->pmtu_pending = 0;
net/sctp/output.c
122
struct sctp_chunk *chunk = sctp_get_ecne_prepend(asoc);
net/sctp/output.c
139
: asoc->pathmtu;
net/sctp/output.c
229
pad = sctp_make_pad(t->asoc, t->pl.probe_size - overhead);
net/sctp/output.c
244
struct sctp_association *asoc = pkt->transport->asoc;
net/sctp/output.c
249
if (!asoc)
net/sctp/output.c
264
auth = sctp_make_auth(asoc, chunk->shkey->key_id);
net/sctp/output.c
290
struct sctp_association *asoc;
net/sctp/output.c
292
asoc = pkt->transport->asoc;
net/sctp/output.c
293
timer = &asoc->timers[SCTP_EVENT_TIMEOUT_SACK];
net/sctp/output.c
300
pkt->transport->asoc->peer.sack_generation)
net/sctp/output.c
303
asoc->a_rwnd = asoc->rwnd;
net/sctp/output.c
304
sack = sctp_make_sack(asoc);
net/sctp/output.c
311
SCTP_INC_STATS(asoc->base.net,
net/sctp/output.c
313
asoc->stats.octrlchunks++;
net/sctp/output.c
314
asoc->peer.sack_needed = 0;
net/sctp/output.c
316
sctp_association_put(asoc);
net/sctp/output.c
362
if (chunk->asoc)
net/sctp/output.c
363
chunk->asoc->stats.osacks++;
net/sctp/output.c
520
sctp_auth_calculate_hmac(tp->asoc, nskb, auth,
net/sctp/output.c
572
struct sctp_association *asoc = tp->asoc;
net/sctp/output.c
629
if (packet->has_data && sctp_state(asoc, ESTABLISHED) &&
net/sctp/output.c
630
asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) {
net/sctp/output.c
632
&asoc->timers[SCTP_EVENT_TIMEOUT_AUTOCLOSE];
net/sctp/output.c
634
asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE];
net/sctp/output.c
637
sctp_association_hold(asoc);
net/sctp/output.c
642
if (asoc) {
net/sctp/output.c
643
asoc->stats.opackets += pkt_count;
net/sctp/output.c
644
if (asoc->peer.last_sent_to != tp)
net/sctp/output.c
645
asoc->peer.last_sent_to = tp;
net/sctp/output.c
677
struct sctp_association *asoc = transport->asoc;
net/sctp/output.c
678
struct sctp_outq *q = &asoc->outqueue;
net/sctp/output.c
693
rwnd = asoc->peer.rwnd;
net/sctp/output.c
727
if ((sctp_sk(asoc->base.sk)->nodelay || inflight == 0) &&
net/sctp/output.c
728
!asoc->force_delay)
net/sctp/output.c
736
if (!sctp_state(asoc, ESTABLISHED))
net/sctp/output.c
743
packet->overhead - sctp_datachk_len(&chunk->asoc->stream) - 4)
net/sctp/output.c
761
struct sctp_association *asoc = transport->asoc;
net/sctp/output.c
762
u32 rwnd = asoc->peer.rwnd;
net/sctp/output.c
768
asoc->outqueue.outstanding_bytes += datasize;
net/sctp/output.c
77
struct sctp_association *asoc = tp->asoc;
net/sctp/output.c
776
asoc->peer.rwnd = rwnd;
net/sctp/output.c
778
asoc->stream.si->assign_number(chunk);
net/sctp/output.c
799
if (packet->transport->asoc)
net/sctp/output.c
800
pmtu = packet->transport->asoc->pathmtu;
net/sctp/output.c
91
if (asoc) {
net/sctp/output.c
92
sk = asoc->base.sk;
net/sctp/output.c
98
if (!asoc)
net/sctp/outqueue.c
1001
ctx->transport = ctx->asoc->peer.retran_path;
net/sctp/outqueue.c
1008
sctp_packet_config(ctx->packet, ctx->asoc->peer.i.init_tag,
net/sctp/outqueue.c
1009
ctx->asoc->peer.ecn_capable);
net/sctp/outqueue.c
1015
ctx->asoc->base.sk->sk_err = -error;
net/sctp/outqueue.c
1044
switch (ctx->asoc->state) {
net/sctp/outqueue.c
1086
__u8 stream_state = SCTP_SO(&ctx->asoc->stream, sid)->state;
net/sctp/outqueue.c
1129
if (ctx->asoc->state == SCTP_STATE_SHUTDOWN_PENDING)
net/sctp/outqueue.c
1132
ctx->asoc->stats.ouodchunks++;
net/sctp/outqueue.c
1134
ctx->asoc->stats.oodchunks++;
net/sctp/outqueue.c
1157
struct sock *sk = ctx->asoc->base.sk;
net/sctp/outqueue.c
1175
ctx->q->asoc->base.sk->sk_err = -error;
net/sctp/outqueue.c
1198
.asoc = q->asoc,
net/sctp/outqueue.c
1214
if (q->asoc->src_out_of_asoc_ok)
net/sctp/outqueue.c
1250
struct sctp_association *asoc = q->asoc;
net/sctp/outqueue.c
1259
struct sctp_transport *primary = asoc->peer.primary_path;
net/sctp/outqueue.c
1265
transport_list = &asoc->peer.transport_addr_list;
net/sctp/outqueue.c
1270
trace_sctp_probe_path(transport, asoc);
net/sctp/outqueue.c
1275
asoc->stats.gapcnt += gap_ack_blocks;
net/sctp/outqueue.c
1322
if (TSN_lt(asoc->highest_sacked, highest_tsn))
net/sctp/outqueue.c
1323
asoc->highest_sacked = highest_tsn;
net/sctp/outqueue.c
1351
if (TSN_lt(asoc->ctsn_ack_point, sack_ctsn)) {
net/sctp/outqueue.c
1352
asoc->ctsn_ack_point = sack_ctsn;
net/sctp/outqueue.c
1358
if (asoc->fast_recovery && accum_moved)
net/sctp/outqueue.c
1367
sctp_sack_update_unack_data(asoc, sack);
net/sctp/outqueue.c
1369
ctsn = asoc->ctsn_ack_point;
net/sctp/outqueue.c
1378
if (asoc->peer.prsctp_capable &&
net/sctp/outqueue.c
1380
asoc->sent_cnt_removable--;
net/sctp/outqueue.c
1391
asoc->peer.zero_window_announced = !sack_a_rwnd;
net/sctp/outqueue.c
1399
asoc->peer.rwnd = sack_a_rwnd;
net/sctp/outqueue.c
1401
asoc->stream.si->generate_ftsn(q, sack_ctsn);
net/sctp/outqueue.c
1405
"advertised peer ack point:0x%x\n", __func__, asoc, ctsn,
net/sctp/outqueue.c
1406
asoc->adv_peer_ack_point);
net/sctp/outqueue.c
1521
q->asoc->peer.primary_path->cacc.
net/sctp/outqueue.c
1605
struct sctp_association *asoc = transport->asoc;
net/sctp/outqueue.c
1623
transport->asoc->overall_error_count = 0;
net/sctp/outqueue.c
1632
if (asoc->state == SCTP_STATE_SHUTDOWN_PENDING &&
net/sctp/outqueue.c
1633
timer_delete(&asoc->timers[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]))
net/sctp/outqueue.c
1634
sctp_association_put(asoc);
net/sctp/outqueue.c
1643
transport->asoc,
net/sctp/outqueue.c
1671
if (!q->asoc->peer.rwnd &&
net/sctp/outqueue.c
1673
(sack_ctsn+2 == q->asoc->next_tsn) &&
net/sctp/outqueue.c
1674
q->asoc->state < SCTP_STATE_SHUTDOWN_PENDING) {
net/sctp/outqueue.c
1678
q->asoc->overall_error_count = 0;
net/sctp/outqueue.c
1717
struct sctp_association *asoc = q->asoc;
net/sctp/outqueue.c
1718
struct sctp_transport *primary = asoc->peer.primary_path;
net/sctp/outqueue.c
1823
struct sctp_association *asoc = q->asoc;
net/sctp/outqueue.c
1832
if (!asoc->peer.prsctp_capable)
net/sctp/outqueue.c
1841
if (TSN_lt(asoc->adv_peer_ack_point, ctsn))
net/sctp/outqueue.c
1842
asoc->adv_peer_ack_point = ctsn;
net/sctp/outqueue.c
1877
if (TSN_lte(tsn, asoc->adv_peer_ack_point+1)) {
net/sctp/outqueue.c
1878
asoc->adv_peer_ack_point = tsn;
net/sctp/outqueue.c
191
void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q)
net/sctp/outqueue.c
1916
if (asoc->adv_peer_ack_point > ctsn)
net/sctp/outqueue.c
1917
ftsn_chunk = sctp_make_fwdtsn(asoc, asoc->adv_peer_ack_point,
net/sctp/outqueue.c
1922
SCTP_INC_STATS(asoc->base.net, SCTP_MIB_OUTCTRLCHUNKS);
net/sctp/outqueue.c
195
q->asoc = asoc;
net/sctp/outqueue.c
201
sctp_sched_set_sched(asoc, sctp_sk(asoc->base.sk)->default_ss);
net/sctp/outqueue.c
213
list_for_each_entry(transport, &q->asoc->peer.transport_addr_list,
net/sctp/outqueue.c
270
sctp_outq_init(q->asoc, q);
net/sctp/outqueue.c
283
struct net *net = q->asoc->base.net;
net/sctp/outqueue.c
300
if (chunk->asoc->peer.prsctp_capable &&
net/sctp/outqueue.c
302
chunk->asoc->sent_cnt_removable++;
net/sctp/outqueue.c
342
static int sctp_prsctp_prune_sent(struct sctp_association *asoc,
net/sctp/outqueue.c
358
sctp_insert_list(&asoc->outqueue.abandoned,
net/sctp/outqueue.c
361
streamout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
net/sctp/outqueue.c
362
asoc->sent_cnt_removable--;
net/sctp/outqueue.c
363
asoc->abandoned_sent[SCTP_PR_INDEX(PRIO)]++;
net/sctp/outqueue.c
366
if (queue != &asoc->outqueue.retransmit &&
net/sctp/outqueue.c
371
asoc->outqueue.outstanding_bytes -= sctp_data_size(chk);
net/sctp/outqueue.c
382
static int sctp_prsctp_prune_unsent(struct sctp_association *asoc,
net/sctp/outqueue.c
385
struct sctp_outq *q = &asoc->outqueue;
net/sctp/outqueue.c
389
q->sched->unsched_all(&asoc->stream);
net/sctp/outqueue.c
400
asoc->sent_cnt_removable--;
net/sctp/outqueue.c
401
asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;
net/sctp/outqueue.c
403
sout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
net/sctp/outqueue.c
407
if (asoc->stream.out_curr == sout &&
net/sctp/outqueue.c
409
asoc->stream.out_curr = NULL;
net/sctp/outqueue.c
417
q->sched->sched_all(&asoc->stream);
net/sctp/outqueue.c
423
void sctp_prsctp_prune(struct sctp_association *asoc,
net/sctp/outqueue.c
428
if (!asoc->peer.prsctp_capable || !asoc->sent_cnt_removable)
net/sctp/outqueue.c
431
msg_len = sctp_prsctp_prune_sent(asoc, sinfo,
net/sctp/outqueue.c
432
&asoc->outqueue.retransmit,
net/sctp/outqueue.c
437
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/outqueue.c
439
msg_len = sctp_prsctp_prune_sent(asoc, sinfo,
net/sctp/outqueue.c
446
sctp_prsctp_prune_unsent(asoc, sinfo, msg_len);
net/sctp/outqueue.c
477
q->asoc->peer.rwnd += sctp_data_size(chunk);
net/sctp/outqueue.c
497
q->asoc->peer.rwnd += sctp_data_size(chunk);
net/sctp/outqueue.c
540
struct net *net = q->asoc->base.net;
net/sctp/outqueue.c
549
if (transport == transport->asoc->peer.retran_path)
net/sctp/outqueue.c
550
sctp_assoc_update_retran_path(transport->asoc);
net/sctp/outqueue.c
551
transport->asoc->rtx_data_chunks +=
net/sctp/outqueue.c
552
transport->asoc->unack_data;
net/sctp/outqueue.c
554
transport->asoc->unack_data)
net/sctp/outqueue.c
567
transport->asoc->init_retries++;
net/sctp/outqueue.c
580
q->asoc->stream.si->generate_ftsn(q, q->asoc->ctsn_ack_point);
net/sctp/outqueue.c
69
oute = SCTP_SO(&q->asoc->stream, stream)->ext;
net/sctp/outqueue.c
725
q->asoc->stats.rtxchunks++;
net/sctp/outqueue.c
770
const struct sctp_association *asoc = transport->asoc;
net/sctp/outqueue.c
771
const __u16 sport = asoc->base.bind_addr.port;
net/sctp/outqueue.c
772
const __u16 dport = asoc->peer.port;
net/sctp/outqueue.c
773
const __u32 vtag = asoc->peer.i.init_tag;
net/sctp/outqueue.c
793
struct sctp_association *asoc;
net/sctp/outqueue.c
820
new_transport = sctp_assoc_lookup_paddr(ctx->asoc,
net/sctp/outqueue.c
828
new_transport = ctx->asoc->peer.active_path;
net/sctp/outqueue.c
853
new_transport = ctx->asoc->peer.active_path;
net/sctp/outqueue.c
870
ctx->asoc->peer.i.init_tag,
net/sctp/outqueue.c
871
ctx->asoc->peer.ecn_capable);
net/sctp/outqueue.c
894
if (ctx->asoc->src_out_of_asoc_ok &&
net/sctp/outqueue.c
90
oute = SCTP_SO(&q->asoc->stream, stream)->ext;
net/sctp/outqueue.c
917
ctx->asoc->base.sk->sk_err = -error;
net/sctp/outqueue.c
920
ctx->asoc->stats.octrlchunks++;
net/sctp/outqueue.c
925
ctx->packet->vtag = ctx->asoc->c.my_vtag;
net/sctp/outqueue.c
948
ctx->asoc->stats.octrlchunks++;
net/sctp/outqueue.c
967
ctx->asoc->stats.octrlchunks++;
net/sctp/outqueue.c
978
if (chunk == ctx->asoc->strreset_chunk)
net/sctp/outqueue.c
996
if (ctx->asoc->peer.retran_path->state == SCTP_UNCONFIRMED)
net/sctp/outqueue.c
999
if (ctx->transport != ctx->asoc->peer.retran_path) {
net/sctp/primitive.c
38
int sctp_primitive_ ## name(struct net *net, struct sctp_association *asoc, \
net/sctp/primitive.c
47
state = asoc ? asoc->state : SCTP_STATE_CLOSED; \
net/sctp/primitive.c
48
ep = asoc ? asoc->ep : NULL; \
net/sctp/primitive.c
50
error = sctp_do_sm(net, event_type, subtype, state, ep, asoc, \
net/sctp/proc.c
258
assoc = transport->asoc;
net/sctp/proc.c
312
assoc = transport->asoc;
net/sctp/proc.c
324
seq_printf(seq, "%d ", tsp->asoc->assoc_id);
net/sctp/proc.c
79
struct sctp_association *asoc;
net/sctp/proc.c
86
asoc = sctp_assoc(epb);
net/sctp/proc.c
88
peer = asoc->peer.primary_path;
net/sctp/proc.c
90
WARN(1, "Association %p with NULL primary path!\n", asoc);
net/sctp/protocol.c
420
struct sctp_association *asoc = t->asoc;
net/sctp/protocol.c
440
if (asoc) {
net/sctp/protocol.c
442
fl4->flowi4_scope = ip_sock_rt_scope(asoc->base.sk);
net/sctp/protocol.c
443
fl4->flowi4_oif = asoc->base.sk->sk_bound_dev_if;
net/sctp/protocol.c
444
fl4->fl4_sport = htons(asoc->base.bind_addr.port);
net/sctp/protocol.c
465
if (!asoc || saddr)
net/sctp/protocol.c
468
bp = &asoc->base.bind_addr;
net/sctp/protocol.c
479
!asoc->src_out_of_asoc_ok))
net/sctp/protocol.c
507
flowi4_update_output(fl4, asoc->base.sk->sk_bound_dev_if,
net/sctp/protocol.c
964
struct sctp_association *asoc;
net/sctp/protocol.c
966
asoc = event->asoc;
net/sctp/protocol.c
969
sinfrom = &asoc->peer.primary_addr.v4;
net/sctp/protocol.c
970
sin->sin_port = htons(asoc->peer.port);
net/sctp/sm_make_chunk.c
1000
struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1008
retval = sctp_make_abort(asoc, NULL,
net/sctp/sm_make_chunk.c
1066
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1074
retval = sctp_make_abort(asoc, chunk, sizeof(struct sctp_errhdr) +
net/sctp/sm_make_chunk.c
1092
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
110
chunk->shkey = asoc->shkey;
net/sctp/sm_make_chunk.c
1101
retval = sctp_make_abort(asoc, chunk, payload_len);
net/sctp/sm_make_chunk.c
1115
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1122
retval = sctp_make_abort(asoc, chunk, payload_len);
net/sctp/sm_make_chunk.c
113
skb->sk = asoc ? asoc->base.sk : NULL;
net/sctp/sm_make_chunk.c
1133
struct sctp_chunk *sctp_make_new_encap_port(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1139
retval = sctp_make_abort(asoc, chunk,
net/sctp/sm_make_chunk.c
1154
struct sctp_chunk *sctp_make_heartbeat(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1161
retval = sctp_make_control(asoc, SCTP_CID_HEARTBEAT, 0,
net/sctp/sm_make_chunk.c
1186
struct sctp_chunk *sctp_make_heartbeat_ack(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1193
retval = sctp_make_control(asoc, SCTP_CID_HEARTBEAT_ACK, 0, paylen,
net/sctp/sm_make_chunk.c
1227
struct sctp_chunk *sctp_make_pad(const struct sctp_association *asoc, int len)
net/sctp/sm_make_chunk.c
1231
retval = sctp_make_control(asoc, SCTP_CID_PAD, 0, len, GFP_ATOMIC);
net/sctp/sm_make_chunk.c
1246
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1252
retval = sctp_make_control(asoc, SCTP_CID_ERROR, 0,
net/sctp/sm_make_chunk.c
1281
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1287
if (asoc) {
net/sctp/sm_make_chunk.c
1288
size = min_t(size_t, size, asoc->pathmtu);
net/sctp/sm_make_chunk.c
1289
sp = sctp_sk(asoc->base.sk);
net/sctp/sm_make_chunk.c
1294
return sctp_make_op_error_space(asoc, chunk, size);
net/sctp/sm_make_chunk.c
1298
struct sctp_chunk *sctp_make_op_error(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1305
retval = sctp_make_op_error_space(asoc, chunk, paylen + reserve_tail);
net/sctp/sm_make_chunk.c
1318
struct sctp_chunk *sctp_make_auth(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1326
hmac_desc = sctp_auth_asoc_get_hmac(asoc);
net/sctp/sm_make_chunk.c
1330
retval = sctp_make_control(asoc, SCTP_CID_AUTH, 0,
net/sctp/sm_make_chunk.c
1368
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1382
retval->asoc = (struct sctp_association *)asoc;
net/sctp/sm_make_chunk.c
1420
static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1445
sk = asoc ? asoc->base.sk : NULL;
net/sctp/sm_make_chunk.c
1446
retval = sctp_chunkify(skb, asoc, sk, gfp);
net/sctp/sm_make_chunk.c
1456
if (sctp_auth_send_cid(type, asoc))
net/sctp/sm_make_chunk.c
1464
static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1467
return _sctp_make_chunk(asoc, SCTP_CID_DATA, flags, paylen, gfp);
net/sctp/sm_make_chunk.c
1470
struct sctp_chunk *sctp_make_idata(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1473
return _sctp_make_chunk(asoc, SCTP_CID_I_DATA, flags, paylen, gfp);
net/sctp/sm_make_chunk.c
1476
static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1482
chunk = _sctp_make_chunk(asoc, type, flags, paylen, gfp);
net/sctp/sm_make_chunk.c
1583
stream = &chunk->asoc->stream;
net/sctp/sm_make_chunk.c
1614
htonl(sctp_association_get_next_tsn(chunk->asoc));
net/sctp/sm_make_chunk.c
1624
struct sctp_association *asoc;
net/sctp/sm_make_chunk.c
1630
asoc = sctp_association_new(ep, ep->base.sk, scope, gfp);
net/sctp/sm_make_chunk.c
1631
if (!asoc)
net/sctp/sm_make_chunk.c
1633
asoc->temp = 1;
net/sctp/sm_make_chunk.c
1636
SCTP_INPUT_CB(skb)->af->from_skb(&asoc->c.peer_addr, skb, 1);
net/sctp/sm_make_chunk.c
1639
return asoc;
net/sctp/sm_make_chunk.c
1647
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1689
cookie->c = asoc->c;
net/sctp/sm_make_chunk.c
1694
cookie->c.prsctp_capable = asoc->peer.prsctp_capable;
net/sctp/sm_make_chunk.c
1697
cookie->c.adaptation_ind = asoc->peer.adaptation_ind;
net/sctp/sm_make_chunk.c
1700
cookie->c.expiration = ktime_add(asoc->cookie_life,
net/sctp/sm_make_chunk.c
1724
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1806
if (!asoc && ktime_before(bear_cookie->expiration, kt)) {
net/sctp/sm_make_chunk.c
1818
*errp = sctp_make_op_error(asoc, chunk,
net/sctp/sm_make_chunk.c
1893
static int sctp_process_missing_param(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1907
*errp = sctp_make_op_error_space(asoc, chunk, len);
net/sctp/sm_make_chunk.c
1922
static int sctp_process_inv_mandatory(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1929
*errp = sctp_make_op_error_space(asoc, chunk, 0);
net/sctp/sm_make_chunk.c
1938
static int sctp_process_inv_paramlength(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1950
*errp = sctp_make_violation_paramlen(asoc, chunk, param);
net/sctp/sm_make_chunk.c
1959
static int sctp_process_hn_param(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1974
*errp = sctp_make_op_error(asoc, chunk, SCTP_ERROR_DNS_FAILED,
net/sctp/sm_make_chunk.c
198
struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2016
static void sctp_process_ext_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2025
if (asoc->ep->reconf_enable)
net/sctp/sm_make_chunk.c
2026
asoc->peer.reconf_capable = 1;
net/sctp/sm_make_chunk.c
2029
if (asoc->ep->prsctp_enable)
net/sctp/sm_make_chunk.c
2030
asoc->peer.prsctp_capable = 1;
net/sctp/sm_make_chunk.c
2036
if (asoc->ep->auth_enable)
net/sctp/sm_make_chunk.c
2037
asoc->peer.auth_capable = 1;
net/sctp/sm_make_chunk.c
2041
if (asoc->ep->asconf_enable)
net/sctp/sm_make_chunk.c
2042
asoc->peer.asconf_capable = 1;
net/sctp/sm_make_chunk.c
2045
if (asoc->ep->intl_enable)
net/sctp/sm_make_chunk.c
2046
asoc->peer.intl_capable = 1;
net/sctp/sm_make_chunk.c
207
struct sctp_endpoint *ep = asoc->ep;
net/sctp/sm_make_chunk.c
2080
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2101
*errp = sctp_make_op_error_limited(asoc, chunk);
net/sctp/sm_make_chunk.c
2134
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2173
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2181
sctp_process_hn_param(asoc, param, chunk, err_chunk);
net/sctp/sm_make_chunk.c
2201
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2217
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2243
sctp_process_inv_paramlength(asoc, param.p, chunk,
net/sctp/sm_make_chunk.c
2253
retval = sctp_process_unk_param(asoc, param, chunk, err_chunk);
net/sctp/sm_make_chunk.c
2261
const struct sctp_association *asoc, enum sctp_cid cid,
net/sctp/sm_make_chunk.c
227
init.init_tag = htonl(asoc->c.my_vtag);
net/sctp/sm_make_chunk.c
2277
return sctp_process_inv_mandatory(asoc, chunk, errp);
net/sctp/sm_make_chunk.c
228
init.a_rwnd = htonl(asoc->rwnd);
net/sctp/sm_make_chunk.c
229
init.num_outbound_streams = htons(asoc->c.sinit_num_ostreams);
net/sctp/sm_make_chunk.c
2292
return sctp_process_inv_paramlength(asoc, param.p, chunk, errp);
net/sctp/sm_make_chunk.c
2298
return sctp_process_missing_param(asoc, SCTP_PARAM_STATE_COOKIE,
net/sctp/sm_make_chunk.c
230
init.num_inbound_streams = htons(asoc->c.sinit_max_instreams);
net/sctp/sm_make_chunk.c
2303
result = sctp_verify_param(net, ep, asoc, param, cid,
net/sctp/sm_make_chunk.c
231
init.initial_tsn = htonl(asoc->c.initial_tsn);
net/sctp/sm_make_chunk.c
2325
int sctp_process_init(struct sctp_association *asoc, struct sctp_chunk *chunk,
net/sctp/sm_make_chunk.c
234
sp = sctp_sk(asoc->base.sk);
net/sctp/sm_make_chunk.c
2346
asoc->encap_port = SCTP_INPUT_CB(chunk->skb)->encap_port;
net/sctp/sm_make_chunk.c
2347
if (!sctp_assoc_add_peer(asoc, peer_addr, gfp, SCTP_ACTIVE))
net/sctp/sm_make_chunk.c
2366
if (!sctp_process_param(asoc, param, peer_addr, gfp))
net/sctp/sm_make_chunk.c
2377
if (asoc->peer.auth_capable && (!asoc->peer.peer_random ||
net/sctp/sm_make_chunk.c
2378
!asoc->peer.peer_hmacs))
net/sctp/sm_make_chunk.c
2379
asoc->peer.auth_capable = 0;
net/sctp/sm_make_chunk.c
2387
if (!asoc->base.net->sctp.addip_noauth &&
net/sctp/sm_make_chunk.c
2388
(asoc->peer.asconf_capable && !asoc->peer.auth_capable)) {
net/sctp/sm_make_chunk.c
2389
asoc->peer.addip_disabled_mask |= (SCTP_PARAM_ADD_IP |
net/sctp/sm_make_chunk.c
2392
asoc->peer.asconf_capable = 0;
net/sctp/sm_make_chunk.c
2397
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/sm_make_chunk.c
240
if (asoc->ep->ecn_enable)
net/sctp/sm_make_chunk.c
2400
sctp_assoc_rm_peer(asoc, transport);
net/sctp/sm_make_chunk.c
2407
asoc->peer.i.init_tag =
net/sctp/sm_make_chunk.c
2409
asoc->peer.i.a_rwnd =
net/sctp/sm_make_chunk.c
2411
asoc->peer.i.num_outbound_streams =
net/sctp/sm_make_chunk.c
2413
asoc->peer.i.num_inbound_streams =
net/sctp/sm_make_chunk.c
2415
asoc->peer.i.initial_tsn =
net/sctp/sm_make_chunk.c
2418
asoc->strreset_inseq = asoc->peer.i.initial_tsn;
net/sctp/sm_make_chunk.c
2423
if (asoc->c.sinit_num_ostreams >
net/sctp/sm_make_chunk.c
2425
asoc->c.sinit_num_ostreams =
net/sctp/sm_make_chunk.c
2429
if (asoc->c.sinit_max_instreams >
net/sctp/sm_make_chunk.c
243
if (asoc->ep->prsctp_enable)
net/sctp/sm_make_chunk.c
2431
asoc->c.sinit_max_instreams =
net/sctp/sm_make_chunk.c
2436
asoc->c.peer_vtag = asoc->peer.i.init_tag;
net/sctp/sm_make_chunk.c
2439
asoc->peer.rwnd = asoc->peer.i.a_rwnd;
net/sctp/sm_make_chunk.c
2445
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
2447
transport->ssthresh = asoc->peer.i.a_rwnd;
net/sctp/sm_make_chunk.c
2451
if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
net/sctp/sm_make_chunk.c
2452
asoc->peer.i.initial_tsn, gfp))
net/sctp/sm_make_chunk.c
2463
if (sctp_stream_init(&asoc->stream, asoc->c.sinit_num_ostreams,
net/sctp/sm_make_chunk.c
2464
asoc->c.sinit_max_instreams, gfp))
net/sctp/sm_make_chunk.c
2468
sctp_assoc_update_frag_point(asoc);
net/sctp/sm_make_chunk.c
2470
if (!asoc->temp && sctp_assoc_set_id(asoc, gfp))
net/sctp/sm_make_chunk.c
2483
asoc->peer.addip_serial = asoc->peer.i.initial_tsn - 1;
net/sctp/sm_make_chunk.c
2488
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/sm_make_chunk.c
2491
sctp_assoc_rm_peer(asoc, transport);
net/sctp/sm_make_chunk.c
251
if (asoc->ep->asconf_enable) {
net/sctp/sm_make_chunk.c
2510
static int sctp_process_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2515
struct sctp_endpoint *ep = asoc->ep;
net/sctp/sm_make_chunk.c
2517
struct net *net = asoc->base.net;
net/sctp/sm_make_chunk.c
2532
if (PF_INET6 != asoc->base.sk->sk_family)
net/sctp/sm_make_chunk.c
2538
if (ipv6_only_sock(asoc->base.sk))
net/sctp/sm_make_chunk.c
2542
if (!af->from_addr_param(&addr, param.addr, htons(asoc->peer.port), 0))
net/sctp/sm_make_chunk.c
2546
if (!sctp_assoc_add_peer(asoc, &addr, gfp, SCTP_UNCONFIRMED))
net/sctp/sm_make_chunk.c
2559
asoc->cookie_life = ktime_add_ms(asoc->cookie_life, stale);
net/sctp/sm_make_chunk.c
2566
asoc->peer.ipv4_address = 0;
net/sctp/sm_make_chunk.c
2567
asoc->peer.ipv6_address = 0;
net/sctp/sm_make_chunk.c
257
if (asoc->ep->reconf_enable) {
net/sctp/sm_make_chunk.c
2573
asoc->peer.ipv6_address = 1;
net/sctp/sm_make_chunk.c
2575
asoc->peer.ipv4_address = 1;
net/sctp/sm_make_chunk.c
2585
asoc->peer.ipv4_address = 1;
net/sctp/sm_make_chunk.c
2589
if (PF_INET6 == asoc->base.sk->sk_family)
net/sctp/sm_make_chunk.c
2590
asoc->peer.ipv6_address = 1;
net/sctp/sm_make_chunk.c
2600
asoc->peer.cookie_len =
net/sctp/sm_make_chunk.c
2602
kfree(asoc->peer.cookie);
net/sctp/sm_make_chunk.c
2603
asoc->peer.cookie = kmemdup(param.cookie->body, asoc->peer.cookie_len, gfp);
net/sctp/sm_make_chunk.c
2604
if (!asoc->peer.cookie)
net/sctp/sm_make_chunk.c
2617
if (asoc->ep->ecn_enable) {
net/sctp/sm_make_chunk.c
2618
asoc->peer.ecn_capable = 1;
net/sctp/sm_make_chunk.c
2626
asoc->peer.adaptation_ind = ntohl(param.aind->adaptation_ind);
net/sctp/sm_make_chunk.c
2640
htons(asoc->peer.port), 0))
net/sctp/sm_make_chunk.c
2646
t = sctp_assoc_lookup_paddr(asoc, &addr);
net/sctp/sm_make_chunk.c
265
if (asoc->ep->intl_enable) {
net/sctp/sm_make_chunk.c
2650
sctp_assoc_set_primary(asoc, t);
net/sctp/sm_make_chunk.c
2654
sctp_process_ext_param(asoc, param);
net/sctp/sm_make_chunk.c
2658
if (asoc->ep->prsctp_enable) {
net/sctp/sm_make_chunk.c
2659
asoc->peer.prsctp_capable = 1;
net/sctp/sm_make_chunk.c
2670
kfree(asoc->peer.peer_random);
net/sctp/sm_make_chunk.c
2671
asoc->peer.peer_random = kmemdup(param.p,
net/sctp/sm_make_chunk.c
2673
if (!asoc->peer.peer_random) {
net/sctp/sm_make_chunk.c
2684
kfree(asoc->peer.peer_hmacs);
net/sctp/sm_make_chunk.c
2685
asoc->peer.peer_hmacs = kmemdup(param.p,
net/sctp/sm_make_chunk.c
2687
if (!asoc->peer.peer_hmacs) {
net/sctp/sm_make_chunk.c
2693
sctp_auth_asoc_set_default_hmac(asoc, param.hmac_algo);
net/sctp/sm_make_chunk.c
2700
kfree(asoc->peer.peer_chunks);
net/sctp/sm_make_chunk.c
2701
asoc->peer.peer_chunks = kmemdup(param.p,
net/sctp/sm_make_chunk.c
2703
if (!asoc->peer.peer_chunks)
net/sctp/sm_make_chunk.c
2714
__func__, ntohs(param.p->type), asoc);
net/sctp/sm_make_chunk.c
275
chunksize += sizeof(asoc->c.auth_random);
net/sctp/sm_make_chunk.c
2767
static struct sctp_chunk *sctp_make_asconf(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
278
auth_hmacs = (struct sctp_paramhdr *)asoc->c.auth_hmacs;
net/sctp/sm_make_chunk.c
2784
retval = sctp_make_control(asoc, SCTP_CID_ASCONF, 0, length,
net/sctp/sm_make_chunk.c
2789
asconf.serial = htonl(asoc->addip_serial++);
net/sctp/sm_make_chunk.c
2823
struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
285
auth_chunks = (struct sctp_paramhdr *)asoc->c.auth_chunks;
net/sctp/sm_make_chunk.c
2850
if (asoc->asconf_addr_del_pending && !del_pickup) {
net/sctp/sm_make_chunk.c
2863
retval = sctp_make_asconf(asoc, laddr, totallen);
net/sctp/sm_make_chunk.c
2883
addr = asoc->asconf_addr_del_pending;
net/sctp/sm_make_chunk.c
2910
struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2926
retval = sctp_make_asconf(asoc, addr, len);
net/sctp/sm_make_chunk.c
2959
static struct sctp_chunk *sctp_make_asconf_ack(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2967
retval = sctp_make_control(asoc, SCTP_CID_ASCONF_ACK, 0, length,
net/sctp/sm_make_chunk.c
3023
static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3041
if (!asoc->peer.ipv6_address)
net/sctp/sm_make_chunk.c
3045
if (!asoc->peer.ipv4_address)
net/sctp/sm_make_chunk.c
3056
if (!af->from_addr_param(&addr, addr_param, htons(asoc->peer.port), 0))
net/sctp/sm_make_chunk.c
3076
if (security_sctp_bind_connect(asoc->ep->base.sk,
net/sctp/sm_make_chunk.c
3089
peer = sctp_assoc_add_peer(asoc, &addr, GFP_ATOMIC, SCTP_UNCONFIRMED);
net/sctp/sm_make_chunk.c
3095
asoc->new_transport = peer;
net/sctp/sm_make_chunk.c
3103
if (asoc->peer.transport_count == 1)
net/sctp/sm_make_chunk.c
311
retval = sctp_make_control(asoc, SCTP_CID_INIT, 0, chunksize, gfp);
net/sctp/sm_make_chunk.c
3122
sctp_assoc_set_primary(asoc, asconf->transport);
net/sctp/sm_make_chunk.c
3123
sctp_assoc_del_nonprimary_peers(asoc,
net/sctp/sm_make_chunk.c
3133
peer = sctp_assoc_lookup_paddr(asoc, &addr);
net/sctp/sm_make_chunk.c
3137
sctp_assoc_rm_peer(asoc, peer);
net/sctp/sm_make_chunk.c
3148
if (security_sctp_bind_connect(asoc->ep->base.sk,
net/sctp/sm_make_chunk.c
3154
peer = sctp_assoc_lookup_paddr(asoc, &addr);
net/sctp/sm_make_chunk.c
3158
sctp_assoc_set_primary(asoc, peer);
net/sctp/sm_make_chunk.c
3166
bool sctp_verify_asconf(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3235
struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3270
asconf_ack = sctp_make_asconf_ack(asoc, serial, chunk_len * 4);
net/sctp/sm_make_chunk.c
3281
err_code = sctp_process_asconf_param(asoc, asconf,
net/sctp/sm_make_chunk.c
3305
asoc->peer.addip_serial++;
net/sctp/sm_make_chunk.c
3313
&asoc->asconf_ack_list);
net/sctp/sm_make_chunk.c
332
if (asoc->ep->ecn_enable)
net/sctp/sm_make_chunk.c
3320
static void sctp_asconf_param_success(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3323
struct sctp_bind_addr *bp = &asoc->base.bind_addr;
net/sctp/sm_make_chunk.c
3348
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
3356
if (asoc->asconf_addr_del_pending != NULL &&
net/sctp/sm_make_chunk.c
3357
sctp_cmp_addr_exact(asoc->asconf_addr_del_pending, &addr)) {
net/sctp/sm_make_chunk.c
3358
kfree(asoc->asconf_addr_del_pending);
net/sctp/sm_make_chunk.c
3359
asoc->asconf_addr_del_pending = NULL;
net/sctp/sm_make_chunk.c
3362
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
3435
int sctp_process_asconf_ack(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3438
struct sctp_chunk *asconf = asoc->addip_last_asconf;
net/sctp/sm_make_chunk.c
345
if (asoc->ep->prsctp_enable)
net/sctp/sm_make_chunk.c
3484
sctp_asconf_param_success(asoc, asconf_param);
net/sctp/sm_make_chunk.c
3495
asoc->peer.addip_disabled_mask |=
net/sctp/sm_make_chunk.c
3514
if (no_err && asoc->src_out_of_asoc_ok) {
net/sctp/sm_make_chunk.c
3515
asoc->src_out_of_asoc_ok = 0;
net/sctp/sm_make_chunk.c
3516
sctp_transport_immediate_rtx(asoc->peer.primary_path);
net/sctp/sm_make_chunk.c
3522
asoc->addip_last_asconf = NULL;
net/sctp/sm_make_chunk.c
3528
struct sctp_chunk *sctp_make_fwdtsn(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3540
retval = sctp_make_control(asoc, SCTP_CID_FWD_TSN, 0, hint, GFP_ATOMIC);
net/sctp/sm_make_chunk.c
3558
struct sctp_chunk *sctp_make_ifwdtsn(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3568
retval = sctp_make_control(asoc, SCTP_CID_I_FWD_TSN, 0, hint,
net/sctp/sm_make_chunk.c
357
sctp_addto_chunk(retval, sizeof(asoc->c.auth_random),
net/sctp/sm_make_chunk.c
358
asoc->c.auth_random);
net/sctp/sm_make_chunk.c
3597
static struct sctp_chunk *sctp_make_reconf(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3603
retval = sctp_make_control(asoc, SCTP_CID_RECONF, 0, length,
net/sctp/sm_make_chunk.c
3649
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3662
retval = sctp_make_reconf(asoc, SCTP_PAD4(outlen) + SCTP_PAD4(inlen));
net/sctp/sm_make_chunk.c
3669
outreq.request_seq = htonl(asoc->strreset_outseq);
net/sctp/sm_make_chunk.c
3670
outreq.response_seq = htonl(asoc->strreset_inseq - 1);
net/sctp/sm_make_chunk.c
3671
outreq.send_reset_at_tsn = htonl(asoc->next_tsn - 1);
net/sctp/sm_make_chunk.c
3682
inreq.request_seq = htonl(asoc->strreset_outseq + out);
net/sctp/sm_make_chunk.c
3703
const struct sctp_association *asoc)
net/sctp/sm_make_chunk.c
3709
retval = sctp_make_reconf(asoc, length);
net/sctp/sm_make_chunk.c
371
struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3715
tsnreq.request_seq = htonl(asoc->strreset_outseq);
net/sctp/sm_make_chunk.c
3734
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3741
retval = sctp_make_reconf(asoc, (!!out + !!in) * size);
net/sctp/sm_make_chunk.c
3749
addstrm.request_seq = htonl(asoc->strreset_outseq);
net/sctp/sm_make_chunk.c
3759
addstrm.request_seq = htonl(asoc->strreset_outseq + !!out);
net/sctp/sm_make_chunk.c
3779
struct sctp_chunk *sctp_make_strreset_resp(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3786
retval = sctp_make_reconf(asoc, length);
net/sctp/sm_make_chunk.c
3815
struct sctp_chunk *sctp_make_strreset_tsnresp(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3824
retval = sctp_make_reconf(asoc, length);
net/sctp/sm_make_chunk.c
3841
bool sctp_verify_reconf(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
392
addrs = sctp_bind_addrs_to_raw(&asoc->base.bind_addr, &addrs_len, gfp);
net/sctp/sm_make_chunk.c
394
initack.init_tag = htonl(asoc->c.my_vtag);
net/sctp/sm_make_chunk.c
395
initack.a_rwnd = htonl(asoc->rwnd);
net/sctp/sm_make_chunk.c
396
initack.num_outbound_streams = htons(asoc->c.sinit_num_ostreams);
net/sctp/sm_make_chunk.c
397
initack.num_inbound_streams = htons(asoc->c.sinit_max_instreams);
net/sctp/sm_make_chunk.c
398
initack.initial_tsn = htonl(asoc->c.initial_tsn);
net/sctp/sm_make_chunk.c
403
cookie = sctp_pack_cookie(asoc->ep, asoc, chunk, &cookie_len,
net/sctp/sm_make_chunk.c
411
sp = sctp_sk(asoc->base.sk);
net/sctp/sm_make_chunk.c
415
if (asoc->peer.ecn_capable)
net/sctp/sm_make_chunk.c
418
if (asoc->peer.prsctp_capable)
net/sctp/sm_make_chunk.c
421
if (asoc->peer.asconf_capable) {
net/sctp/sm_make_chunk.c
427
if (asoc->peer.reconf_capable) {
net/sctp/sm_make_chunk.c
435
if (asoc->peer.intl_capable) {
net/sctp/sm_make_chunk.c
440
if (asoc->peer.auth_capable) {
net/sctp/sm_make_chunk.c
441
auth_random = (struct sctp_paramhdr *)asoc->c.auth_random;
net/sctp/sm_make_chunk.c
444
auth_hmacs = (struct sctp_paramhdr *)asoc->c.auth_hmacs;
net/sctp/sm_make_chunk.c
450
auth_chunks = (struct sctp_paramhdr *)asoc->c.auth_chunks;
net/sctp/sm_make_chunk.c
464
retval = sctp_make_control(asoc, SCTP_CID_INIT_ACK, 0, chunksize, gfp);
net/sctp/sm_make_chunk.c
479
sctp_assoc_lookup_paddr(asoc,
net/sctp/sm_make_chunk.c
486
if (asoc->peer.ecn_capable)
net/sctp/sm_make_chunk.c
49
static struct sctp_chunk *sctp_make_control(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
494
if (asoc->peer.prsctp_capable)
net/sctp/sm_make_chunk.c
504
if (asoc->peer.auth_capable) {
net/sctp/sm_make_chunk.c
516
retval->asoc = (struct sctp_association *) asoc;
net/sctp/sm_make_chunk.c
52
static struct sctp_chunk *sctp_make_data(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
54
static struct sctp_chunk *_sctp_make_chunk(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
559
struct sctp_chunk *sctp_make_cookie_echo(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
566
cookie = asoc->peer.cookie;
net/sctp/sm_make_chunk.c
567
cookie_len = asoc->peer.cookie_len;
net/sctp/sm_make_chunk.c
570
retval = sctp_make_control(asoc, SCTP_CID_COOKIE_ECHO, 0,
net/sctp/sm_make_chunk.c
59
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
611
struct sctp_chunk *sctp_make_cookie_ack(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
616
retval = sctp_make_control(asoc, SCTP_CID_COOKIE_ACK, 0, 0, GFP_ATOMIC);
net/sctp/sm_make_chunk.c
629
sctp_assoc_lookup_paddr(asoc,
net/sctp/sm_make_chunk.c
63
static int sctp_process_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
658
struct sctp_chunk *sctp_make_cwr(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
666
retval = sctp_make_control(asoc, SCTP_CID_ECN_CWR, 0,
net/sctp/sm_make_chunk.c
693
struct sctp_chunk *sctp_make_ecne(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
700
retval = sctp_make_control(asoc, SCTP_CID_ECN_ECNE, 0,
net/sctp/sm_make_chunk.c
714
struct sctp_chunk *sctp_make_datafrag_empty(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
732
retval = sctp_make_data(asoc, flags, sizeof(dp) + len, gfp);
net/sctp/sm_make_chunk.c
746
struct sctp_chunk *sctp_make_sack(struct sctp_association *asoc)
net/sctp/sm_make_chunk.c
748
struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map;
net/sctp/sm_make_chunk.c
768
sack.a_rwnd = htonl(asoc->a_rwnd);
net/sctp/sm_make_chunk.c
77
struct sctp_association *asoc = chunk->asoc;
net/sctp/sm_make_chunk.c
777
retval = sctp_make_control(asoc, SCTP_CID_SACK, 0, len, GFP_ATOMIC);
net/sctp/sm_make_chunk.c
811
retval->transport = asoc->peer.last_data_from;
net/sctp/sm_make_chunk.c
823
asoc->stats.idupchunks += num_dup_tsns;
net/sctp/sm_make_chunk.c
835
if (++asoc->peer.sack_generation == 0) {
net/sctp/sm_make_chunk.c
836
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
839
asoc->peer.sack_generation = 1;
net/sctp/sm_make_chunk.c
846
struct sctp_chunk *sctp_make_shutdown(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
853
ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
net/sctp/sm_make_chunk.c
856
retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN, 0,
net/sctp/sm_make_chunk.c
87
ev = sctp_ulpevent_make_authkey(asoc, shkey->key_id,
net/sctp/sm_make_chunk.c
870
struct sctp_chunk *sctp_make_shutdown_ack(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
875
retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN_ACK, 0, 0,
net/sctp/sm_make_chunk.c
894
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
903
flags |= asoc ? 0 : SCTP_CHUNK_FLAG_T;
net/sctp/sm_make_chunk.c
905
retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN_COMPLETE, flags,
net/sctp/sm_make_chunk.c
91
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/sm_make_chunk.c
927
struct sctp_chunk *sctp_make_abort(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
937
if (!asoc) {
net/sctp/sm_make_chunk.c
945
retval = sctp_make_control(asoc, SCTP_CID_ABORT, flags, hint,
net/sctp/sm_make_chunk.c
965
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
972
retval = sctp_make_abort(asoc, chunk,
net/sctp/sm_make_chunk.c
99
struct sctp_association *asoc = chunk->asoc;
net/sctp/sm_sideeffect.c
1002
if (asoc->peer.asconf_capable == 0)
net/sctp/sm_sideeffect.c
1005
asoc->peer.asconf_capable = 0;
net/sctp/sm_sideeffect.c
101
if (TSN_lt(asoc->last_cwr_tsn, lowest_tsn)) {
net/sctp/sm_sideeffect.c
1023
static void sctp_cmd_del_non_primary(struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
1029
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/sm_sideeffect.c
1032
&asoc->peer.primary_addr)) {
net/sctp/sm_sideeffect.c
1033
sctp_assoc_rm_peer(asoc, t);
net/sctp/sm_sideeffect.c
1039
static void sctp_cmd_set_sk_err(struct sctp_association *asoc, int error)
net/sctp/sm_sideeffect.c
1041
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
1049
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
1054
ev = sctp_ulpevent_make_assoc_change(asoc, 0, state, 0,
net/sctp/sm_sideeffect.c
1055
asoc->c.sinit_num_ostreams,
net/sctp/sm_sideeffect.c
1056
asoc->c.sinit_max_instreams,
net/sctp/sm_sideeffect.c
1059
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/sm_sideeffect.c
1063
struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
1067
ev = sctp_ulpevent_make_authkey(asoc, 0, SCTP_AUTH_NO_AUTH, GFP_ATOMIC);
net/sctp/sm_sideeffect.c
1069
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/sm_sideeffect.c
107
transport = sctp_assoc_lookup_tsn(asoc, lowest_tsn);
net/sctp/sm_sideeffect.c
1074
struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
1078
ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC);
net/sctp/sm_sideeffect.c
1081
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/sm_sideeffect.c
1085
static void sctp_cmd_t1_timer_update(struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
1091
t = asoc->init_last_sent_to;
net/sctp/sm_sideeffect.c
1092
asoc->init_err_counter++;
net/sctp/sm_sideeffect.c
1094
if (t->init_sent_count > (asoc->init_cycle + 1)) {
net/sctp/sm_sideeffect.c
1095
asoc->timeouts[timer] *= 2;
net/sctp/sm_sideeffect.c
1096
if (asoc->timeouts[timer] > asoc->max_init_timeo) {
net/sctp/sm_sideeffect.c
1097
asoc->timeouts[timer] = asoc->max_init_timeo;
net/sctp/sm_sideeffect.c
1099
asoc->init_cycle++;
net/sctp/sm_sideeffect.c
1103
asoc->init_err_counter, asoc->init_cycle,
net/sctp/sm_sideeffect.c
1104
asoc->timeouts[timer]);
net/sctp/sm_sideeffect.c
1113
static void sctp_cmd_send_msg(struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
1119
sctp_outq_tail(&asoc->outqueue, chunk, gfp);
net/sctp/sm_sideeffect.c
1121
asoc->outqueue.sched->enqueue(&asoc->outqueue, msg);
net/sctp/sm_sideeffect.c
113
asoc->last_cwr_tsn = lowest_tsn;
net/sctp/sm_sideeffect.c
1132
asoc, sctp_state_tbl[state], state_fn->name)
net/sctp/sm_sideeffect.c
1135
pr_debug("%s[post-fn]: asoc:%p, status:%s\n", __func__, asoc, \
net/sctp/sm_sideeffect.c
1140
asoc, sctp_state_tbl[(asoc && sctp_id2assoc(ep->base.sk, \
net/sctp/sm_sideeffect.c
1141
sctp_assoc2id(asoc))) ? asoc->state : SCTP_STATE_CLOSED])
net/sctp/sm_sideeffect.c
1151
struct sctp_endpoint *ep, struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
1172
status = state_fn->fn(net, ep, asoc, subtype, event_arg, &commands);
net/sctp/sm_sideeffect.c
1176
ep, &asoc, event_arg, status,
net/sctp/sm_sideeffect.c
119
repl = sctp_make_cwr(asoc, asoc->last_cwr_tsn, chunk);
net/sctp/sm_sideeffect.c
1190
struct sctp_association **asoc,
net/sctp/sm_sideeffect.c
1205
ep, *asoc,
net/sctp/sm_sideeffect.c
1230
*asoc = NULL;
net/sctp/sm_sideeffect.c
1279
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
128
static void sctp_do_ecn_cwr_work(struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
1316
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
1321
asoc = cmd->obj.asoc;
net/sctp/sm_sideeffect.c
1322
BUG_ON(asoc->peer.primary_path == NULL);
net/sctp/sm_sideeffect.c
1323
sctp_endpoint_add_asoc(ep, asoc);
net/sctp/sm_sideeffect.c
1327
sctp_outq_teardown(&asoc->outqueue);
net/sctp/sm_sideeffect.c
1332
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
1336
sctp_cmd_delete_tcb(commands, asoc);
net/sctp/sm_sideeffect.c
1337
asoc = NULL;
net/sctp/sm_sideeffect.c
134
asoc->need_ecne = 0;
net/sctp/sm_sideeffect.c
1342
sctp_cmd_new_state(commands, asoc, cmd->obj.state);
net/sctp/sm_sideeffect.c
1347
error = sctp_tsnmap_mark(&asoc->peer.tsn_map,
net/sctp/sm_sideeffect.c
1352
asoc->stream.si->report_ftsn(&asoc->ulpq, cmd->obj.u32);
net/sctp/sm_sideeffect.c
1356
asoc->stream.si->handle_ftsn(&asoc->ulpq,
net/sctp/sm_sideeffect.c
1367
error = sctp_gen_sack(asoc, force, commands);
net/sctp/sm_sideeffect.c
1372
error = sctp_cmd_process_sack(commands, asoc,
net/sctp/sm_sideeffect.c
1378
new_obj = sctp_make_init_ack(asoc, chunk, GFP_ATOMIC,
net/sctp/sm_sideeffect.c
138
static int sctp_gen_sack(struct sctp_association *asoc, int force,
net/sctp/sm_sideeffect.c
1395
error = sctp_cmd_process_init(commands, asoc, chunk,
net/sctp/sm_sideeffect.c
1401
new_obj = sctp_make_cookie_echo(asoc, chunk);
net/sctp/sm_sideeffect.c
141
struct sctp_transport *trans = asoc->peer.last_data_from;
net/sctp/sm_sideeffect.c
1420
asoc->init_last_sent_to = new_obj->transport;
net/sctp/sm_sideeffect.c
1435
if ((asoc->peer.retran_path !=
net/sctp/sm_sideeffect.c
1436
asoc->peer.primary_path) &&
net/sctp/sm_sideeffect.c
1437
(asoc->init_err_counter > 0)) {
net/sctp/sm_sideeffect.c
1449
asoc->overall_error_count = 0;
net/sctp/sm_sideeffect.c
1452
new_obj = sctp_make_shutdown(asoc, chunk);
net/sctp/sm_sideeffect.c
1464
__func__, cmd->obj.chunk, &asoc->ulpq);
net/sctp/sm_sideeffect.c
1466
asoc->stream.si->ulpevent_data(&asoc->ulpq,
net/sctp/sm_sideeffect.c
147
(!trans && (asoc->param_flags & SPP_SACKDELAY_DISABLE)) ||
net/sctp/sm_sideeffect.c
1474
__func__, cmd->obj.ulpevent, &asoc->ulpq);
net/sctp/sm_sideeffect.c
1476
asoc->stream.si->enqueue_event(&asoc->ulpq,
net/sctp/sm_sideeffect.c
1482
if (!asoc->outqueue.cork) {
net/sctp/sm_sideeffect.c
1483
sctp_outq_cork(&asoc->outqueue);
net/sctp/sm_sideeffect.c
1487
sctp_outq_tail(&asoc->outqueue, cmd->obj.chunk, gfp);
net/sctp/sm_sideeffect.c
149
asoc->peer.sack_needed = 1;
net/sctp/sm_sideeffect.c
1499
sctp_retransmit(&asoc->outqueue, cmd->obj.transport,
net/sctp/sm_sideeffect.c
1505
sctp_retransmit(&asoc->outqueue, cmd->obj.transport,
net/sctp/sm_sideeffect.c
151
ctsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
net/sctp/sm_sideeffect.c
1511
sctp_do_ecn_ce_work(asoc, cmd->obj.u32);
net/sctp/sm_sideeffect.c
1516
new_obj = sctp_do_ecn_ecne_work(asoc, cmd->obj.u32,
net/sctp/sm_sideeffect.c
152
max_tsn_seen = sctp_tsnmap_get_max_tsn_seen(&asoc->peer.tsn_map);
net/sctp/sm_sideeffect.c
1525
sctp_do_ecn_cwr_work(asoc, cmd->obj.u32);
net/sctp/sm_sideeffect.c
1529
sctp_cmd_setup_t2(commands, asoc, cmd->obj.chunk);
net/sctp/sm_sideeffect.c
1533
timer = &asoc->timers[cmd->obj.to];
net/sctp/sm_sideeffect.c
1540
timer = &asoc->timers[cmd->obj.to];
net/sctp/sm_sideeffect.c
1541
timeout = asoc->timeouts[cmd->obj.to];
net/sctp/sm_sideeffect.c
1553
sctp_association_hold(asoc);
net/sctp/sm_sideeffect.c
1558
timer = &asoc->timers[cmd->obj.to];
net/sctp/sm_sideeffect.c
1559
timeout = asoc->timeouts[cmd->obj.to];
net/sctp/sm_sideeffect.c
1561
sctp_association_hold(asoc);
net/sctp/sm_sideeffect.c
1565
timer = &asoc->timers[cmd->obj.to];
net/sctp/sm_sideeffect.c
1567
sctp_association_put(asoc);
net/sctp/sm_sideeffect.c
1572
t = sctp_assoc_choose_alter_transport(asoc,
net/sctp/sm_sideeffect.c
1573
asoc->init_last_sent_to);
net/sctp/sm_sideeffect.c
1574
asoc->init_last_sent_to = t;
net/sctp/sm_sideeffect.c
1578
sctp_assoc_set_primary(asoc, t);
net/sctp/sm_sideeffect.c
1588
sctp_cmd_t1_timer_update(asoc,
net/sctp/sm_sideeffect.c
1603
sctp_cmd_t1_timer_update(asoc,
net/sctp/sm_sideeffect.c
1610
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/sm_sideeffect.c
1612
sctp_retransmit_mark(&asoc->outqueue, t,
net/sctp/sm_sideeffect.c
1622
sctp_cmd_init_failed(commands, asoc, cmd->obj.u16);
net/sctp/sm_sideeffect.c
1626
sctp_cmd_assoc_failed(commands, asoc, event_type,
net/sctp/sm_sideeffect.c
1631
asoc->init_err_counter++;
net/sctp/sm_sideeffect.c
1635
asoc->init_err_counter = 0;
net/sctp/sm_sideeffect.c
1636
asoc->init_cycle = 0;
net/sctp/sm_sideeffect.c
1637
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/sm_sideeffect.c
1644
sctp_tsnmap_mark_dup(&asoc->peer.tsn_map,
net/sctp/sm_sideeffect.c
165
asoc->peer.sack_needed = 1;
net/sctp/sm_sideeffect.c
1654
sctp_do_8_2_transport_strike(commands, asoc,
net/sctp/sm_sideeffect.c
1665
sctp_do_8_2_transport_strike(commands, asoc,
net/sctp/sm_sideeffect.c
1672
sctp_cmd_transport_on(commands, asoc, t, chunk);
net/sctp/sm_sideeffect.c
1676
sctp_cmd_hb_timers_start(commands, asoc);
net/sctp/sm_sideeffect.c
1685
sctp_cmd_hb_timers_stop(commands, asoc);
net/sctp/sm_sideeffect.c
1700
sackh.a_rwnd = htonl(asoc->peer.rwnd +
net/sctp/sm_sideeffect.c
1701
asoc->outqueue.outstanding_bytes);
net/sctp/sm_sideeffect.c
1715
if (asoc) {
net/sctp/sm_sideeffect.c
1716
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
1727
asoc->stream.si->start_pd(&asoc->ulpq, GFP_ATOMIC);
net/sctp/sm_sideeffect.c
1731
asoc->stream.si->renege_events(&asoc->ulpq,
net/sctp/sm_sideeffect.c
1737
sctp_cmd_setup_t4(commands, asoc, cmd->obj.chunk);
net/sctp/sm_sideeffect.c
1741
sctp_cmd_process_operr(commands, asoc, chunk);
net/sctp/sm_sideeffect.c
1744
asoc->peer.i.init_tag = 0;
net/sctp/sm_sideeffect.c
1747
sctp_cmd_del_non_primary(asoc);
net/sctp/sm_sideeffect.c
175
if (!asoc->peer.sack_needed) {
net/sctp/sm_sideeffect.c
1750
sctp_cmd_t3_rtx_timers_stop(commands, asoc);
net/sctp/sm_sideeffect.c
1753
t = asoc->peer.retran_path;
net/sctp/sm_sideeffect.c
1754
asoc->peer.retran_path = asoc->peer.primary_path;
net/sctp/sm_sideeffect.c
1755
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
1757
asoc->peer.retran_path = t;
net/sctp/sm_sideeffect.c
176
asoc->peer.sack_cnt++;
net/sctp/sm_sideeffect.c
1760
sctp_cmd_set_sk_err(asoc, cmd->obj.error);
net/sctp/sm_sideeffect.c
1763
sctp_cmd_assoc_change(commands, asoc,
net/sctp/sm_sideeffect.c
1767
sctp_cmd_adaptation_ind(commands, asoc);
net/sctp/sm_sideeffect.c
1770
sctp_cmd_peer_no_auth(commands, asoc);
net/sctp/sm_sideeffect.c
1774
error = sctp_auth_asoc_init_active_key(asoc,
net/sctp/sm_sideeffect.c
1778
asoc->peer.i.init_tag = cmd->obj.u32;
net/sctp/sm_sideeffect.c
1781
if (!asoc->outqueue.cork) {
net/sctp/sm_sideeffect.c
1782
sctp_outq_cork(&asoc->outqueue);
net/sctp/sm_sideeffect.c
1785
sctp_cmd_send_msg(asoc, cmd->obj.msg, gfp);
net/sctp/sm_sideeffect.c
1788
sctp_asconf_queue_teardown(asoc);
net/sctp/sm_sideeffect.c
1792
if (asoc && local_cork) {
net/sctp/sm_sideeffect.c
1793
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
1796
asoc = cmd->obj.asoc;
net/sctp/sm_sideeffect.c
1820
if (asoc && SCTP_EVENT_T_CHUNK == event_type && chunk) {
net/sctp/sm_sideeffect.c
1822
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
1824
sctp_outq_uncork(&asoc->outqueue, gfp);
net/sctp/sm_sideeffect.c
185
if (asoc->peer.sack_cnt >= trans->sackfreq - 1)
net/sctp/sm_sideeffect.c
186
asoc->peer.sack_needed = 1;
net/sctp/sm_sideeffect.c
188
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] =
net/sctp/sm_sideeffect.c
192
if (asoc->peer.sack_cnt >= asoc->sackfreq - 1)
net/sctp/sm_sideeffect.c
193
asoc->peer.sack_needed = 1;
net/sctp/sm_sideeffect.c
195
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] =
net/sctp/sm_sideeffect.c
196
asoc->sackdelay;
net/sctp/sm_sideeffect.c
203
__u32 old_a_rwnd = asoc->a_rwnd;
net/sctp/sm_sideeffect.c
205
asoc->a_rwnd = asoc->rwnd;
net/sctp/sm_sideeffect.c
206
sack = sctp_make_sack(asoc);
net/sctp/sm_sideeffect.c
208
asoc->a_rwnd = old_a_rwnd;
net/sctp/sm_sideeffect.c
212
asoc->peer.sack_needed = 0;
net/sctp/sm_sideeffect.c
213
asoc->peer.sack_cnt = 0;
net/sctp/sm_sideeffect.c
235
struct sctp_association *asoc = transport->asoc;
net/sctp/sm_sideeffect.c
236
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
255
asoc->state,
net/sctp/sm_sideeffect.c
256
asoc->ep, asoc,
net/sctp/sm_sideeffect.c
270
static void sctp_generate_timeout_event(struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
273
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
283
if (!mod_timer(&asoc->timers[timeout_type], jiffies + (HZ/20)))
net/sctp/sm_sideeffect.c
284
sctp_association_hold(asoc);
net/sctp/sm_sideeffect.c
291
if (asoc->base.dead)
net/sctp/sm_sideeffect.c
297
asoc->state, asoc->ep, asoc,
net/sctp/sm_sideeffect.c
305
sctp_association_put(asoc);
net/sctp/sm_sideeffect.c
310
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
311
timer_container_of(asoc, t,
net/sctp/sm_sideeffect.c
314
sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T1_COOKIE);
net/sctp/sm_sideeffect.c
319
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
320
timer_container_of(asoc, t,
net/sctp/sm_sideeffect.c
323
sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T1_INIT);
net/sctp/sm_sideeffect.c
328
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
329
timer_container_of(asoc, t,
net/sctp/sm_sideeffect.c
332
sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T2_SHUTDOWN);
net/sctp/sm_sideeffect.c
337
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
338
timer_container_of(asoc, t, timers[SCTP_EVENT_TIMEOUT_T4_RTO]);
net/sctp/sm_sideeffect.c
340
sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_T4_RTO);
net/sctp/sm_sideeffect.c
345
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
346
timer_container_of(asoc, t,
net/sctp/sm_sideeffect.c
349
sctp_generate_timeout_event(asoc,
net/sctp/sm_sideeffect.c
356
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
357
timer_container_of(asoc, t,
net/sctp/sm_sideeffect.c
360
sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_AUTOCLOSE);
net/sctp/sm_sideeffect.c
370
struct sctp_association *asoc = transport->asoc;
net/sctp/sm_sideeffect.c
371
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
398
asoc->state, asoc->ep, asoc,
net/sctp/sm_sideeffect.c
416
struct sctp_association *asoc = transport->asoc;
net/sctp/sm_sideeffect.c
417
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
434
if (asoc->base.dead)
net/sctp/sm_sideeffect.c
439
asoc->state, asoc->ep, asoc, transport, GFP_ATOMIC);
net/sctp/sm_sideeffect.c
44
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
451
struct sctp_association *asoc = transport->asoc;
net/sctp/sm_sideeffect.c
452
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
467
if (!asoc->strreset_chunk)
net/sctp/sm_sideeffect.c
472
asoc->state, asoc->ep, asoc,
net/sctp/sm_sideeffect.c
488
struct sctp_association *asoc = transport->asoc;
net/sctp/sm_sideeffect.c
489
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
505
asoc->state, asoc->ep, asoc,
net/sctp/sm_sideeffect.c
519
struct sctp_association *asoc =
net/sctp/sm_sideeffect.c
520
timer_container_of(asoc, t, timers[SCTP_EVENT_TIMEOUT_SACK]);
net/sctp/sm_sideeffect.c
522
sctp_generate_timeout_event(asoc, SCTP_EVENT_TIMEOUT_SACK);
net/sctp/sm_sideeffect.c
53
struct sctp_association **asoc,
net/sctp/sm_sideeffect.c
557
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
572
asoc->overall_error_count++;
net/sctp/sm_sideeffect.c
577
asoc->overall_error_count++;
net/sctp/sm_sideeffect.c
587
if (asoc->base.net->sctp.pf_enable &&
net/sctp/sm_sideeffect.c
592
sctp_assoc_control_transport(asoc, transport,
net/sctp/sm_sideeffect.c
603
__func__, asoc, &transport->ipaddr.sa);
net/sctp/sm_sideeffect.c
605
sctp_assoc_control_transport(asoc, transport,
net/sctp/sm_sideeffect.c
611
asoc->peer.primary_path == transport &&
net/sctp/sm_sideeffect.c
612
asoc->peer.active_path != transport)
net/sctp/sm_sideeffect.c
613
sctp_assoc_set_primary(asoc, asoc->peer.active_path);
net/sctp/sm_sideeffect.c
625
transport->rto = min((transport->rto * 2), transport->asoc->rto_max);
net/sctp/sm_sideeffect.c
626
sctp_max_rto(asoc, transport);
net/sctp/sm_sideeffect.c
632
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
637
event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_CANT_STR_ASSOC,
net/sctp/sm_sideeffect.c
64
static void sctp_do_ecn_ce_work(struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
649
asoc->outqueue.error = error;
net/sctp/sm_sideeffect.c
655
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
665
asoc->stream.si->abort_pd(&asoc->ulpq, GFP_ATOMIC);
net/sctp/sm_sideeffect.c
668
event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST,
net/sctp/sm_sideeffect.c
672
event = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_LOST,
net/sctp/sm_sideeffect.c
679
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_sideeffect.c
680
abort = sctp_make_violation_max_retrans(asoc, chunk);
net/sctp/sm_sideeffect.c
69
asoc->last_ecne_tsn = lowest_tsn;
net/sctp/sm_sideeffect.c
690
asoc->outqueue.error = error;
net/sctp/sm_sideeffect.c
70
asoc->need_ecne = 1;
net/sctp/sm_sideeffect.c
700
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
712
if (!sctp_process_init(asoc, chunk, sctp_source(chunk), peer_init, gfp))
net/sctp/sm_sideeffect.c
722
struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
730
list_for_each_entry(t, &asoc->peer.transport_addr_list, transports)
net/sctp/sm_sideeffect.c
735
struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
741
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/sm_sideeffect.c
750
struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
754
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/sm_sideeffect.c
764
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
785
if (t->asoc->state < SCTP_STATE_SHUTDOWN_PENDING)
net/sctp/sm_sideeffect.c
786
t->asoc->overall_error_count = 0;
net/sctp/sm_sideeffect.c
798
sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP,
net/sctp/sm_sideeffect.c
803
sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP,
net/sctp/sm_sideeffect.c
828
if (was_unconfirmed && asoc->peer.transport_count == 1)
net/sctp/sm_sideeffect.c
835
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
840
if (sctp_outq_sack(&asoc->outqueue, chunk)) {
net/sctp/sm_sideeffect.c
842
err = sctp_do_sm(asoc->base.net, SCTP_EVENT_T_OTHER,
net/sctp/sm_sideeffect.c
844
asoc->state, asoc->ep, asoc, NULL,
net/sctp/sm_sideeffect.c
85
static struct sctp_chunk *sctp_do_ecn_ecne_work(struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
855
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
863
t = sctp_assoc_choose_alter_transport(asoc,
net/sctp/sm_sideeffect.c
864
asoc->shutdown_last_sent_to);
net/sctp/sm_sideeffect.c
867
asoc->shutdown_last_sent_to = t;
net/sctp/sm_sideeffect.c
868
asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = t->rto;
net/sctp/sm_sideeffect.c
873
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
876
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
878
asoc->state = state;
net/sctp/sm_sideeffect.c
880
pr_debug("%s: asoc:%p[%s]\n", __func__, asoc, sctp_state_tbl[state]);
net/sctp/sm_sideeffect.c
886
if (sctp_state(asoc, ESTABLISHED) && sctp_sstate(sk, CLOSED))
net/sctp/sm_sideeffect.c
890
if (sctp_state(asoc, SHUTDOWN_RECEIVED) &&
net/sctp/sm_sideeffect.c
897
if (sctp_state(asoc, COOKIE_WAIT)) {
net/sctp/sm_sideeffect.c
901
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] =
net/sctp/sm_sideeffect.c
902
asoc->rto_initial;
net/sctp/sm_sideeffect.c
903
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] =
net/sctp/sm_sideeffect.c
904
asoc->rto_initial;
net/sctp/sm_sideeffect.c
907
if (sctp_state(asoc, ESTABLISHED)) {
net/sctp/sm_sideeffect.c
908
kfree(asoc->peer.cookie);
net/sctp/sm_sideeffect.c
909
asoc->peer.cookie = NULL;
net/sctp/sm_sideeffect.c
912
if (sctp_state(asoc, ESTABLISHED) ||
net/sctp/sm_sideeffect.c
913
sctp_state(asoc, CLOSED) ||
net/sctp/sm_sideeffect.c
914
sctp_state(asoc, SHUTDOWN_RECEIVED)) {
net/sctp/sm_sideeffect.c
918
if (waitqueue_active(&asoc->wait))
net/sctp/sm_sideeffect.c
919
wake_up_interruptible(&asoc->wait);
net/sctp/sm_sideeffect.c
931
if (sctp_state(asoc, SHUTDOWN_PENDING) &&
net/sctp/sm_sideeffect.c
932
!sctp_outq_is_empty(&asoc->outqueue))
net/sctp/sm_sideeffect.c
933
sctp_outq_uncork(&asoc->outqueue, GFP_ATOMIC);
net/sctp/sm_sideeffect.c
938
struct sctp_association *asoc)
net/sctp/sm_sideeffect.c
940
struct sock *sk = asoc->base.sk;
net/sctp/sm_sideeffect.c
947
(!asoc->temp) && (sk->sk_shutdown != SHUTDOWN_MASK))
net/sctp/sm_sideeffect.c
950
sctp_association_free(asoc);
net/sctp/sm_sideeffect.c
960
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
965
t = sctp_assoc_choose_alter_transport(asoc, chunk->transport);
net/sctp/sm_sideeffect.c
966
asoc->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = t->rto;
net/sctp/sm_sideeffect.c
972
struct sctp_association *asoc,
net/sctp/sm_sideeffect.c
981
ev = sctp_ulpevent_make_remote_error(asoc, chunk, 0,
net/sctp/sm_sideeffect.c
986
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/sm_statefuns.c
1000
if (!asoc->peer.auth_capable) {
net/sctp/sm_statefuns.c
1001
ev = sctp_ulpevent_make_authkey(asoc, 0, SCTP_AUTH_NO_AUTH,
net/sctp/sm_statefuns.c
1017
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1026
reply = sctp_make_heartbeat(asoc, transport, 0);
net/sctp/sm_statefuns.c
1043
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
105
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1050
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
1070
sctp_sf_heartbeat(ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1091
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1098
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
1109
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/sm_statefuns.c
111
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1111
SCTP_CHUNK(asoc->strreset_chunk));
net/sctp/sm_statefuns.c
1120
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1132
reply = sctp_make_heartbeat(asoc, transport, transport->pl.probe_size);
net/sctp/sm_statefuns.c
1168
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1177
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
1178
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1183
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1195
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
120
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1201
reply = sctp_make_heartbeat_ack(asoc, chunk, param_hdr, paylen);
net/sctp/sm_statefuns.c
1242
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1253
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
1254
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1259
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1268
link = sctp_assoc_lookup_paddr(asoc, &from_addr);
net/sctp/sm_statefuns.c
1275
asoc,
net/sctp/sm_statefuns.c
128
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1280
asoc,
net/sctp/sm_statefuns.c
1298
return sctp_sf_send_probe(net, ep, asoc, type, link, commands);
net/sctp/sm_statefuns.c
136
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1391
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1412
if (!list_has_sctp_addr(&asoc->peer.transport_addr_list,
net/sctp/sm_statefuns.c
1431
const struct sctp_association *asoc)
net/sctp/sm_statefuns.c
1433
switch (asoc->state) {
net/sctp/sm_statefuns.c
1438
new_asoc->c.my_vtag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1439
new_asoc->c.my_ttag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
144
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1444
new_asoc->c.my_vtag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1445
new_asoc->c.my_ttag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1446
new_asoc->c.peer_ttag = asoc->c.peer_vtag;
net/sctp/sm_statefuns.c
1453
new_asoc->c.my_ttag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1454
new_asoc->c.peer_ttag = asoc->c.peer_vtag;
net/sctp/sm_statefuns.c
1462
new_asoc->rwnd = asoc->rwnd;
net/sctp/sm_statefuns.c
1463
new_asoc->c.sinit_num_ostreams = asoc->c.sinit_num_ostreams;
net/sctp/sm_statefuns.c
1464
new_asoc->c.sinit_max_instreams = asoc->c.sinit_max_instreams;
net/sctp/sm_statefuns.c
1465
new_asoc->c.initial_tsn = asoc->c.initial_tsn;
net/sctp/sm_statefuns.c
1478
const struct sctp_association *asoc)
net/sctp/sm_statefuns.c
1481
if ((asoc->c.my_vtag != new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1482
(asoc->c.peer_vtag != new_asoc->c.peer_vtag) &&
net/sctp/sm_statefuns.c
1483
(asoc->c.my_vtag == new_asoc->c.my_ttag) &&
net/sctp/sm_statefuns.c
1484
(asoc->c.peer_vtag == new_asoc->c.peer_ttag))
net/sctp/sm_statefuns.c
1488
if ((asoc->c.my_vtag == new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1489
((asoc->c.peer_vtag != new_asoc->c.peer_vtag) ||
net/sctp/sm_statefuns.c
1490
(0 == asoc->c.peer_vtag))) {
net/sctp/sm_statefuns.c
1495
if ((asoc->c.my_vtag == new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1496
(asoc->c.peer_vtag == new_asoc->c.peer_vtag))
net/sctp/sm_statefuns.c
150
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1500
if ((asoc->c.my_vtag != new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1501
(asoc->c.peer_vtag == new_asoc->c.peer_vtag) &&
net/sctp/sm_statefuns.c
1516
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1538
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1542
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1548
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1551
return sctp_sf_new_encap_port(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
156
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1561
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
net/sctp/sm_statefuns.c
1568
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
net/sctp/sm_statefuns.c
1584
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1603
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1624
if (!sctp_state(asoc, COOKIE_WAIT)) {
net/sctp/sm_statefuns.c
1625
if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk,
net/sctp/sm_statefuns.c
163
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1632
sctp_tietags_populate(new_asoc, asoc);
net/sctp/sm_statefuns.c
1735
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1743
return sctp_sf_do_unexpected_init(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1790
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1798
return sctp_sf_do_unexpected_init(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1814
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1823
return sctp_sf_ootb(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1825
return sctp_sf_discard_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1828
static int sctp_sf_do_assoc_update(struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1832
struct net *net = asoc->base.net;
net/sctp/sm_statefuns.c
1835
if (!sctp_assoc_update(asoc, new))
net/sctp/sm_statefuns.c
1838
abort = sctp_make_abort(asoc, NULL, sizeof(struct sctp_errhdr));
net/sctp/sm_statefuns.c
1860
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1889
if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, commands))
net/sctp/sm_statefuns.c
1898
if (sctp_state(asoc, SHUTDOWN_ACK_SENT)) {
net/sctp/sm_statefuns.c
1899
disposition = __sctp_sf_do_9_2_reshutack(net, ep, asoc,
net/sctp/sm_statefuns.c
1905
err = sctp_make_op_error(asoc, chunk,
net/sctp/sm_statefuns.c
1931
if (sctp_sf_do_assoc_update((struct sctp_association *)asoc, new_asoc, commands))
net/sctp/sm_statefuns.c
1934
repl = sctp_make_cookie_ack(asoc, chunk);
net/sctp/sm_statefuns.c
1939
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_RESTART, 0,
net/sctp/sm_statefuns.c
1940
asoc->c.sinit_num_ostreams,
net/sctp/sm_statefuns.c
1941
asoc->c.sinit_max_instreams,
net/sctp/sm_statefuns.c
1947
if ((sctp_state(asoc, SHUTDOWN_PENDING) ||
net/sctp/sm_statefuns.c
1948
sctp_state(asoc, SHUTDOWN_SENT)) &&
net/sctp/sm_statefuns.c
1949
(sctp_sstate(asoc->base.sk, CLOSING) ||
net/sctp/sm_statefuns.c
1950
sock_flag(asoc->base.sk, SOCK_DEAD))) {
net/sctp/sm_statefuns.c
1956
return sctp_sf_do_9_2_start_shutdown(net, ep, asoc,
net/sctp/sm_statefuns.c
1983
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2007
if (asoc->state < SCTP_STATE_ESTABLISHED)
net/sctp/sm_statefuns.c
2012
if (sctp_sf_do_assoc_update((struct sctp_association *)asoc, new_asoc, commands))
net/sctp/sm_statefuns.c
2015
repl = sctp_make_cookie_ack(asoc, chunk);
net/sctp/sm_statefuns.c
2043
if (asoc->peer.adaptation_ind)
net/sctp/sm_statefuns.c
2046
if (!asoc->peer.auth_capable)
net/sctp/sm_statefuns.c
2067
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2090
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2105
if (!sctp_auth_chunk_verify(net, chunk, asoc))
net/sctp/sm_statefuns.c
2109
if (asoc->state < SCTP_STATE_ESTABLISHED) {
net/sctp/sm_statefuns.c
2125
ev = sctp_ulpevent_make_assoc_change(asoc, 0,
net/sctp/sm_statefuns.c
2127
asoc->c.sinit_num_ostreams,
net/sctp/sm_statefuns.c
2128
asoc->c.sinit_max_instreams,
net/sctp/sm_statefuns.c
2138
if (asoc->peer.adaptation_ind) {
net/sctp/sm_statefuns.c
2139
ai_ev = sctp_ulpevent_make_adaptation_indication(asoc,
net/sctp/sm_statefuns.c
2146
if (!asoc->peer.auth_capable) {
net/sctp/sm_statefuns.c
2147
auth_ev = sctp_ulpevent_make_authkey(asoc, 0,
net/sctp/sm_statefuns.c
2155
repl = sctp_make_cookie_ack(asoc, chunk);
net/sctp/sm_statefuns.c
2202
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2220
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2221
asoc = NULL;
net/sctp/sm_statefuns.c
2222
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2238
new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error,
net/sctp/sm_statefuns.c
2256
sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2258
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2261
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2271
action = sctp_tietags_compare(new_asoc, asoc);
net/sctp/sm_statefuns.c
2281
if (security_sctp_assoc_request((struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
2284
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2291
retval = sctp_sf_do_dupcook_a(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2296
retval = sctp_sf_do_dupcook_b(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2301
retval = sctp_sf_do_dupcook_c(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2306
retval = sctp_sf_do_dupcook_d(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2311
retval = sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2323
SCTP_ASOC((struct sctp_association *)asoc));
net/sctp/sm_statefuns.c
2339
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2346
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2347
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
235
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2360
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2368
sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest))
net/sctp/sm_statefuns.c
2369
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2372
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2374
return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2385
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2392
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2393
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2406
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2414
sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest))
net/sctp/sm_statefuns.c
2415
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2418
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
242
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2428
return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
243
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2439
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2447
return sctp_sf_shutdown_sent_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2467
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2475
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2476
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2482
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2492
return sctp_sf_do_5_2_6_stale(net, ep, asoc, type,
net/sctp/sm_statefuns.c
2501
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
251
return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2532
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2537
int attempts = asoc->init_err_counter + 1;
net/sctp/sm_statefuns.c
2544
if (attempts > asoc->max_init_attempts) {
net/sctp/sm_statefuns.c
255
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2576
bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
net/sctp/sm_statefuns.c
2577
reply = sctp_make_init(asoc, bp, GFP_ATOMIC, sizeof(bht));
net/sctp/sm_statefuns.c
2599
SCTP_TRANSPORT(asoc->peer.primary_path));
net/sctp/sm_statefuns.c
265
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP,
net/sctp/sm_statefuns.c
2655
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2662
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2663
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2676
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2684
sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest))
net/sctp/sm_statefuns.c
2685
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2688
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2690
return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2696
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2727
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2736
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2737
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2750
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2757
return sctp_stop_t1_and_abort(net, commands, error, ECONNREFUSED, asoc,
net/sctp/sm_statefuns.c
2767
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2773
ENOPROTOOPT, asoc,
net/sctp/sm_statefuns.c
2783
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2791
return sctp_sf_cookie_wait_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2803
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2857
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2868
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2869
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2873
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2882
if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
net/sctp/sm_statefuns.c
2884
asoc->ctsn_ack_point);
net/sctp/sm_statefuns.c
2893
if (!TSN_lt(ctsn, asoc->next_tsn))
net/sctp/sm_statefuns.c
2894
return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2900
ev = sctp_ulpevent_make_shutdown_event(asoc, 0, GFP_ATOMIC);
net/sctp/sm_statefuns.c
2917
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/sm_statefuns.c
2918
disposition = sctp_sf_do_9_2_shutdown_ack(net, ep, asoc, type,
net/sctp/sm_statefuns.c
2947
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2956
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2957
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2961
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2967
if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
net/sctp/sm_statefuns.c
2969
asoc->ctsn_ack_point);
net/sctp/sm_statefuns.c
2978
if (!TSN_lt(ctsn, asoc->next_tsn))
net/sctp/sm_statefuns.c
2979
return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3000
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3009
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3016
reply = sctp_make_shutdown_ack(asoc, chunk);
net/sctp/sm_statefuns.c
3038
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3045
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3048
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3051
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3053
return __sctp_sf_do_9_2_reshutack(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3083
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3092
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3093
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3096
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3105
if (TSN_lte(asoc->last_ecne_tsn, lowest_tsn)) {
net/sctp/sm_statefuns.c
3139
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3146
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3147
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3150
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3195
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
320
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3204
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
3207
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3210
if (!sctp_chunk_length_valid(chunk, sctp_datachk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
3211
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3214
error = sctp_eat_data(asoc, chunk, commands);
net/sctp/sm_statefuns.c
3229
return sctp_sf_abort_violation(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
3231
sctp_datahdr_len(&asoc->stream));
net/sctp/sm_statefuns.c
3239
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) {
net/sctp/sm_statefuns.c
3316
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3324
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
3327
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3330
if (!sctp_chunk_length_valid(chunk, sctp_datachk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
3331
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3334
error = sctp_eat_data(asoc, chunk, commands);
net/sctp/sm_statefuns.c
3345
return sctp_sf_abort_violation(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
3347
sctp_datahdr_len(&asoc->stream));
net/sctp/sm_statefuns.c
3407
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
341
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3416
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3417
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3421
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3428
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3436
if (TSN_lte(asoc->next_tsn, ctsn))
net/sctp/sm_statefuns.c
3437
return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3439
trace_sctp_probe(ep, asoc, chunk);
net/sctp/sm_statefuns.c
3447
if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
net/sctp/sm_statefuns.c
3449
asoc->ctsn_ack_point);
net/sctp/sm_statefuns.c
3484
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
349
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3493
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
3500
abort = sctp_make_abort(asoc, chunk, 0);
net/sctp/sm_statefuns.c
3519
sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3531
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3540
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
3544
abort = sctp_make_new_encap_port(asoc, chunk);
net/sctp/sm_statefuns.c
3559
sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
356
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3573
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3581
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3582
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3586
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3590
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3611
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3620
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3621
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3625
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
363
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3632
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP,
net/sctp/sm_statefuns.c
3638
reply = sctp_make_shutdown_complete(asoc, chunk);
net/sctp/sm_statefuns.c
3694
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3708
if (asoc && !sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3709
asoc = NULL;
net/sctp/sm_statefuns.c
3715
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
372
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3721
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3736
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3759
return sctp_sf_shut_8_4_5(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
376
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
net/sctp/sm_statefuns.c
3761
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3763
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3790
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3799
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
3806
shut = sctp_make_shutdown_complete(asoc, chunk);
net/sctp/sm_statefuns.c
383
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
net/sctp/sm_statefuns.c
3830
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3846
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3853
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3854
asoc = NULL;
net/sctp/sm_statefuns.c
3858
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3874
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3885
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
3888
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3893
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3902
if (!asoc->peer.asconf_capable ||
net/sctp/sm_statefuns.c
3904
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3910
if (!sctp_verify_asconf(asoc, chunk, true, &err_param))
net/sctp/sm_statefuns.c
3911
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3918
if (serial == asoc->peer.addip_serial + 1) {
net/sctp/sm_statefuns.c
3923
sctp_assoc_clean_asconf_ack_cache(asoc);
net/sctp/sm_statefuns.c
3934
asoc, chunk);
net/sctp/sm_statefuns.c
3937
} else if (serial < asoc->peer.addip_serial + 1) {
net/sctp/sm_statefuns.c
3950
asconf_ack = sctp_assoc_lookup_asconf_ack(asoc, hdr->serial);
net/sctp/sm_statefuns.c
3977
if (asoc->new_transport) {
net/sctp/sm_statefuns.c
3978
sctp_sf_heartbeat(ep, asoc, type, asoc->new_transport, commands);
net/sctp/sm_statefuns.c
3979
((struct sctp_association *)asoc)->new_transport = NULL;
net/sctp/sm_statefuns.c
3988
struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3995
if (list_empty(&asoc->addip_chunk_list))
net/sctp/sm_statefuns.c
3998
entry = asoc->addip_chunk_list.next;
net/sctp/sm_statefuns.c
400
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4003
asoc->addip_last_asconf = asconf;
net/sctp/sm_statefuns.c
4005
return sctp_sf_do_prm_asconf(net, ep, asoc, type, asconf, commands);
net/sctp/sm_statefuns.c
4015
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4020
struct sctp_chunk *last_asconf = asoc->addip_last_asconf;
net/sctp/sm_statefuns.c
4027
if (!sctp_vtag_verify(asconf_ack, asoc)) {
net/sctp/sm_statefuns.c
4030
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4036
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4045
if (!asoc->peer.asconf_capable ||
net/sctp/sm_statefuns.c
4047
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4053
if (!sctp_verify_asconf(asoc, asconf_ack, false, &err_param))
net/sctp/sm_statefuns.c
4054
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4061
sent_serial = asoc->addip_serial - 1;
net/sctp/sm_statefuns.c
4071
!(asoc->addip_last_asconf)) {
net/sctp/sm_statefuns.c
4072
abort = sctp_make_abort(asoc, asconf_ack,
net/sctp/sm_statefuns.c
4094
if ((rcvd_serial == sent_serial) && asoc->addip_last_asconf) {
net/sctp/sm_statefuns.c
4098
if (!sctp_process_asconf_ack((struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
4101
(struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
4104
abort = sctp_make_abort(asoc, asconf_ack,
net/sctp/sm_statefuns.c
4130
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4140
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4143
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4148
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4151
if (!sctp_verify_reconf(asoc, chunk, &err_param))
net/sctp/sm_statefuns.c
4152
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4162
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4165
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4168
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4171
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4174
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4177
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
418
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4207
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4217
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4220
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4223
if (!asoc->peer.prsctp_capable)
net/sctp/sm_statefuns.c
4224
return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4227
if (!sctp_chunk_length_valid(chunk, sctp_ftsnchk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
4228
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4243
if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
net/sctp/sm_statefuns.c
4246
if (!asoc->stream.si->validate_ftsn(chunk))
net/sctp/sm_statefuns.c
4250
if (len > sctp_ftsnhdr_len(&asoc->stream))
net/sctp/sm_statefuns.c
4255
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) {
net/sctp/sm_statefuns.c
4274
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4284
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4287
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4290
if (!asoc->peer.prsctp_capable)
net/sctp/sm_statefuns.c
4291
return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4294
if (!sctp_chunk_length_valid(chunk, sctp_ftsnchk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
4295
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4310
if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
net/sctp/sm_statefuns.c
4313
if (!asoc->stream.si->validate_ftsn(chunk))
net/sctp/sm_statefuns.c
4317
if (len > sctp_ftsnhdr_len(&asoc->stream))
net/sctp/sm_statefuns.c
4360
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4378
if (!sctp_auth_asoc_verify_hmac_id(asoc, auth_hdr->hmac_id))
net/sctp/sm_statefuns.c
4385
if (key_id != asoc->active_key_id) {
net/sctp/sm_statefuns.c
4386
sh_key = sctp_auth_get_shkey(asoc, key_id);
net/sctp/sm_statefuns.c
4416
sctp_auth_calculate_hmac(asoc, chunk->skb,
net/sctp/sm_statefuns.c
4436
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4446
if (!asoc->peer.auth_capable)
net/sctp/sm_statefuns.c
4447
return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4449
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4452
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4457
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4461
error = sctp_sf_authenticate(asoc, chunk);
net/sctp/sm_statefuns.c
4467
err_chunk = sctp_make_op_error(asoc, chunk,
net/sctp/sm_statefuns.c
4478
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4481
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4491
if (asoc->active_key_id != ntohs(auth_hdr->shkey_id)) {
net/sctp/sm_statefuns.c
4494
ev = sctp_ulpevent_make_authkey(asoc, ntohs(auth_hdr->shkey_id),
net/sctp/sm_statefuns.c
4532
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4543
if (!sctp_vtag_verify(unk_chunk, asoc))
net/sctp/sm_statefuns.c
4544
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4551
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4557
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4561
err_chunk = sctp_make_op_error(asoc, unk_chunk,
net/sctp/sm_statefuns.c
4571
sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4579
err_chunk = sctp_make_op_error(asoc, unk_chunk,
net/sctp/sm_statefuns.c
4612
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4619
if (asoc && !sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
4620
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4627
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4655
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4682
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4689
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
4690
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4694
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4706
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4727
if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc))
net/sctp/sm_statefuns.c
4731
abort = sctp_make_abort_violation(asoc, chunk, payload, paylen);
net/sctp/sm_statefuns.c
4735
if (asoc) {
net/sctp/sm_statefuns.c
4738
!asoc->peer.i.init_tag) {
net/sctp/sm_statefuns.c
4756
if (asoc->state <= SCTP_STATE_COOKIE_ECHOED) {
net/sctp/sm_statefuns.c
4771
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
4792
sctp_sf_pdiscard(net, ep, asoc, SCTP_ST_CHUNK(0), arg, commands);
net/sctp/sm_statefuns.c
4823
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4830
return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str,
net/sctp/sm_statefuns.c
4843
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4852
if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc))
net/sctp/sm_statefuns.c
4856
abort = sctp_make_violation_paramlen(asoc, chunk, param);
net/sctp/sm_statefuns.c
4871
sctp_sf_pdiscard(net, ep, asoc, SCTP_ST_CHUNK(0), arg, commands);
net/sctp/sm_statefuns.c
4886
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4893
return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str,
net/sctp/sm_statefuns.c
4906
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4913
return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str,
net/sctp/sm_statefuns.c
4978
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5001
repl = sctp_make_init(asoc, &asoc->base.bind_addr, GFP_ATOMIC, 0);
net/sctp/sm_statefuns.c
5012
my_asoc = (struct sctp_association *)asoc;
net/sctp/sm_statefuns.c
5090
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5130
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5149
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/sm_statefuns.c
5150
disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type,
net/sctp/sm_statefuns.c
5187
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
520
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5224
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5239
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5266
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
530
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
5301
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5309
return sctp_sf_cookie_wait_prm_shutdown(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
531
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5329
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5378
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
538
return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5386
return sctp_sf_cookie_wait_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5404
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5413
return sctp_sf_do_9_1_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
542
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
5431
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5444
return sctp_sf_do_9_1_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5462
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5470
return sctp_sf_shutdown_sent_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
549
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
net/sctp/sm_statefuns.c
5498
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
55
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5503
if (SCTP_DISPOSITION_NOMEM == sctp_sf_heartbeat(ep, asoc, type,
net/sctp/sm_statefuns.c
5530
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5547
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5566
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5590
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5597
event = sctp_ulpevent_make_sender_dry_event(asoc, GFP_ATOMIC);
net/sctp/sm_statefuns.c
561
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
net/sctp/sm_statefuns.c
5622
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5634
reply = sctp_make_shutdown(asoc, arg);
net/sctp/sm_statefuns.c
5654
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE])
net/sctp/sm_statefuns.c
5692
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5708
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
5709
return sctp_sf_pdiscard(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
5715
return sctp_sf_violation_chunklen(net, ep, asoc, type,
net/sctp/sm_statefuns.c
5722
reply = sctp_make_shutdown_ack(asoc, chunk);
net/sctp/sm_statefuns.c
5735
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE])
net/sctp/sm_statefuns.c
5765
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5793
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
58
static int sctp_eat_data(const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5802
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
5803
if (asoc->peer.zero_window_announced &&
net/sctp/sm_statefuns.c
5804
asoc->state == SCTP_STATE_SHUTDOWN_PENDING) {
net/sctp/sm_statefuns.c
588
if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc))
net/sctp/sm_statefuns.c
5881
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
589
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5913
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5918
int attempts = asoc->init_err_counter + 1;
net/sctp/sm_statefuns.c
5926
if (attempts <= asoc->max_init_attempts) {
net/sctp/sm_statefuns.c
5927
bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
net/sctp/sm_statefuns.c
5928
repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0);
net/sctp/sm_statefuns.c
593
asoc, chunk->transport);
net/sctp/sm_statefuns.c
5944
asoc->max_init_attempts);
net/sctp/sm_statefuns.c
5978
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5983
int attempts = asoc->init_err_counter + 1;
net/sctp/sm_statefuns.c
5990
if (attempts <= asoc->max_init_attempts) {
net/sctp/sm_statefuns.c
5991
repl = sctp_make_cookie_echo(asoc, NULL);
net/sctp/sm_statefuns.c
6029
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6040
((struct sctp_association *)asoc)->shutdown_retries++;
net/sctp/sm_statefuns.c
6042
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
6053
switch (asoc->state) {
net/sctp/sm_statefuns.c
6055
reply = sctp_make_shutdown(asoc, NULL);
net/sctp/sm_statefuns.c
6059
reply = sctp_make_shutdown_ack(asoc, NULL);
net/sctp/sm_statefuns.c
6074
if (asoc->shutdown_last_sent_to)
net/sctp/sm_statefuns.c
6076
SCTP_TRANSPORT(asoc->shutdown_last_sent_to));
net/sctp/sm_statefuns.c
6100
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6105
struct sctp_chunk *chunk = asoc->addip_last_asconf;
net/sctp/sm_statefuns.c
6126
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
6149
sctp_chunk_hold(asoc->addip_last_asconf);
net/sctp/sm_statefuns.c
6151
SCTP_CHUNK(asoc->addip_last_asconf));
net/sctp/sm_statefuns.c
6172
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6183
reply = sctp_make_abort(asoc, NULL, 0);
net/sctp/sm_statefuns.c
6209
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6230
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/sm_statefuns.c
6231
disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type,
net/sctp/sm_statefuns.c
6252
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6269
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6289
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
63
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6334
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6341
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
6347
abort = sctp_make_abort(asoc, chunk, paylen);
net/sctp/sm_statefuns.c
6375
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
638
const struct sctp_association *asoc)
net/sctp/sm_statefuns.c
6390
if (asoc) {
net/sctp/sm_statefuns.c
6405
vtag = asoc->peer.i.init_tag;
net/sctp/sm_statefuns.c
6459
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6467
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
6488
static int sctp_eat_data(const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6492
struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map;
net/sctp/sm_statefuns.c
6493
struct sock *sk = asoc->base.sk;
net/sctp/sm_statefuns.c
6504
skb_pull(chunk->skb, sctp_datahdr_len(&asoc->stream));
net/sctp/sm_statefuns.c
6521
if (asoc->peer.ecn_capable && !chunk->ecn_ce_done) {
net/sctp/sm_statefuns.c
653
if (!net->sctp.auth_enable || !asoc->peer.auth_capable)
net/sctp/sm_statefuns.c
6532
tmp = sctp_tsnmap_check(&asoc->peer.tsn_map, tsn);
net/sctp/sm_statefuns.c
6537
if (chunk->asoc)
net/sctp/sm_statefuns.c
6538
chunk->asoc->stats.outofseqtsns++;
net/sctp/sm_statefuns.c
6552
datalen -= sctp_datachk_len(&asoc->stream);
net/sctp/sm_statefuns.c
6557
if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) {
net/sctp/sm_statefuns.c
6570
if ((!chunk->data_accepted) && (!asoc->rwnd || asoc->rwnd_over ||
net/sctp/sm_statefuns.c
6571
(datalen > asoc->rwnd + asoc->frag_point))) {
net/sctp/sm_statefuns.c
658
auth.asoc = chunk->asoc;
net/sctp/sm_statefuns.c
6585
__func__, tsn, datalen, asoc->rwnd);
net/sctp/sm_statefuns.c
6616
err = sctp_make_abort_no_data(asoc, chunk, tsn);
net/sctp/sm_statefuns.c
6641
if (chunk->asoc)
net/sctp/sm_statefuns.c
6642
chunk->asoc->stats.iuodchunks++;
net/sctp/sm_statefuns.c
6645
if (chunk->asoc)
net/sctp/sm_statefuns.c
6646
chunk->asoc->stats.iodchunks++;
net/sctp/sm_statefuns.c
6657
if (ntohs(data_hdr->stream) >= asoc->stream.incnt) {
net/sctp/sm_statefuns.c
666
return sctp_sf_authenticate(asoc, &auth) == SCTP_IERROR_NO_ERROR;
net/sctp/sm_statefuns.c
6661
err = sctp_make_op_error(asoc, chunk, SCTP_ERROR_INV_STRM,
net/sctp/sm_statefuns.c
6678
if (!asoc->stream.si->validate_data(chunk))
net/sctp/sm_statefuns.c
67
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
702
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
716
if (asoc && !sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
717
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
724
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
733
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
74
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
743
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
758
new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error,
net/sctp/sm_statefuns.c
776
sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
778
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
782
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
788
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
81
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
815
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
88
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
924
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
932
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
933
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
936
if (security_sctp_assoc_established((struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
938
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
944
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
95
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
968
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE])
net/sctp/sm_statefuns.c
976
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP,
net/sctp/sm_statefuns.c
977
0, asoc->c.sinit_num_ostreams,
net/sctp/sm_statefuns.c
978
asoc->c.sinit_max_instreams,
net/sctp/sm_statefuns.c
991
if (asoc->peer.adaptation_ind) {
net/sctp/sm_statefuns.c
992
ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC);
net/sctp/socket.c
1073
struct sctp_association *asoc;
net/sctp/socket.c
108
static inline int sctp_wspace(struct sctp_association *asoc)
net/sctp/socket.c
1092
asoc = sctp_association_new(ep, sk, scope, GFP_KERNEL);
net/sctp/socket.c
1093
if (!asoc)
net/sctp/socket.c
1096
err = sctp_assoc_set_bind_addr_from_ep(asoc, scope, GFP_KERNEL);
net/sctp/socket.c
110
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
1100
*tp = sctp_assoc_add_peer(asoc, daddr, GFP_KERNEL, SCTP_UNKNOWN);
net/sctp/socket.c
1112
asoc->c.sinit_num_ostreams = outcnt;
net/sctp/socket.c
1114
err = sctp_stream_init(&asoc->stream, outcnt, 0, GFP_KERNEL);
net/sctp/socket.c
112
return asoc->ep->sndbuf_policy ? sk->sk_sndbuf - asoc->sndbuf_used
net/sctp/socket.c
1120
asoc->c.sinit_max_instreams = init->sinit_max_instreams;
net/sctp/socket.c
1123
asoc->max_init_attempts = init->sinit_max_attempts;
net/sctp/socket.c
1126
asoc->max_init_timeo =
net/sctp/socket.c
1131
sctp_association_free(asoc);
net/sctp/socket.c
1135
static int sctp_connect_add_peer(struct sctp_association *asoc,
net/sctp/socket.c
1138
struct sctp_endpoint *ep = asoc->ep;
net/sctp/socket.c
1148
if (old && old != asoc)
net/sctp/socket.c
1155
t = sctp_assoc_add_peer(asoc, daddr, GFP_KERNEL, SCTP_UNKNOWN);
net/sctp/socket.c
1173
struct sctp_association *asoc;
net/sctp/socket.c
1193
asoc = sctp_endpoint_lookup_assoc(ep, daddr, &transport);
net/sctp/socket.c
1194
if (asoc)
net/sctp/socket.c
1195
return asoc->state >= SCTP_STATE_ESTABLISHED ? -EISCONN
net/sctp/socket.c
1201
asoc = transport->asoc;
net/sctp/socket.c
1215
if (asoc->peer.port != ntohs(daddr->v4.sin_port))
net/sctp/socket.c
1218
err = sctp_connect_add_peer(asoc, daddr, af->sockaddr_len);
net/sctp/socket.c
1230
err = sctp_assoc_set_id(asoc, GFP_KERNEL);
net/sctp/socket.c
1235
err = sctp_primitive_ASSOCIATE(sock_net(sk), asoc, NULL);
net/sctp/socket.c
1240
inet_sk(sk)->inet_dport = htons(asoc->peer.port);
net/sctp/socket.c
1245
*assoc_id = asoc->assoc_id;
net/sctp/socket.c
1248
return sctp_wait_for_connect(asoc, &timeo);
net/sctp/socket.c
1252
__func__, asoc, kaddrs, err);
net/sctp/socket.c
1253
sctp_association_free(asoc);
net/sctp/socket.c
127
struct sctp_association *asoc = chunk->asoc;
net/sctp/socket.c
128
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
131
sctp_association_hold(asoc);
net/sctp/socket.c
143
asoc->sndbuf_used += chunk->skb->truesize + sizeof(struct sctp_chunk);
net/sctp/socket.c
1488
struct sctp_association *asoc;
net/sctp/socket.c
1506
asoc = list_entry(pos, struct sctp_association, asocs);
net/sctp/socket.c
1514
if (sctp_state(asoc, CLOSED)) {
net/sctp/socket.c
1515
sctp_association_free(asoc);
net/sctp/socket.c
1520
if (data_was_unread || !skb_queue_empty(&asoc->ulpq.lobby) ||
net/sctp/socket.c
1521
!skb_queue_empty(&asoc->ulpq.reasm) ||
net/sctp/socket.c
1522
!skb_queue_empty(&asoc->ulpq.reasm_uo) ||
net/sctp/socket.c
1526
chunk = sctp_make_abort_user(asoc, NULL, 0);
net/sctp/socket.c
1527
sctp_primitive_ABORT(net, asoc, chunk);
net/sctp/socket.c
1529
sctp_primitive_SHUTDOWN(net, asoc, NULL);
net/sctp/socket.c
159
if ((clear && asoc->base.sk == c->skb->sk) || \
net/sctp/socket.c
160
(!clear && asoc->base.sk != c->skb->sk)) \
net/sctp/socket.c
166
static void sctp_for_each_tx_datachunk(struct sctp_association *asoc,
net/sctp/socket.c
1662
struct sctp_association *asoc;
net/sctp/socket.c
1695
asoc = (*tp)->asoc;
net/sctp/socket.c
172
struct sctp_outq *q = &asoc->outqueue;
net/sctp/socket.c
1724
daddr->v4.sin_port = htons(asoc->peer.port);
net/sctp/socket.c
1735
daddr->v6.sin6_port = htons(asoc->peer.port);
net/sctp/socket.c
1739
err = sctp_connect_add_peer(asoc, daddr, sizeof(*daddr));
net/sctp/socket.c
1747
sctp_association_free(asoc);
net/sctp/socket.c
1751
static int sctp_sendmsg_check_sflags(struct sctp_association *asoc,
net/sctp/socket.c
1755
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
1758
if (sctp_state(asoc, CLOSED) && sctp_style(sk, TCP))
net/sctp/socket.c
176
list_for_each_entry(t, &asoc->peer.transport_addr_list, transports)
net/sctp/socket.c
1762
!sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
1766
pr_debug("%s: shutting down association:%p\n", __func__, asoc);
net/sctp/socket.c
1767
sctp_primitive_SHUTDOWN(net, asoc, NULL);
net/sctp/socket.c
1775
chunk = sctp_make_abort_user(asoc, msg, msg_len);
net/sctp/socket.c
1779
pr_debug("%s: aborting association:%p\n", __func__, asoc);
net/sctp/socket.c
1780
sctp_primitive_ABORT(net, asoc, chunk);
net/sctp/socket.c
1789
static int sctp_sendmsg_to_asoc(struct sctp_association *asoc,
net/sctp/socket.c
1794
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
1803
if (sinfo->sinfo_stream >= asoc->stream.outcnt) {
net/sctp/socket.c
1808
if (unlikely(!SCTP_SO(&asoc->stream, sinfo->sinfo_stream)->ext)) {
net/sctp/socket.c
1809
err = sctp_stream_init_ext(&asoc->stream, sinfo->sinfo_stream);
net/sctp/socket.c
1814
if (sp->disable_fragments && msg_len > asoc->frag_point) {
net/sctp/socket.c
1819
if (asoc->pmtu_pending) {
net/sctp/socket.c
1821
sctp_assoc_sync_pmtu(asoc);
net/sctp/socket.c
1822
asoc->pmtu_pending = 0;
net/sctp/socket.c
1825
if (sctp_wspace(asoc) < (int)msg_len)
net/sctp/socket.c
1826
sctp_prsctp_prune(asoc, sinfo, msg_len - sctp_wspace(asoc));
net/sctp/socket.c
1828
if (sctp_wspace(asoc) <= 0 || !sk_wmem_schedule(sk, msg_len)) {
net/sctp/socket.c
1830
err = sctp_wait_for_sndbuf(asoc, transport, &timeo, msg_len);
net/sctp/socket.c
1833
if (unlikely(sinfo->sinfo_stream >= asoc->stream.outcnt)) {
net/sctp/socket.c
1839
if (sctp_state(asoc, CLOSED)) {
net/sctp/socket.c
1840
err = sctp_primitive_ASSOCIATE(net, asoc, NULL);
net/sctp/socket.c
1844
if (asoc->ep->intl_enable) {
net/sctp/socket.c
1846
err = sctp_wait_for_connect(asoc, &timeo);
net/sctp/socket.c
1858
datamsg = sctp_datamsg_from_user(asoc, sinfo, &msg->msg_iter);
net/sctp/socket.c
1864
asoc->force_delay = !!(msg->msg_flags & MSG_MORE);
net/sctp/socket.c
1872
err = sctp_primitive_SEND(net, asoc, datamsg);
net/sctp/socket.c
1884
sctp_wait_for_connect(asoc, &timeo);
net/sctp/socket.c
1916
static void sctp_sendmsg_update_sinfo(struct sctp_association *asoc,
net/sctp/socket.c
1921
sinfo->sinfo_stream = asoc->default_stream;
net/sctp/socket.c
1922
sinfo->sinfo_ppid = asoc->default_ppid;
net/sctp/socket.c
1923
sinfo->sinfo_context = asoc->default_context;
net/sctp/socket.c
1924
sinfo->sinfo_assoc_id = sctp_assoc2id(asoc);
net/sctp/socket.c
1927
sinfo->sinfo_flags = asoc->default_flags;
net/sctp/socket.c
193
static void sctp_for_each_rx_skb(struct sctp_association *asoc, struct sock *sk,
net/sctp/socket.c
1931
sinfo->sinfo_timetolive = asoc->default_timetolive;
net/sctp/socket.c
1947
struct sctp_association *asoc, *tmp;
net/sctp/socket.c
1973
list_for_each_entry_safe(asoc, tmp, &ep->asocs, asocs) {
net/sctp/socket.c
1974
err = sctp_sendmsg_check_sflags(asoc, sflags, msg,
net/sctp/socket.c
1981
sctp_sendmsg_update_sinfo(asoc, sinfo, &cmsgs);
net/sctp/socket.c
1983
err = sctp_sendmsg_to_asoc(asoc, msg, msg_len,
net/sctp/socket.c
199
sctp_skb_for_each(skb, &asoc->ulpq.lobby, tmp)
net/sctp/socket.c
1996
asoc = sctp_endpoint_lookup_assoc(ep, daddr, &transport);
net/sctp/socket.c
1997
if (asoc) {
net/sctp/socket.c
1998
err = sctp_sendmsg_check_sflags(asoc, sflags, msg,
net/sctp/socket.c
2008
asoc = transport->asoc;
net/sctp/socket.c
2015
asoc = sctp_id2assoc(sk, sinfo->sinfo_assoc_id);
net/sctp/socket.c
2016
if (!asoc) {
net/sctp/socket.c
202
sctp_skb_for_each(skb, &asoc->ulpq.reasm, tmp)
net/sctp/socket.c
2021
err = sctp_sendmsg_check_sflags(asoc, sflags, msg, msg_len);
net/sctp/socket.c
2027
sctp_sendmsg_update_sinfo(asoc, sinfo, &cmsgs);
net/sctp/socket.c
2030
err = sctp_sendmsg_to_asoc(asoc, msg, msg_len, transport, sinfo);
net/sctp/socket.c
2032
sctp_association_free(asoc);
net/sctp/socket.c
205
sctp_skb_for_each(skb, &asoc->ulpq.reasm_uo, tmp)
net/sctp/socket.c
2177
sctp_assoc_rwnd_increase(event->asoc, copied);
net/sctp/socket.c
2223
struct sctp_association *asoc;
net/sctp/socket.c
2233
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
2234
asoc->subscribe = sctp_sk(sk)->subscribe;
net/sctp/socket.c
2243
asoc = sctp_id2assoc(sk, 0);
net/sctp/socket.c
2244
if (asoc && sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/socket.c
2245
event = sctp_ulpevent_make_sender_dry_event(asoc,
net/sctp/socket.c
2250
asoc->stream.si->enqueue_event(&asoc->ulpq, event);
net/sctp/socket.c
235
struct sctp_association *asoc = NULL;
net/sctp/socket.c
2427
struct sctp_association *asoc,
net/sctp/socket.c
2436
error = sctp_primitive_REQUESTHEARTBEAT(trans->asoc->base.net,
net/sctp/socket.c
2437
trans->asoc, trans);
net/sctp/socket.c
2461
} else if (asoc) {
net/sctp/socket.c
2462
asoc->hbinterval =
net/sctp/socket.c
2474
} else if (asoc) {
net/sctp/socket.c
2475
asoc->param_flags =
net/sctp/socket.c
2476
(asoc->param_flags & ~SPP_HB) | hb_change;
net/sctp/socket.c
248
asoc = list_entry(sctp_sk(sk)->ep->asocs.next,
net/sctp/socket.c
2491
sctp_assoc_sync_pmtu(asoc);
net/sctp/socket.c
2492
} else if (asoc) {
net/sctp/socket.c
2493
sctp_assoc_set_pmtu(asoc, params->spp_pathmtu);
net/sctp/socket.c
250
return asoc;
net/sctp/socket.c
2507
sctp_assoc_sync_pmtu(asoc);
net/sctp/socket.c
2510
} else if (asoc) {
net/sctp/socket.c
2511
asoc->param_flags =
net/sctp/socket.c
2512
(asoc->param_flags & ~SPP_PMTUD) | pmtud_change;
net/sctp/socket.c
2527
} else if (asoc) {
net/sctp/socket.c
2528
asoc->sackdelay =
net/sctp/socket.c
2540
} else if (asoc) {
net/sctp/socket.c
2541
asoc->param_flags =
net/sctp/socket.c
2542
(asoc->param_flags & ~SPP_SACKDELAY) |
net/sctp/socket.c
2557
} else if (asoc) {
net/sctp/socket.c
2558
asoc->pathmaxrxt = params->spp_pathmaxrxt;
net/sctp/socket.c
2571
} else if (asoc) {
net/sctp/socket.c
2574
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/socket.c
258
asoc = (struct sctp_association *)idr_find(&sctp_assocs_id, (int)id);
net/sctp/socket.c
2582
asoc->flowlabel = params->spp_ipv6_flowlabel &
net/sctp/socket.c
2584
asoc->flowlabel |= SCTP_FLOWLABEL_SET_MASK;
net/sctp/socket.c
259
if (asoc && (asoc->base.sk != sk || asoc->base.dead))
net/sctp/socket.c
2596
} else if (asoc) {
net/sctp/socket.c
2599
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/socket.c
260
asoc = NULL;
net/sctp/socket.c
2605
asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK;
net/sctp/socket.c
2606
asoc->dscp |= SCTP_DSCP_SET_MASK;
net/sctp/socket.c
2621
struct sctp_association *asoc = NULL;
net/sctp/socket.c
263
return asoc;
net/sctp/socket.c
2661
asoc = sctp_id2assoc(sk, params->spp_assoc_id);
net/sctp/socket.c
2662
if (!asoc && params->spp_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
2669
if (params->spp_flags & SPP_HB_DEMAND && !trans && !asoc)
net/sctp/socket.c
2673
error = sctp_apply_peer_addr_params(params, trans, asoc, sp,
net/sctp/socket.c
2683
if (!trans && asoc) {
net/sctp/socket.c
2684
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/socket.c
2686
sctp_apply_peer_addr_params(params, trans, asoc, sp,
net/sctp/socket.c
2706
struct sctp_association *asoc)
net/sctp/socket.c
2711
asoc->sackdelay = msecs_to_jiffies(params->sack_delay);
net/sctp/socket.c
2712
asoc->param_flags =
net/sctp/socket.c
2713
sctp_spp_sackdelay_enable(asoc->param_flags);
net/sctp/socket.c
2716
asoc->param_flags =
net/sctp/socket.c
2717
sctp_spp_sackdelay_disable(asoc->param_flags);
net/sctp/socket.c
2719
asoc->sackfreq = params->sack_freq;
net/sctp/socket.c
2720
asoc->param_flags =
net/sctp/socket.c
2721
sctp_spp_sackdelay_enable(asoc->param_flags);
net/sctp/socket.c
2724
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/socket.c
2781
struct sctp_association *asoc;
net/sctp/socket.c
2791
asoc = sctp_id2assoc(sk, params->sack_assoc_id);
net/sctp/socket.c
2792
if (!asoc && params->sack_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
2796
if (asoc) {
net/sctp/socket.c
2797
sctp_apply_asoc_delayed_ack(params, asoc);
net/sctp/socket.c
2824
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
2825
sctp_apply_asoc_delayed_ack(params, asoc);
net/sctp/socket.c
2907
struct sctp_association *asoc;
net/sctp/socket.c
2916
asoc = sctp_id2assoc(sk, info->sinfo_assoc_id);
net/sctp/socket.c
2917
if (!asoc && info->sinfo_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
2921
if (asoc) {
net/sctp/socket.c
2922
asoc->default_stream = info->sinfo_stream;
net/sctp/socket.c
2923
asoc->default_flags = info->sinfo_flags;
net/sctp/socket.c
2924
asoc->default_ppid = info->sinfo_ppid;
net/sctp/socket.c
2925
asoc->default_context = info->sinfo_context;
net/sctp/socket.c
2926
asoc->default_timetolive = info->sinfo_timetolive;
net/sctp/socket.c
2945
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
2946
asoc->default_stream = info->sinfo_stream;
net/sctp/socket.c
2947
asoc->default_flags = info->sinfo_flags;
net/sctp/socket.c
2948
asoc->default_ppid = info->sinfo_ppid;
net/sctp/socket.c
2949
asoc->default_context = info->sinfo_context;
net/sctp/socket.c
2950
asoc->default_timetolive = info->sinfo_timetolive;
net/sctp/socket.c
2965
struct sctp_association *asoc;
net/sctp/socket.c
2974
asoc = sctp_id2assoc(sk, info->snd_assoc_id);
net/sctp/socket.c
2975
if (!asoc && info->snd_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
2979
if (asoc) {
net/sctp/socket.c
2980
asoc->default_stream = info->snd_sid;
net/sctp/socket.c
2981
asoc->default_flags = info->snd_flags;
net/sctp/socket.c
2982
asoc->default_ppid = info->snd_ppid;
net/sctp/socket.c
2983
asoc->default_context = info->snd_context;
net/sctp/socket.c
3001
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
3002
asoc->default_stream = info->snd_sid;
net/sctp/socket.c
3003
asoc->default_flags = info->snd_flags;
net/sctp/socket.c
3004
asoc->default_ppid = info->snd_ppid;
net/sctp/socket.c
3005
asoc->default_context = info->snd_context;
net/sctp/socket.c
3043
sctp_assoc_set_primary(trans->asoc, trans);
net/sctp/socket.c
3081
struct sctp_association *asoc;
net/sctp/socket.c
3088
asoc = sctp_id2assoc(sk, rtoinfo->srto_assoc_id);
net/sctp/socket.c
3091
if (!asoc && rtoinfo->srto_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3099
rto_max = asoc ? msecs_to_jiffies(rto_max) : rto_max;
net/sctp/socket.c
3101
rto_max = asoc ? asoc->rto_max : sp->rtoinfo.srto_max;
net/sctp/socket.c
3104
rto_min = asoc ? msecs_to_jiffies(rto_min) : rto_min;
net/sctp/socket.c
3106
rto_min = asoc ? asoc->rto_min : sp->rtoinfo.srto_min;
net/sctp/socket.c
3111
if (asoc) {
net/sctp/socket.c
3113
asoc->rto_initial =
net/sctp/socket.c
3115
asoc->rto_max = rto_max;
net/sctp/socket.c
3116
asoc->rto_min = rto_min;
net/sctp/socket.c
3146
struct sctp_association *asoc;
net/sctp/socket.c
3151
asoc = sctp_id2assoc(sk, assocparams->sasoc_assoc_id);
net/sctp/socket.c
3153
if (!asoc && assocparams->sasoc_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3158
if (asoc) {
net/sctp/socket.c
3164
list_for_each_entry(peer_addr, &asoc->peer.transport_addr_list,
net/sctp/socket.c
3179
asoc->max_retrans = assocparams->sasoc_asocmaxrxt;
net/sctp/socket.c
3183
asoc->cookie_life =
net/sctp/socket.c
3256
struct sctp_association *asoc;
net/sctp/socket.c
3275
asoc = sctp_id2assoc(sk, assoc_id);
net/sctp/socket.c
3276
if (!asoc && assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3282
__u16 datasize = asoc ? sctp_datachk_len(&asoc->stream) :
net/sctp/socket.c
3292
if (asoc) {
net/sctp/socket.c
3293
asoc->user_frag = val;
net/sctp/socket.c
3294
sctp_assoc_update_frag_point(asoc);
net/sctp/socket.c
3316
struct sctp_association *asoc = NULL;
net/sctp/socket.c
3329
asoc = sctp_id2assoc(sk, prim->sspp_assoc_id);
net/sctp/socket.c
3330
if (!asoc)
net/sctp/socket.c
3333
if (!asoc->peer.asconf_capable)
net/sctp/socket.c
3336
if (asoc->peer.addip_disabled_mask & SCTP_PARAM_SET_PRIMARY)
net/sctp/socket.c
3339
if (!sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
3349
if (!sctp_assoc_lookup_laddr(asoc, (union sctp_addr *)&prim->sspp_addr))
net/sctp/socket.c
3360
chunk = sctp_make_asconf_set_prim(asoc,
net/sctp/socket.c
3365
err = sctp_send_asconf(asoc, chunk);
net/sctp/socket.c
3403
struct sctp_association *asoc;
net/sctp/socket.c
3408
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
3409
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3413
if (asoc) {
net/sctp/socket.c
3414
asoc->default_rcv_context = params->assoc_value;
net/sctp/socket.c
3428
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
3429
asoc->default_rcv_context = params->assoc_value;
net/sctp/socket.c
3522
struct sctp_association *asoc;
net/sctp/socket.c
3540
asoc = sctp_id2assoc(sk, assoc_id);
net/sctp/socket.c
3541
if (!asoc && assoc_id > SCTP_ALL_ASSOC && sctp_style(sk, UDP))
net/sctp/socket.c
3544
if (asoc) {
net/sctp/socket.c
3545
asoc->max_burst = assoc_value;
net/sctp/socket.c
3557
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
3558
asoc->max_burst = assoc_value;
net/sctp/socket.c
3634
struct sctp_association *asoc;
net/sctp/socket.c
3647
asoc = sctp_id2assoc(sk, authkey->sca_assoc_id);
net/sctp/socket.c
3648
if (!asoc && authkey->sca_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3652
if (asoc) {
net/sctp/socket.c
3653
ret = sctp_auth_set_key(ep, asoc, authkey);
net/sctp/socket.c
3662
ret = sctp_auth_set_key(ep, asoc, authkey);
net/sctp/socket.c
3671
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3672
int res = sctp_auth_set_key(ep, asoc, authkey);
net/sctp/socket.c
3695
struct sctp_association *asoc;
net/sctp/socket.c
3701
asoc = sctp_id2assoc(sk, val->scact_assoc_id);
net/sctp/socket.c
3702
if (!asoc && val->scact_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3706
if (asoc)
net/sctp/socket.c
3707
return sctp_auth_set_active_key(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3714
ret = sctp_auth_set_active_key(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3721
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3722
int res = sctp_auth_set_active_key(ep, asoc,
net/sctp/socket.c
3743
struct sctp_association *asoc;
net/sctp/socket.c
3749
asoc = sctp_id2assoc(sk, val->scact_assoc_id);
net/sctp/socket.c
3750
if (!asoc && val->scact_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3754
if (asoc)
net/sctp/socket.c
3755
return sctp_auth_del_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3762
ret = sctp_auth_del_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3769
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3770
int res = sctp_auth_del_key_id(ep, asoc,
net/sctp/socket.c
3791
struct sctp_association *asoc;
net/sctp/socket.c
3797
asoc = sctp_id2assoc(sk, val->scact_assoc_id);
net/sctp/socket.c
3798
if (!asoc && val->scact_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3802
if (asoc)
net/sctp/socket.c
3803
return sctp_auth_deact_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3810
ret = sctp_auth_deact_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3817
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3818
int res = sctp_auth_deact_key_id(ep, asoc,
net/sctp/socket.c
3880
struct sctp_association *asoc;
net/sctp/socket.c
3905
asoc = sctp_id2assoc(sk, val->spt_assoc_id);
net/sctp/socket.c
3906
if (!asoc && val->spt_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3910
if (asoc) {
net/sctp/socket.c
3911
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/socket.c
3921
asoc->pathmaxrxt = val->spt_pathmaxrxt;
net/sctp/socket.c
3923
asoc->ps_retrans = val->spt_pathcpthld;
net/sctp/socket.c
3924
asoc->pf_retrans = val->spt_pathpfthld;
net/sctp/socket.c
3964
struct sctp_association *asoc;
net/sctp/socket.c
3969
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
3970
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3984
struct sctp_association *asoc;
net/sctp/socket.c
3996
asoc = sctp_id2assoc(sk, info->pr_assoc_id);
net/sctp/socket.c
3997
if (!asoc && info->pr_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4003
if (asoc) {
net/sctp/socket.c
4004
SCTP_PR_SET_POLICY(asoc->default_flags, info->pr_policy);
net/sctp/socket.c
4005
asoc->default_timetolive = info->pr_value;
net/sctp/socket.c
4020
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
4021
SCTP_PR_SET_POLICY(asoc->default_flags,
net/sctp/socket.c
4023
asoc->default_timetolive = info->pr_value;
net/sctp/socket.c
4035
struct sctp_association *asoc;
net/sctp/socket.c
4041
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4042
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4059
struct sctp_association *asoc;
net/sctp/socket.c
4068
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4069
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4075
if (asoc) {
net/sctp/socket.c
4076
asoc->strreset_enable = params->assoc_value;
net/sctp/socket.c
4089
list_for_each_entry(asoc, &ep->asocs, asocs)
net/sctp/socket.c
4090
asoc->strreset_enable = params->assoc_value;
net/sctp/socket.c
4100
struct sctp_association *asoc;
net/sctp/socket.c
4112
asoc = sctp_id2assoc(sk, params->srs_assoc_id);
net/sctp/socket.c
4113
if (!asoc)
net/sctp/socket.c
4116
return sctp_send_reset_streams(asoc, params);
net/sctp/socket.c
4122
struct sctp_association *asoc;
net/sctp/socket.c
4127
asoc = sctp_id2assoc(sk, *associd);
net/sctp/socket.c
4128
if (!asoc)
net/sctp/socket.c
4131
return sctp_send_reset_assoc(asoc);
net/sctp/socket.c
4138
struct sctp_association *asoc;
net/sctp/socket.c
4143
asoc = sctp_id2assoc(sk, params->sas_assoc_id);
net/sctp/socket.c
4144
if (!asoc)
net/sctp/socket.c
4147
return sctp_send_add_streams(asoc, params);
net/sctp/socket.c
4155
struct sctp_association *asoc;
net/sctp/socket.c
4164
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4165
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4169
if (asoc)
net/sctp/socket.c
4170
return sctp_sched_set_sched(asoc, params->assoc_value);
net/sctp/socket.c
4181
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
4182
int ret = sctp_sched_set_sched(asoc,
net/sctp/socket.c
4197
struct sctp_association *asoc;
net/sctp/socket.c
4203
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4204
if (!asoc && params->assoc_id != SCTP_CURRENT_ASSOC &&
net/sctp/socket.c
4208
if (asoc) {
net/sctp/socket.c
4209
retval = sctp_sched_set_value(asoc, params->stream_id,
net/sctp/socket.c
4216
list_for_each_entry(asoc, &sctp_sk(sk)->ep->asocs, asocs) {
net/sctp/socket.c
4217
int ret = sctp_sched_set_value(asoc, params->stream_id,
net/sctp/socket.c
4233
struct sctp_association *asoc;
net/sctp/socket.c
4238
asoc = sctp_id2assoc(sk, p->assoc_id);
net/sctp/socket.c
4239
if (!asoc && p->assoc_id != SCTP_FUTURE_ASSOC && sctp_style(sk, UDP))
net/sctp/socket.c
4268
struct sctp_association *asoc)
net/sctp/socket.c
4272
sctp_ulpevent_type_set(&asoc->subscribe, param->se_type, param->se_on);
net/sctp/socket.c
4275
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/socket.c
4276
event = sctp_ulpevent_make_sender_dry_event(asoc,
net/sctp/socket.c
4281
asoc->stream.si->enqueue_event(&asoc->ulpq, event);
net/sctp/socket.c
4292
struct sctp_association *asoc;
net/sctp/socket.c
4302
asoc = sctp_id2assoc(sk, param->se_assoc_id);
net/sctp/socket.c
4303
if (!asoc && param->se_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4307
if (asoc)
net/sctp/socket.c
4308
return sctp_assoc_ulpevent_type_set(param, asoc);
net/sctp/socket.c
4320
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
4321
int ret = sctp_assoc_ulpevent_type_set(param, asoc);
net/sctp/socket.c
4335
struct sctp_association *asoc;
net/sctp/socket.c
4342
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4343
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4365
struct sctp_association *asoc;
net/sctp/socket.c
4372
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4373
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4399
struct sctp_association *asoc;
net/sctp/socket.c
4405
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4406
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4421
struct sctp_association *asoc;
net/sctp/socket.c
4430
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4431
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4435
if (asoc)
net/sctp/socket.c
4436
asoc->pf_expose = params->assoc_value;
net/sctp/socket.c
4449
struct sctp_association *asoc;
net/sctp/socket.c
4474
asoc = sctp_id2assoc(sk, encap->sue_assoc_id);
net/sctp/socket.c
4475
if (!asoc && encap->sue_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4482
if (asoc) {
net/sctp/socket.c
4483
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/socket.c
4487
asoc->encap_port = encap_port;
net/sctp/socket.c
4499
struct sctp_association *asoc;
net/sctp/socket.c
4528
asoc = sctp_id2assoc(sk, params->spi_assoc_id);
net/sctp/socket.c
4529
if (!asoc && params->spi_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4536
if (asoc) {
net/sctp/socket.c
4537
list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) {
net/sctp/socket.c
4542
asoc->probe_interval = msecs_to_jiffies(probe_interval);
net/sctp/socket.c
469
static int sctp_send_asconf(struct sctp_association *asoc,
net/sctp/socket.c
477
if (asoc->addip_last_asconf) {
net/sctp/socket.c
478
list_add_tail(&chunk->list, &asoc->addip_chunk_list);
net/sctp/socket.c
484
retval = sctp_primitive_ASCONF(asoc->base.net, asoc, chunk);
net/sctp/socket.c
4847
struct sctp_association *asoc,
net/sctp/socket.c
4864
newsp->pf->to_sk_daddr(&asoc->peer.primary_addr, newsk);
net/sctp/socket.c
4865
newinet->inet_dport = htons(asoc->peer.port);
net/sctp/socket.c
488
asoc->addip_last_asconf = chunk;
net/sctp/socket.c
4900
err = sctp_sock_migrate(sk, newsk, asoc, type);
net/sctp/socket.c
4907
security_sctp_sk_clone(asoc, sk, newsk);
net/sctp/socket.c
4925
struct sctp_association *asoc;
net/sctp/socket.c
4952
asoc = list_entry(sctp_sk(sk)->ep->asocs.next,
net/sctp/socket.c
4955
newsk = sctp_clone_sock(sk, asoc, SCTP_SOCKET_TCP);
net/sctp/socket.c
5207
struct sctp_association *asoc;
net/sctp/socket.c
5210
asoc = list_entry(ep->asocs.next,
net/sctp/socket.c
5212
sctp_primitive_SHUTDOWN(net, asoc, NULL);
net/sctp/socket.c
5216
int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
net/sctp/socket.c
5224
if (!asoc) {
net/sctp/socket.c
5239
info->sctpi_tag = asoc->c.my_vtag;
net/sctp/socket.c
5240
info->sctpi_state = asoc->state;
net/sctp/socket.c
5241
info->sctpi_rwnd = asoc->a_rwnd;
net/sctp/socket.c
5242
info->sctpi_unackdata = asoc->unack_data;
net/sctp/socket.c
5243
info->sctpi_penddata = sctp_tsnmap_pending(&asoc->peer.tsn_map);
net/sctp/socket.c
5244
info->sctpi_instrms = asoc->stream.incnt;
net/sctp/socket.c
5245
info->sctpi_outstrms = asoc->stream.outcnt;
net/sctp/socket.c
5246
list_for_each(pos, &asoc->base.inqueue.in_chunk_list)
net/sctp/socket.c
5248
list_for_each(pos, &asoc->outqueue.out_chunk_list)
net/sctp/socket.c
5250
info->sctpi_overall_error = asoc->overall_error_count;
net/sctp/socket.c
5251
info->sctpi_max_burst = asoc->max_burst;
net/sctp/socket.c
5252
info->sctpi_maxseg = asoc->frag_point;
net/sctp/socket.c
5253
info->sctpi_peer_rwnd = asoc->peer.rwnd;
net/sctp/socket.c
5254
info->sctpi_peer_tag = asoc->c.peer_vtag;
net/sctp/socket.c
5256
mask = asoc->peer.intl_capable << 1;
net/sctp/socket.c
5257
mask = (mask | asoc->peer.ecn_capable) << 1;
net/sctp/socket.c
5258
mask = (mask | asoc->peer.ipv4_address) << 1;
net/sctp/socket.c
5259
mask = (mask | asoc->peer.ipv6_address) << 1;
net/sctp/socket.c
5260
mask = (mask | asoc->peer.reconf_capable) << 1;
net/sctp/socket.c
5261
mask = (mask | asoc->peer.asconf_capable) << 1;
net/sctp/socket.c
5262
mask = (mask | asoc->peer.prsctp_capable) << 1;
net/sctp/socket.c
5263
mask = (mask | asoc->peer.auth_capable);
net/sctp/socket.c
5265
mask = asoc->peer.sack_needed << 1;
net/sctp/socket.c
5266
mask = (mask | asoc->peer.sack_generation) << 1;
net/sctp/socket.c
5267
mask = (mask | asoc->peer.zero_window_announced);
net/sctp/socket.c
5270
info->sctpi_isacks = asoc->stats.isacks;
net/sctp/socket.c
5271
info->sctpi_osacks = asoc->stats.osacks;
net/sctp/socket.c
5272
info->sctpi_opackets = asoc->stats.opackets;
net/sctp/socket.c
5273
info->sctpi_ipackets = asoc->stats.ipackets;
net/sctp/socket.c
5274
info->sctpi_rtxchunks = asoc->stats.rtxchunks;
net/sctp/socket.c
5275
info->sctpi_outofseqtsns = asoc->stats.outofseqtsns;
net/sctp/socket.c
5276
info->sctpi_idupchunks = asoc->stats.idupchunks;
net/sctp/socket.c
5277
info->sctpi_gapcnt = asoc->stats.gapcnt;
net/sctp/socket.c
5278
info->sctpi_ouodchunks = asoc->stats.ouodchunks;
net/sctp/socket.c
5279
info->sctpi_iuodchunks = asoc->stats.iuodchunks;
net/sctp/socket.c
5280
info->sctpi_oodchunks = asoc->stats.oodchunks;
net/sctp/socket.c
5281
info->sctpi_iodchunks = asoc->stats.iodchunks;
net/sctp/socket.c
5282
info->sctpi_octrlchunks = asoc->stats.octrlchunks;
net/sctp/socket.c
5283
info->sctpi_ictrlchunks = asoc->stats.ictrlchunks;
net/sctp/socket.c
5285
prim = asoc->peer.primary_path;
net/sctp/socket.c
5333
if (net_eq(t->asoc->base.net, net) &&
net/sctp/socket.c
5334
t->asoc->peer.primary_path == t)
net/sctp/socket.c
5397
ep = transport->asoc->ep;
net/sctp/socket.c
5426
ep = tsp->asoc->ep;
net/sctp/socket.c
5465
struct sctp_association *asoc = NULL;
net/sctp/socket.c
5482
asoc = sctp_id2assoc(sk, associd);
net/sctp/socket.c
5483
if (!asoc) {
net/sctp/socket.c
5488
transport = asoc->peer.primary_path;
net/sctp/socket.c
5490
status.sstat_assoc_id = sctp_assoc2id(asoc);
net/sctp/socket.c
5491
status.sstat_state = sctp_assoc_to_state(asoc);
net/sctp/socket.c
5492
status.sstat_rwnd = asoc->peer.rwnd;
net/sctp/socket.c
5493
status.sstat_unackdata = asoc->unack_data;
net/sctp/socket.c
5495
status.sstat_penddata = sctp_tsnmap_pending(&asoc->peer.tsn_map);
net/sctp/socket.c
5496
status.sstat_instrms = asoc->stream.incnt;
net/sctp/socket.c
5497
status.sstat_outstrms = asoc->stream.outcnt;
net/sctp/socket.c
5498
status.sstat_fragmentation_point = asoc->frag_point;
net/sctp/socket.c
5499
status.sstat_primary.spinfo_assoc_id = sctp_assoc2id(transport->asoc);
net/sctp/socket.c
5567
transport->asoc->pf_expose == SCTP_PF_EXPOSE_DISABLE) {
net/sctp/socket.c
5572
pinfo.spinfo_assoc_id = sctp_assoc2id(transport->asoc);
net/sctp/socket.c
562
struct sctp_association *asoc;
net/sctp/socket.c
5679
struct sctp_association *asoc = sctp_id2assoc(sk, id);
net/sctp/socket.c
5688
if (!asoc)
net/sctp/socket.c
5701
newsk = sctp_clone_sock(sk, asoc, SCTP_SOCKET_UDP_HIGH_BANDWIDTH);
net/sctp/socket.c
583
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
584
if (!asoc->peer.asconf_capable)
net/sctp/socket.c
587
if (asoc->peer.addip_disabled_mask & SCTP_PARAM_ADD_IP)
net/sctp/socket.c
590
if (!sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
5961
struct sctp_association *asoc = NULL;
net/sctp/socket.c
5992
asoc = sctp_id2assoc(sk, params.spp_assoc_id);
net/sctp/socket.c
5993
if (!asoc && params.spp_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6017
} else if (asoc) {
net/sctp/socket.c
6019
params.spp_hbinterval = jiffies_to_msecs(asoc->hbinterval);
net/sctp/socket.c
6020
params.spp_pathmtu = asoc->pathmtu;
net/sctp/socket.c
6021
params.spp_pathmaxrxt = asoc->pathmaxrxt;
net/sctp/socket.c
6022
params.spp_sackdelay = jiffies_to_msecs(asoc->sackdelay);
net/sctp/socket.c
6025
params.spp_flags = asoc->param_flags;
net/sctp/socket.c
6026
if (asoc->flowlabel & SCTP_FLOWLABEL_SET_MASK) {
net/sctp/socket.c
6027
params.spp_ipv6_flowlabel = asoc->flowlabel &
net/sctp/socket.c
6031
if (asoc->dscp & SCTP_DSCP_SET_MASK) {
net/sctp/socket.c
6032
params.spp_dscp = asoc->dscp & SCTP_DSCP_VAL_MASK;
net/sctp/socket.c
607
if (sctp_assoc_lookup_laddr(asoc, addr))
net/sctp/socket.c
6104
struct sctp_association *asoc = NULL;
net/sctp/socket.c
6127
asoc = sctp_id2assoc(sk, params.sack_assoc_id);
net/sctp/socket.c
6128
if (!asoc && params.sack_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6132
if (asoc) {
net/sctp/socket.c
6134
if (asoc->param_flags & SPP_SACKDELAY_ENABLE) {
net/sctp/socket.c
6135
params.sack_delay = jiffies_to_msecs(asoc->sackdelay);
net/sctp/socket.c
6136
params.sack_freq = asoc->sackfreq;
net/sctp/socket.c
618
bp = &asoc->base.bind_addr;
net/sctp/socket.c
6189
struct sctp_association *asoc;
net/sctp/socket.c
6207
asoc = sctp_id2assoc(sk, getaddrs.assoc_id);
net/sctp/socket.c
6208
if (!asoc)
net/sctp/socket.c
621
chunk = sctp_make_asconf_update_ip(asoc, &laddr->a, addrs,
net/sctp/socket.c
6214
list_for_each_entry(from, &asoc->peer.transport_addr_list,
net/sctp/socket.c
6286
struct sctp_association *asoc;
net/sctp/socket.c
6315
asoc = sctp_id2assoc(sk, getaddrs.assoc_id);
net/sctp/socket.c
6316
if (!asoc)
net/sctp/socket.c
6318
bp = &asoc->base.bind_addr;
net/sctp/socket.c
6394
struct sctp_association *asoc;
net/sctp/socket.c
6405
asoc = sctp_id2assoc(sk, prim.ssp_assoc_id);
net/sctp/socket.c
6406
if (!asoc)
net/sctp/socket.c
6409
if (!asoc->peer.primary_path)
net/sctp/socket.c
641
if (asoc->src_out_of_asoc_ok) {
net/sctp/socket.c
6412
memcpy(&prim.ssp_addr, &asoc->peer.primary_path->ipaddr,
net/sctp/socket.c
6413
asoc->peer.primary_path->af_specific->sockaddr_len);
net/sctp/socket.c
645
&asoc->peer.transport_addr_list, transports) {
net/sctp/socket.c
646
trans->cwnd = min(4*asoc->pathmtu, max_t(__u32,
net/sctp/socket.c
647
2*asoc->pathmtu, 4380));
net/sctp/socket.c
6476
struct sctp_association *asoc;
net/sctp/socket.c
648
trans->ssthresh = asoc->peer.i.a_rwnd;
net/sctp/socket.c
6487
asoc = sctp_id2assoc(sk, info.sinfo_assoc_id);
net/sctp/socket.c
6488
if (!asoc && info.sinfo_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
649
trans->rto = asoc->rto_initial;
net/sctp/socket.c
6492
if (asoc) {
net/sctp/socket.c
6493
info.sinfo_stream = asoc->default_stream;
net/sctp/socket.c
6494
info.sinfo_flags = asoc->default_flags;
net/sctp/socket.c
6495
info.sinfo_ppid = asoc->default_ppid;
net/sctp/socket.c
6496
info.sinfo_context = asoc->default_context;
net/sctp/socket.c
6497
info.sinfo_timetolive = asoc->default_timetolive;
net/sctp/socket.c
650
sctp_max_rto(asoc, trans);
net/sctp/socket.c
6522
struct sctp_association *asoc;
net/sctp/socket.c
6533
asoc = sctp_id2assoc(sk, info.snd_assoc_id);
net/sctp/socket.c
6534
if (!asoc && info.snd_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6538
if (asoc) {
net/sctp/socket.c
6539
info.snd_sid = asoc->default_stream;
net/sctp/socket.c
654
sctp_sk(asoc->base.sk));
net/sctp/socket.c
6540
info.snd_flags = asoc->default_flags;
net/sctp/socket.c
6541
info.snd_ppid = asoc->default_ppid;
net/sctp/socket.c
6542
info.snd_context = asoc->default_context;
net/sctp/socket.c
657
retval = sctp_send_asconf(asoc, chunk);
net/sctp/socket.c
6601
struct sctp_association *asoc;
net/sctp/socket.c
6611
asoc = sctp_id2assoc(sk, rtoinfo.srto_assoc_id);
net/sctp/socket.c
6613
if (!asoc && rtoinfo.srto_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6618
if (asoc) {
net/sctp/socket.c
6619
rtoinfo.srto_initial = jiffies_to_msecs(asoc->rto_initial);
net/sctp/socket.c
6620
rtoinfo.srto_max = jiffies_to_msecs(asoc->rto_max);
net/sctp/socket.c
6621
rtoinfo.srto_min = jiffies_to_msecs(asoc->rto_min);
net/sctp/socket.c
6657
struct sctp_association *asoc;
net/sctp/socket.c
6669
asoc = sctp_id2assoc(sk, assocparams.sasoc_assoc_id);
net/sctp/socket.c
6671
if (!asoc && assocparams.sasoc_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6676
if (asoc) {
net/sctp/socket.c
6677
assocparams.sasoc_asocmaxrxt = asoc->max_retrans;
net/sctp/socket.c
6678
assocparams.sasoc_peer_rwnd = asoc->peer.rwnd;
net/sctp/socket.c
6679
assocparams.sasoc_local_rwnd = asoc->a_rwnd;
net/sctp/socket.c
6680
assocparams.sasoc_cookie_life = ktime_to_ms(asoc->cookie_life);
net/sctp/socket.c
6682
list_for_each(pos, &asoc->peer.transport_addr_list) {
net/sctp/socket.c
6747
struct sctp_association *asoc;
net/sctp/socket.c
6757
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
6758
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6762
params.assoc_value = asoc ? asoc->default_rcv_context
net/sctp/socket.c
6804
struct sctp_association *asoc;
net/sctp/socket.c
6820
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
6821
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6825
if (asoc)
net/sctp/socket.c
6826
params.assoc_value = asoc->frag_point;
net/sctp/socket.c
6899
struct sctp_association *asoc;
net/sctp/socket.c
6915
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
6916
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6920
params.assoc_value = asoc ? asoc->max_burst : sctp_sk(sk)->max_burst;
net/sctp/socket.c
6975
struct sctp_association *asoc;
net/sctp/socket.c
6984
asoc = sctp_id2assoc(sk, val.scact_assoc_id);
net/sctp/socket.c
6985
if (!asoc && val.scact_assoc_id && sctp_style(sk, UDP))
net/sctp/socket.c
6988
if (asoc) {
net/sctp/socket.c
6989
if (!asoc->peer.auth_capable)
net/sctp/socket.c
6991
val.scact_keynumber = asoc->active_key_id;
net/sctp/socket.c
7011
struct sctp_association *asoc;
net/sctp/socket.c
7023
asoc = sctp_id2assoc(sk, val.gauth_assoc_id);
net/sctp/socket.c
7024
if (!asoc)
net/sctp/socket.c
7027
if (!asoc->peer.auth_capable)
net/sctp/socket.c
7030
ch = asoc->peer.peer_chunks;
net/sctp/socket.c
7056
struct sctp_association *asoc;
net/sctp/socket.c
7068
asoc = sctp_id2assoc(sk, val.gauth_assoc_id);
net/sctp/socket.c
7069
if (!asoc && val.gauth_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7073
if (asoc) {
net/sctp/socket.c
7074
if (!asoc->peer.auth_capable)
net/sctp/socket.c
7076
ch = (struct sctp_chunks_param *)asoc->c.auth_chunks;
net/sctp/socket.c
7110
struct sctp_association *asoc;
net/sctp/socket.c
7121
list_for_each_entry(asoc, &(sp->ep->asocs), asocs) {
net/sctp/socket.c
7166
struct sctp_association *asoc;
net/sctp/socket.c
7177
list_for_each_entry(asoc, &(sp->ep->asocs), asocs) {
net/sctp/socket.c
7192
list_for_each_entry(asoc, &(sp->ep->asocs), asocs) {
net/sctp/socket.c
7193
ids->gaids_assoc_id[num++] = asoc->assoc_id;
net/sctp/socket.c
7218
struct sctp_association *asoc;
net/sctp/socket.c
7241
asoc = sctp_id2assoc(sk, val.spt_assoc_id);
net/sctp/socket.c
7242
if (!asoc && val.spt_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7246
if (asoc) {
net/sctp/socket.c
7247
val.spt_pathpfthld = asoc->pf_retrans;
net/sctp/socket.c
7248
val.spt_pathmaxrxt = asoc->pathmaxrxt;
net/sctp/socket.c
7249
val.spt_pathcpthld = asoc->ps_retrans;
net/sctp/socket.c
7276
struct sctp_association *asoc = NULL;
net/sctp/socket.c
7288
asoc = sctp_id2assoc(sk, sas.sas_assoc_id);
net/sctp/socket.c
7289
if (!asoc)
net/sctp/socket.c
7292
sas.sas_rtxchunks = asoc->stats.rtxchunks;
net/sctp/socket.c
7293
sas.sas_gapcnt = asoc->stats.gapcnt;
net/sctp/socket.c
7294
sas.sas_outofseqtsns = asoc->stats.outofseqtsns;
net/sctp/socket.c
7295
sas.sas_osacks = asoc->stats.osacks;
net/sctp/socket.c
7296
sas.sas_isacks = asoc->stats.isacks;
net/sctp/socket.c
7297
sas.sas_octrlchunks = asoc->stats.octrlchunks;
net/sctp/socket.c
7298
sas.sas_ictrlchunks = asoc->stats.ictrlchunks;
net/sctp/socket.c
7299
sas.sas_oodchunks = asoc->stats.oodchunks;
net/sctp/socket.c
7300
sas.sas_iodchunks = asoc->stats.iodchunks;
net/sctp/socket.c
7301
sas.sas_ouodchunks = asoc->stats.ouodchunks;
net/sctp/socket.c
7302
sas.sas_iuodchunks = asoc->stats.iuodchunks;
net/sctp/socket.c
7303
sas.sas_idupchunks = asoc->stats.idupchunks;
net/sctp/socket.c
7304
sas.sas_opackets = asoc->stats.opackets;
net/sctp/socket.c
7305
sas.sas_ipackets = asoc->stats.ipackets;
net/sctp/socket.c
7311
sas.sas_maxrto = asoc->stats.max_obs_rto;
net/sctp/socket.c
7312
memcpy(&sas.sas_obs_rto_ipaddr, &asoc->stats.obs_rto_ipaddr,
net/sctp/socket.c
7316
asoc->stats.max_obs_rto = asoc->rto_min;
net/sctp/socket.c
7374
struct sctp_association *asoc;
net/sctp/socket.c
7386
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7387
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7393
params.assoc_value = asoc ? asoc->peer.prsctp_capable
net/sctp/socket.c
74
static int sctp_wait_for_sndbuf(struct sctp_association *asoc,
net/sctp/socket.c
7413
struct sctp_association *asoc;
net/sctp/socket.c
7425
asoc = sctp_id2assoc(sk, info.pr_assoc_id);
net/sctp/socket.c
7426
if (!asoc && info.pr_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7432
if (asoc) {
net/sctp/socket.c
7433
info.pr_policy = SCTP_PR_POLICY(asoc->default_flags);
net/sctp/socket.c
7434
info.pr_value = asoc->default_timetolive;
net/sctp/socket.c
7459
struct sctp_association *asoc;
net/sctp/socket.c
7477
asoc = sctp_id2assoc(sk, params.sprstat_assoc_id);
net/sctp/socket.c
7478
if (!asoc)
net/sctp/socket.c
7486
asoc->abandoned_unsent[policy];
net/sctp/socket.c
7488
asoc->abandoned_sent[policy];
net/sctp/socket.c
7492
asoc->abandoned_unsent[__SCTP_PR_INDEX(policy)];
net/sctp/socket.c
7494
asoc->abandoned_sent[__SCTP_PR_INDEX(policy)];
net/sctp/socket.c
7518
struct sctp_association *asoc;
net/sctp/socket.c
7537
asoc = sctp_id2assoc(sk, params.sprstat_assoc_id);
net/sctp/socket.c
7538
if (!asoc || params.sprstat_sid >= asoc->stream.outcnt)
net/sctp/socket.c
7541
streamoute = SCTP_SO(&asoc->stream, params.sprstat_sid)->ext;
net/sctp/socket.c
7582
struct sctp_association *asoc;
net/sctp/socket.c
7594
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7595
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7601
params.assoc_value = asoc ? asoc->peer.reconf_capable
net/sctp/socket.c
7621
struct sctp_association *asoc;
net/sctp/socket.c
7633
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7634
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
764
struct sctp_association *asoc;
net/sctp/socket.c
7640
params.assoc_value = asoc ? asoc->strreset_enable
net/sctp/socket.c
7660
struct sctp_association *asoc;
net/sctp/socket.c
7672
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7673
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7679
params.assoc_value = asoc ? sctp_sched_get_sched(asoc)
net/sctp/socket.c
7699
struct sctp_association *asoc;
net/sctp/socket.c
7711
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7712
if (!asoc) {
net/sctp/socket.c
7717
retval = sctp_sched_get_value(asoc, params.stream_id,
net/sctp/socket.c
7741
struct sctp_association *asoc;
net/sctp/socket.c
7753
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7754
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7760
params.assoc_value = asoc ? asoc->peer.intl_capable
net/sctp/socket.c
7798
struct sctp_association *asoc;
net/sctp/socket.c
7813
asoc = sctp_id2assoc(sk, param.se_assoc_id);
net/sctp/socket.c
7814
if (!asoc && param.se_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7818
subscribe = asoc ? asoc->subscribe : sctp_sk(sk)->subscribe;
net/sctp/socket.c
7835
struct sctp_association *asoc;
net/sctp/socket.c
7847
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7848
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7854
params.assoc_value = asoc ? asoc->peer.asconf_capable
net/sctp/socket.c
786
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
7874
struct sctp_association *asoc;
net/sctp/socket.c
788
if (!asoc->peer.asconf_capable)
net/sctp/socket.c
7886
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7887
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7893
params.assoc_value = asoc ? asoc->peer.auth_capable
net/sctp/socket.c
791
if (asoc->peer.addip_disabled_mask & SCTP_PARAM_DEL_IP)
net/sctp/socket.c
7913
struct sctp_association *asoc;
net/sctp/socket.c
7925
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7926
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7932
params.assoc_value = asoc ? asoc->peer.ecn_capable
net/sctp/socket.c
794
if (!sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
7952
struct sctp_association *asoc;
net/sctp/socket.c
7964
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7965
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7971
params.assoc_value = asoc ? asoc->pf_expose
net/sctp/socket.c
7989
struct sctp_association *asoc;
net/sctp/socket.c
8020
asoc = sctp_id2assoc(sk, encap.sue_assoc_id);
net/sctp/socket.c
8021
if (!asoc && encap.sue_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
8027
if (asoc) {
net/sctp/socket.c
8028
encap_port = asoc->encap_port;
net/sctp/socket.c
8050
struct sctp_association *asoc;
net/sctp/socket.c
8080
asoc = sctp_id2assoc(sk, params.spi_assoc_id);
net/sctp/socket.c
8081
if (!asoc && params.spi_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
8087
if (asoc) {
net/sctp/socket.c
8088
probe_interval = jiffies_to_msecs(asoc->probe_interval);
net/sctp/socket.c
811
if (!sctp_assoc_lookup_laddr(asoc, laddr))
net/sctp/socket.c
824
bp = &asoc->base.bind_addr;
net/sctp/socket.c
828
if (asoc->asconf_addr_del_pending)
net/sctp/socket.c
830
asoc->asconf_addr_del_pending =
net/sctp/socket.c
832
if (asoc->asconf_addr_del_pending == NULL) {
net/sctp/socket.c
836
asoc->asconf_addr_del_pending->sa.sa_family =
net/sctp/socket.c
838
asoc->asconf_addr_del_pending->v4.sin_port =
net/sctp/socket.c
844
asoc->asconf_addr_del_pending->v4.sin_addr.s_addr = sin->sin_addr.s_addr;
net/sctp/socket.c
849
asoc->asconf_addr_del_pending->v6.sin6_addr = sin6->sin6_addr;
net/sctp/socket.c
853
__func__, asoc, &asoc->asconf_addr_del_pending->sa,
net/sctp/socket.c
854
asoc->asconf_addr_del_pending);
net/sctp/socket.c
856
asoc->src_out_of_asoc_ok = 1;
net/sctp/socket.c
868
chunk = sctp_make_asconf_update_ip(asoc, laddr, addrs, addrcnt,
net/sctp/socket.c
88
static int sctp_send_asconf(struct sctp_association *asoc,
net/sctp/socket.c
894
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/socket.c
897
sctp_sk(asoc->base.sk));
net/sctp/socket.c
903
retval = sctp_send_asconf(asoc, chunk);
net/sctp/socket.c
9112
static void __sctp_write_space(struct sctp_association *asoc)
net/sctp/socket.c
9114
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9116
if (sctp_wspace(asoc) <= 0)
net/sctp/socket.c
9119
if (waitqueue_active(&asoc->wait))
net/sctp/socket.c
9120
wake_up_interruptible(&asoc->wait);
net/sctp/socket.c
9144
struct sctp_association *asoc)
net/sctp/socket.c
9146
struct sctp_association *tmp = asoc;
net/sctp/socket.c
9151
if (asoc->ep->sndbuf_policy)
net/sctp/socket.c
9152
return __sctp_write_space(asoc);
net/sctp/socket.c
9157
if (asoc->base.dead)
net/sctp/socket.c
9178
if (tmp == asoc)
net/sctp/socket.c
9190
struct sctp_association *asoc = chunk->asoc;
net/sctp/socket.c
9191
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9195
asoc->sndbuf_used -= skb->truesize + sizeof(struct sctp_chunk);
net/sctp/socket.c
9210
ev = sctp_ulpevent_make_authkey(asoc, shkey->key_id,
net/sctp/socket.c
9214
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/socket.c
9220
sctp_wake_up_waiters(sk, asoc);
net/sctp/socket.c
9222
sctp_association_put(asoc);
net/sctp/socket.c
9245
static int sctp_wait_for_sndbuf(struct sctp_association *asoc,
net/sctp/socket.c
9249
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9254
pr_debug("%s: asoc:%p, timeo:%ld, msg_len:%zu\n", __func__, asoc,
net/sctp/socket.c
9260
sctp_association_hold(asoc);
net/sctp/socket.c
9264
prepare_to_wait_exclusive(&asoc->wait, &wait,
net/sctp/socket.c
9266
if (asoc->base.dead)
net/sctp/socket.c
9270
if (sk->sk_err || asoc->state >= SCTP_STATE_SHUTDOWN_PENDING)
net/sctp/socket.c
9274
if ((int)msg_len <= sctp_wspace(asoc) &&
net/sctp/socket.c
9284
if (sk != asoc->base.sk)
net/sctp/socket.c
9291
finish_wait(&asoc->wait, &wait);
net/sctp/socket.c
9296
sctp_association_put(asoc);
net/sctp/socket.c
9335
struct sctp_association *asoc;
net/sctp/socket.c
9338
list_for_each_entry(asoc, &((sctp_sk(sk))->ep->asocs), asocs) {
net/sctp/socket.c
9339
__sctp_write_space(asoc);
net/sctp/socket.c
9362
static int sctp_wait_for_connect(struct sctp_association *asoc, long *timeo_p)
net/sctp/socket.c
9364
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9369
pr_debug("%s: asoc:%p, timeo:%ld\n", __func__, asoc, *timeo_p);
net/sctp/socket.c
9372
sctp_association_hold(asoc);
net/sctp/socket.c
9375
prepare_to_wait_exclusive(&asoc->wait, &wait,
net/sctp/socket.c
9381
if (sk->sk_err || asoc->state >= SCTP_STATE_SHUTDOWN_PENDING ||
net/sctp/socket.c
9382
asoc->base.dead)
net/sctp/socket.c
9387
if (sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
9401
finish_wait(&asoc->wait, &wait);
net/sctp/socket.c
9404
sctp_association_put(asoc);
net/sctp/socket.c
9409
if (asoc->init_err_counter + 1 > asoc->max_init_attempts)
net/sctp/socket.c
9543
if (event->asoc == assoc) {
net/sctp/socket.c
9572
if (event->asoc == assoc) {
net/sctp/stream.c
1005
&asoc->peer.tsn_map);
net/sctp/stream.c
1008
asoc->stream.si->report_ftsn(&asoc->ulpq, mtsn);
net/sctp/stream.c
1010
sctp_tsnmap_init(&asoc->peer.tsn_map,
net/sctp/stream.c
1018
list_splice_init(&asoc->outqueue.out_chunk_list, &temp);
net/sctp/stream.c
1019
sctp_outq_free(&asoc->outqueue);
net/sctp/stream.c
1020
list_splice_init(&temp, &asoc->outqueue.out_chunk_list);
net/sctp/stream.c
1022
asoc->next_tsn = rtsn;
net/sctp/stream.c
1023
asoc->ctsn_ack_point = asoc->next_tsn - 1;
net/sctp/stream.c
1024
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/stream.c
1037
*evp = sctp_ulpevent_make_assoc_reset_event(asoc, flags,
net/sctp/stream.c
1055
*evp = sctp_ulpevent_make_stream_change_event(asoc, flags,
net/sctp/stream.c
1069
*evp = sctp_ulpevent_make_stream_change_event(asoc, flags,
net/sctp/stream.c
1073
asoc->strreset_outstanding--;
net/sctp/stream.c
1074
asoc->strreset_outseq++;
net/sctp/stream.c
1077
if (!asoc->strreset_outstanding) {
net/sctp/stream.c
1078
t = asoc->strreset_chunk->transport;
net/sctp/stream.c
1082
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
1083
asoc->strreset_chunk = NULL;
net/sctp/stream.c
229
static int sctp_send_reconf(struct sctp_association *asoc,
net/sctp/stream.c
234
retval = sctp_primitive_RECONF(asoc->base.net, asoc, chunk);
net/sctp/stream.c
244
struct sctp_association *asoc;
net/sctp/stream.c
247
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream.c
248
if (!asoc->outqueue.out_qlen)
net/sctp/stream.c
265
int sctp_send_reset_streams(struct sctp_association *asoc,
net/sctp/stream.c
268
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
27
struct sctp_association *asoc;
net/sctp/stream.c
275
if (!asoc->peer.reconf_capable ||
net/sctp/stream.c
276
!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ)) {
net/sctp/stream.c
281
if (asoc->strreset_outstanding) {
net/sctp/stream.c
31
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream.c
32
outq = &asoc->outqueue;
net/sctp/stream.c
334
chunk = sctp_make_strreset_req(asoc, str_nums, nstr_list, out, in);
net/sctp/stream.c
353
asoc->strreset_chunk = chunk;
net/sctp/stream.c
354
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
356
retval = sctp_send_reconf(asoc, chunk);
net/sctp/stream.c
358
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
359
asoc->strreset_chunk = NULL;
net/sctp/stream.c
374
asoc->strreset_outstanding = out + in;
net/sctp/stream.c
380
int sctp_send_reset_assoc(struct sctp_association *asoc)
net/sctp/stream.c
382
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
387
if (!asoc->peer.reconf_capable ||
net/sctp/stream.c
388
!(asoc->strreset_enable & SCTP_ENABLE_RESET_ASSOC_REQ))
net/sctp/stream.c
391
if (asoc->strreset_outstanding)
net/sctp/stream.c
394
if (!sctp_outq_is_empty(&asoc->outqueue))
net/sctp/stream.c
397
chunk = sctp_make_strreset_tsnreq(asoc);
net/sctp/stream.c
405
asoc->strreset_chunk = chunk;
net/sctp/stream.c
406
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
408
retval = sctp_send_reconf(asoc, chunk);
net/sctp/stream.c
410
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
411
asoc->strreset_chunk = NULL;
net/sctp/stream.c
419
asoc->strreset_outstanding = 1;
net/sctp/stream.c
424
int sctp_send_add_streams(struct sctp_association *asoc,
net/sctp/stream.c
427
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
433
if (!asoc->peer.reconf_capable ||
net/sctp/stream.c
434
!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ)) {
net/sctp/stream.c
439
if (asoc->strreset_outstanding) {
net/sctp/stream.c
460
chunk = sctp_make_strreset_addstrm(asoc, out, in);
net/sctp/stream.c
466
asoc->strreset_chunk = chunk;
net/sctp/stream.c
467
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
469
retval = sctp_send_reconf(asoc, chunk);
net/sctp/stream.c
47
if (asoc->peer.prsctp_capable &&
net/sctp/stream.c
471
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
472
asoc->strreset_chunk = NULL;
net/sctp/stream.c
476
asoc->strreset_outstanding = !!out + !!in;
net/sctp/stream.c
483
struct sctp_association *asoc, __be32 resp_seq,
net/sctp/stream.c
486
struct sctp_chunk *chunk = asoc->strreset_chunk;
net/sctp/stream.c
49
asoc->sent_cnt_removable--;
net/sctp/stream.c
509
static void sctp_update_strreset_result(struct sctp_association *asoc,
net/sctp/stream.c
512
asoc->strreset_result[1] = asoc->strreset_result[0];
net/sctp/stream.c
513
asoc->strreset_result[0] = result;
net/sctp/stream.c
517
struct sctp_association *asoc,
net/sctp/stream.c
522
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
531
sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map)) {
net/sctp/stream.c
536
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
537
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
540
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
541
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
542
result = asoc->strreset_result[i];
net/sctp/stream.c
545
asoc->strreset_inseq++;
net/sctp/stream.c
551
if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ))
net/sctp/stream.c
563
if (asoc->strreset_chunk) {
net/sctp/stream.c
565
asoc, outreq->response_seq,
net/sctp/stream.c
572
asoc->strreset_outstanding--;
net/sctp/stream.c
573
asoc->strreset_outseq++;
net/sctp/stream.c
575
if (!asoc->strreset_outstanding) {
net/sctp/stream.c
578
t = asoc->strreset_chunk->transport;
net/sctp/stream.c
582
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
583
asoc->strreset_chunk = NULL;
net/sctp/stream.c
596
*evp = sctp_ulpevent_make_stream_reset_event(asoc,
net/sctp/stream.c
600
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
602
return sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
606
struct sctp_association *asoc,
net/sctp/stream.c
611
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
619
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
620
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
623
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
624
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
625
result = asoc->strreset_result[i];
net/sctp/stream.c
630
asoc->strreset_inseq++;
net/sctp/stream.c
632
if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ))
net/sctp/stream.c
635
if (asoc->strreset_outstanding) {
net/sctp/stream.c
651
asoc->strreset_inseq--;
net/sctp/stream.c
655
chunk = sctp_make_strreset_req(asoc, nums, str_p, 1, 0);
net/sctp/stream.c
667
asoc->strreset_chunk = chunk;
net/sctp/stream.c
668
asoc->strreset_outstanding = 1;
net/sctp/stream.c
669
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
674
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
677
chunk = sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
683
struct sctp_association *asoc,
net/sctp/stream.c
689
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
695
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
696
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
699
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
700
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
701
result = asoc->strreset_result[i];
net/sctp/stream.c
703
next_tsn = asoc->ctsn_ack_point + 1;
net/sctp/stream.c
705
sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + 1;
net/sctp/stream.c
710
if (!sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/stream.c
715
asoc->strreset_inseq++;
net/sctp/stream.c
717
if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_ASSOC_REQ))
net/sctp/stream.c
720
if (asoc->strreset_outstanding) {
net/sctp/stream.c
730
max_tsn_seen = sctp_tsnmap_get_max_tsn_seen(&asoc->peer.tsn_map);
net/sctp/stream.c
731
asoc->stream.si->report_ftsn(&asoc->ulpq, max_tsn_seen);
net/sctp/stream.c
738
init_tsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + (1U << 31);
net/sctp/stream.c
739
sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
net/sctp/stream.c
746
sctp_outq_free(&asoc->outqueue);
net/sctp/stream.c
753
next_tsn = asoc->next_tsn;
net/sctp/stream.c
754
asoc->ctsn_ack_point = next_tsn - 1;
net/sctp/stream.c
755
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/stream.c
769
*evp = sctp_ulpevent_make_assoc_reset_event(asoc, 0, init_tsn,
net/sctp/stream.c
773
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
775
return sctp_make_strreset_tsnresp(asoc, result, request_seq,
net/sctp/stream.c
780
struct sctp_association *asoc,
net/sctp/stream.c
785
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
791
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
792
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
795
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
796
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
797
result = asoc->strreset_result[i];
net/sctp/stream.c
800
asoc->strreset_inseq++;
net/sctp/stream.c
802
if (!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ))
net/sctp/stream.c
813
if (asoc->strreset_chunk) {
net/sctp/stream.c
815
asoc, 0, SCTP_PARAM_RESET_ADD_IN_STREAMS)) {
net/sctp/stream.c
821
asoc->strreset_outstanding--;
net/sctp/stream.c
822
asoc->strreset_outseq++;
net/sctp/stream.c
824
if (!asoc->strreset_outstanding) {
net/sctp/stream.c
827
t = asoc->strreset_chunk->transport;
net/sctp/stream.c
831
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
832
asoc->strreset_chunk = NULL;
net/sctp/stream.c
840
*evp = sctp_ulpevent_make_stream_change_event(asoc,
net/sctp/stream.c
844
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
846
return sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
850
struct sctp_association *asoc,
net/sctp/stream.c
855
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
863
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
864
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
867
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
868
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
869
result = asoc->strreset_result[i];
net/sctp/stream.c
874
asoc->strreset_inseq++;
net/sctp/stream.c
876
if (!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ))
net/sctp/stream.c
879
if (asoc->strreset_outstanding) {
net/sctp/stream.c
893
chunk = sctp_make_strreset_addstrm(asoc, out, 0);
net/sctp/stream.c
897
asoc->strreset_chunk = chunk;
net/sctp/stream.c
898
asoc->strreset_outstanding = 1;
net/sctp/stream.c
899
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
906
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
909
chunk = sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
915
struct sctp_association *asoc,
net/sctp/stream.c
919
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
926
req = sctp_chunk_lookup_strreset_param(asoc, resp->response_seq, 0);
net/sctp/stream.c
972
*evp = sctp_ulpevent_make_stream_reset_event(asoc, flags,
net/sctp/stream.c
989
*evp = sctp_ulpevent_make_stream_reset_event(asoc, flags,
net/sctp/stream_interleave.c
1004
struct sctp_stream *stream = &ulpq->asoc->stream;
net/sctp/stream_interleave.c
1055
struct sctp_stream *stream = &ulpq->asoc->stream;
net/sctp/stream_interleave.c
1101
struct sctp_association *asoc = q->asoc;
net/sctp/stream_interleave.c
1108
if (!asoc->peer.prsctp_capable)
net/sctp/stream_interleave.c
1111
if (TSN_lt(asoc->adv_peer_ack_point, ctsn))
net/sctp/stream_interleave.c
1112
asoc->adv_peer_ack_point = ctsn;
net/sctp/stream_interleave.c
1121
} else if (TSN_lte(tsn, asoc->adv_peer_ack_point + 1)) {
net/sctp/stream_interleave.c
1129
asoc->adv_peer_ack_point = tsn;
net/sctp/stream_interleave.c
1145
if (asoc->adv_peer_ack_point > ctsn)
net/sctp/stream_interleave.c
1146
ftsn_chunk = sctp_make_ifwdtsn(asoc, asoc->adv_peer_ack_point,
net/sctp/stream_interleave.c
1151
SCTP_INC_STATS(asoc->base.net, SCTP_MIB_OUTCTRLCHUNKS);
net/sctp/stream_interleave.c
117
stream = &chunk->asoc->stream;
net/sctp/stream_interleave.c
1172
incnt = chunk->asoc->stream.incnt;
net/sctp/stream_interleave.c
1188
incnt = chunk->asoc->stream.incnt;
net/sctp/stream_interleave.c
1199
sctp_tsnmap_skip(&ulpq->asoc->peer.tsn_map, ftsn);
net/sctp/stream_interleave.c
1234
sctp_tsnmap_skip(&ulpq->asoc->peer.tsn_map, ftsn);
net/sctp/stream_interleave.c
1238
if (ftsn == sctp_tsnmap_get_max_tsn_seen(&ulpq->asoc->peer.tsn_map))
net/sctp/stream_interleave.c
1254
struct sctp_stream_in *sin = sctp_stream_in(&ulpq->asoc->stream, sid);
net/sctp/stream_interleave.c
1255
struct sctp_stream *stream = &ulpq->asoc->stream;
net/sctp/stream_interleave.c
1348
struct sctp_association *asoc;
net/sctp/stream_interleave.c
1350
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream_interleave.c
1351
stream->si = asoc->peer.intl_capable ? &sctp_stream_interleave_1
net/sctp/stream_interleave.c
192
sin = sctp_stream_in(&ulpq->asoc->stream, event->stream);
net/sctp/stream_interleave.c
244
retval = sctp_make_reassembled_event(ulpq->asoc->base.net, &ulpq->reasm,
net/sctp/stream_interleave.c
25
const struct sctp_association *asoc,
net/sctp/stream_interleave.c
261
struct sctp_association *asoc = ulpq->asoc;
net/sctp/stream_interleave.c
272
sin = sctp_stream_in(&ulpq->asoc->stream, event->stream);
net/sctp/stream_interleave.c
326
pd_point = sctp_sk(asoc->base.sk)->pd_point;
net/sctp/stream_interleave.c
328
retval = sctp_make_reassembled_event(asoc->base.net,
net/sctp/stream_interleave.c
339
retval = sctp_make_reassembled_event(asoc->base.net, &ulpq->reasm,
net/sctp/stream_interleave.c
361
sin = sctp_stream_in(&ulpq->asoc->stream, event->stream);
net/sctp/stream_interleave.c
38
retval = sctp_make_idata(asoc, flags, sizeof(dp) + len, gfp);
net/sctp/stream_interleave.c
425
stream = &ulpq->asoc->stream;
net/sctp/stream_interleave.c
454
stream = &ulpq->asoc->stream;
net/sctp/stream_interleave.c
472
struct sock *sk = ulpq->asoc->base.sk;
net/sctp/stream_interleave.c
490
if (!sctp_ulpevent_is_enabled(event, ulpq->asoc->subscribe))
net/sctp/stream_interleave.c
570
sin = sctp_stream_in(&ulpq->asoc->stream, event->stream);
net/sctp/stream_interleave.c
59
stream = &chunk->asoc->stream;
net/sctp/stream_interleave.c
625
retval = sctp_make_reassembled_event(ulpq->asoc->base.net,
net/sctp/stream_interleave.c
643
struct sctp_association *asoc = ulpq->asoc;
net/sctp/stream_interleave.c
654
sin = sctp_stream_in(&ulpq->asoc->stream, event->stream);
net/sctp/stream_interleave.c
709
pd_point = sctp_sk(asoc->base.sk)->pd_point;
net/sctp/stream_interleave.c
711
retval = sctp_make_reassembled_event(asoc->base.net,
net/sctp/stream_interleave.c
722
retval = sctp_make_reassembled_event(asoc->base.net, &ulpq->reasm_uo,
net/sctp/stream_interleave.c
744
sin = sctp_stream_in(&ulpq->asoc->stream, event->stream);
net/sctp/stream_interleave.c
768
csin = sctp_stream_in(&ulpq->asoc->stream, cevent->stream);
net/sctp/stream_interleave.c
808
retval = sctp_make_reassembled_event(ulpq->asoc->base.net,
net/sctp/stream_interleave.c
826
event = sctp_ulpevent_make_rcvmsg(chunk->asoc, chunk, gfp);
net/sctp/stream_interleave.c
874
csin = sctp_stream_in(&ulpq->asoc->stream, cevent->stream);
net/sctp/stream_interleave.c
915
retval = sctp_make_reassembled_event(ulpq->asoc->base.net,
net/sctp/stream_interleave.c
957
struct sctp_association *asoc = ulpq->asoc;
net/sctp/stream_interleave.c
964
if (skb_queue_empty(&asoc->base.sk->sk_receive_queue)) {
net/sctp/stream_interleave.c
98
stream = &chunk->asoc->stream;
net/sctp/stream_interleave.c
981
struct sock *sk = ulpq->asoc->base.sk;
net/sctp/stream_interleave.c
984
if (!sctp_ulpevent_type_enabled(ulpq->asoc->subscribe,
net/sctp/stream_interleave.c
988
ev = sctp_ulpevent_make_pdapi(ulpq->asoc, SCTP_PARTIAL_DELIVERY_ABORTED,
net/sctp/stream_sched.c
148
int sctp_sched_set_sched(struct sctp_association *asoc,
net/sctp/stream_sched.c
151
const struct sctp_sched_ops *old = asoc->outqueue.sched;
net/sctp/stream_sched.c
165
sctp_sched_free_sched(&asoc->stream);
net/sctp/stream_sched.c
167
asoc->outqueue.sched = n;
net/sctp/stream_sched.c
168
n->init(&asoc->stream);
net/sctp/stream_sched.c
169
for (i = 0; i < asoc->stream.outcnt; i++) {
net/sctp/stream_sched.c
170
if (!SCTP_SO(&asoc->stream, i)->ext)
net/sctp/stream_sched.c
173
ret = n->init_sid(&asoc->stream, i, GFP_ATOMIC);
net/sctp/stream_sched.c
179
list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) {
net/sctp/stream_sched.c
183
n->enqueue(&asoc->outqueue, msg);
net/sctp/stream_sched.c
189
sctp_sched_free_sched(&asoc->stream);
net/sctp/stream_sched.c
190
asoc->outqueue.sched = &sctp_sched_fcfs; /* Always safe */
net/sctp/stream_sched.c
195
int sctp_sched_get_sched(struct sctp_association *asoc)
net/sctp/stream_sched.c
200
if (asoc->outqueue.sched == sctp_sched_ops[i])
net/sctp/stream_sched.c
206
int sctp_sched_set_value(struct sctp_association *asoc, __u16 sid,
net/sctp/stream_sched.c
209
if (sid >= asoc->stream.outcnt)
net/sctp/stream_sched.c
212
if (!SCTP_SO(&asoc->stream, sid)->ext) {
net/sctp/stream_sched.c
215
ret = sctp_stream_init_ext(&asoc->stream, sid);
net/sctp/stream_sched.c
220
return asoc->outqueue.sched->set(&asoc->stream, sid, value, gfp);
net/sctp/stream_sched.c
223
int sctp_sched_get_value(struct sctp_association *asoc, __u16 sid,
net/sctp/stream_sched.c
226
if (sid >= asoc->stream.outcnt)
net/sctp/stream_sched.c
229
if (!SCTP_SO(&asoc->stream, sid)->ext)
net/sctp/stream_sched.c
232
return asoc->outqueue.sched->get(&asoc->stream, sid, value);
net/sctp/stream_sched.c
238
!q->asoc->peer.intl_capable) {
net/sctp/stream_sched.c
247
sout = SCTP_SO(&q->asoc->stream, sid);
net/sctp/stream_sched.c
248
q->asoc->stream.out_curr = sout;
net/sctp/stream_sched.c
252
q->asoc->stream.out_curr = NULL;
net/sctp/stream_sched.c
275
struct sctp_association *asoc;
net/sctp/stream_sched.c
277
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream_sched.c
279
return asoc->outqueue.sched;
net/sctp/stream_sched.c
60
struct sctp_stream *stream = &q->asoc->stream;
net/sctp/stream_sched_fc.c
107
stream = &q->asoc->stream;
net/sctp/stream_sched_fc.c
113
struct sctp_stream *stream = &q->asoc->stream;
net/sctp/stream_sched_fc.c
135
struct sctp_stream *stream = &q->asoc->stream;
net/sctp/stream_sched_fc.c
171
struct sctp_association *asoc;
net/sctp/stream_sched_fc.c
174
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream_sched_fc.c
175
list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) {
net/sctp/stream_sched_prio.c
224
stream = &q->asoc->stream;
net/sctp/stream_sched_prio.c
230
struct sctp_stream *stream = &q->asoc->stream;
net/sctp/stream_sched_prio.c
267
soute = SCTP_SO(&q->asoc->stream, sid)->ext;
net/sctp/stream_sched_prio.c
278
struct sctp_association *asoc;
net/sctp/stream_sched_prio.c
282
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream_sched_prio.c
283
list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) {
net/sctp/stream_sched_rr.c
106
stream = &q->asoc->stream;
net/sctp/stream_sched_rr.c
112
struct sctp_stream *stream = &q->asoc->stream;
net/sctp/stream_sched_rr.c
141
soute = SCTP_SO(&q->asoc->stream, sid)->ext;
net/sctp/stream_sched_rr.c
143
sctp_sched_rr_next_stream(&q->asoc->stream);
net/sctp/stream_sched_rr.c
146
sctp_sched_rr_unsched(&q->asoc->stream, soute);
net/sctp/stream_sched_rr.c
151
struct sctp_association *asoc;
net/sctp/stream_sched_rr.c
155
asoc = container_of(stream, struct sctp_association, stream);
net/sctp/stream_sched_rr.c
156
list_for_each_entry(ch, &asoc->outqueue.out_chunk_list, list) {
net/sctp/transport.c
161
if (transport->asoc)
net/sctp/transport.c
162
sctp_association_put(transport->asoc);
net/sctp/transport.c
224
struct sctp_association *asoc)
net/sctp/transport.c
226
transport->asoc = asoc;
net/sctp/transport.c
227
sctp_association_hold(asoc);
net/sctp/transport.c
241
struct sctp_association *asoc = transport->asoc;
net/sctp/transport.c
243
if (!transport->pathmtu && asoc && asoc->pathmtu)
net/sctp/transport.c
244
transport->pathmtu = asoc->pathmtu;
net/sctp/transport.c
269
sctp_assoc_sync_pmtu(t->asoc);
net/sctp/transport.c
279
sctp_assoc_sync_pmtu(t->asoc);
net/sctp/transport.c
291
sctp_assoc_sync_pmtu(t->asoc);
net/sctp/transport.c
316
sctp_assoc_sync_pmtu(t->asoc);
net/sctp/transport.c
334
sctp_assoc_sync_pmtu(t->asoc);
net/sctp/transport.c
395
struct sock *sk = t->asoc->base.sk;
net/sctp/transport.c
444
struct sctp_association *asoc = transport->asoc;
net/sctp/transport.c
460
if (transport->dst && asoc &&
net/sctp/transport.c
461
(!asoc->peer.primary_path || transport == asoc->peer.active_path))
net/sctp/transport.c
462
opt->pf->to_sk_saddr(&transport->saddr, asoc->base.sk);
net/sctp/transport.c
488
struct net *net = tp->asoc->base.net;
net/sctp/transport.c
529
if (tp->rto < tp->asoc->rto_min)
net/sctp/transport.c
530
tp->rto = tp->asoc->rto_min;
net/sctp/transport.c
535
if (tp->rto > tp->asoc->rto_max)
net/sctp/transport.c
536
tp->rto = tp->asoc->rto_max;
net/sctp/transport.c
538
sctp_max_rto(tp->asoc, tp);
net/sctp/transport.c
556
struct sctp_association *asoc = transport->asoc;
net/sctp/transport.c
563
if (asoc->fast_recovery &&
net/sctp/transport.c
564
TSN_lte(asoc->fast_recovery_exit, sack_ctsn))
net/sctp/transport.c
565
asoc->fast_recovery = 0;
net/sctp/transport.c
569
pmtu = transport->asoc->pathmtu;
net/sctp/transport.c
586
if (asoc->fast_recovery)
net/sctp/transport.c
654
struct sctp_association *asoc = transport->asoc;
net/sctp/transport.c
666
4*asoc->pathmtu);
net/sctp/transport.c
667
transport->cwnd = asoc->pathmtu;
net/sctp/transport.c
670
asoc->fast_recovery = 0;
net/sctp/transport.c
686
if (asoc->fast_recovery)
net/sctp/transport.c
690
asoc->fast_recovery = 1;
net/sctp/transport.c
691
asoc->fast_recovery_exit = asoc->next_tsn - 1;
net/sctp/transport.c
694
4*asoc->pathmtu);
net/sctp/transport.c
714
4*asoc->pathmtu);
net/sctp/transport.c
730
4*asoc->pathmtu);
net/sctp/transport.c
755
struct sctp_association *asoc = t->asoc;
net/sctp/transport.c
759
if (t->burst_limited || asoc->max_burst == 0)
net/sctp/transport.c
762
max_burst_bytes = t->flight_size + (asoc->max_burst * asoc->pathmtu);
net/sctp/transport.c
796
struct sctp_association *asoc = t->asoc;
net/sctp/transport.c
803
t->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380));
net/sctp/transport.c
805
t->ssthresh = asoc->peer.i.a_rwnd;
net/sctp/transport.c
806
t->rto = asoc->rto_initial;
net/sctp/transport.c
807
sctp_max_rto(asoc, t);
net/sctp/transport.c
833
sctp_retransmit(&t->asoc->outqueue, t, SCTP_RTXR_T3_RTX);
net/sctp/tsnmap.c
117
trans->asoc->peer.sack_generation;
net/sctp/ulpevent.c
100
sctp_association_put(asoc);
net/sctp/ulpevent.c
1002
sinfo.sinfo_assoc_id = sctp_assoc2id(event->asoc);
net/sctp/ulpevent.c
1004
sinfo.sinfo_context = event->asoc->default_rcv_context;
net/sctp/ulpevent.c
1030
rinfo.rcv_assoc_id = sctp_assoc2id(event->asoc);
net/sctp/ulpevent.c
1031
rinfo.rcv_context = event->asoc->default_rcv_context;
net/sctp/ulpevent.c
1053
nxtinfo.nxt_assoc_id = sctp_assoc2id(event->asoc);
net/sctp/ulpevent.c
1079
struct sctp_association *asoc)
net/sctp/ulpevent.c
1085
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
1086
sctp_assoc_rwnd_decrease(asoc, skb_headlen(skb));
net/sctp/ulpevent.c
1098
sctp_ulpevent_receive_data(sctp_skb2event(frag), asoc);
net/sctp/ulpevent.c
1132
sctp_assoc_rwnd_increase(event->asoc, len);
net/sctp/ulpevent.c
115
const struct sctp_association *asoc,
net/sctp/ulpevent.c
224
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
225
sac->sac_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
242
const struct sctp_association *asoc,
net/sctp/ulpevent.c
315
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
316
spc->spc_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
32
struct sctp_association *asoc);
net/sctp/ulpevent.c
329
sctp_get_pf_specific(asoc->base.sk->sk_family)->addr_to_user(
net/sctp/ulpevent.c
330
sctp_sk(asoc->base.sk),
net/sctp/ulpevent.c
342
struct sctp_association *asoc = transport->asoc;
net/sctp/ulpevent.c
346
if (asoc->state < SCTP_STATE_ESTABLISHED)
net/sctp/ulpevent.c
352
event = sctp_ulpevent_make_peer_addr_change(asoc, &addr, 0, state,
net/sctp/ulpevent.c
355
asoc->stream.si->enqueue_event(&asoc->ulpq, event);
net/sctp/ulpevent.c
374
sctp_ulpevent_make_remote_error(const struct sctp_association *asoc,
net/sctp/ulpevent.c
417
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
418
sre->sre_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
431
const struct sctp_association *asoc, struct sctp_chunk *chunk,
net/sctp/ulpevent.c
450
skb_pull(skb, sctp_datachk_len(&asoc->stream));
net/sctp/ulpevent.c
451
len -= sctp_datachk_len(&asoc->stream);
net/sctp/ulpevent.c
525
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
526
ssf->ssf_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
534
const struct sctp_association *asoc, struct sctp_chunk *chunk,
net/sctp/ulpevent.c
547
len -= sctp_datachk_len(&asoc->stream);
net/sctp/ulpevent.c
549
skb_pull(skb, sctp_datachk_len(&asoc->stream));
net/sctp/ulpevent.c
566
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
567
ssf->ssf_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
578
const struct sctp_association *asoc,
net/sctp/ulpevent.c
626
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
627
sse->sse_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
641
const struct sctp_association *asoc, gfp_t gfp)
net/sctp/ulpevent.c
658
sai->sai_adaptation_ind = asoc->peer.adaptation_ind;
net/sctp/ulpevent.c
659
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
660
sai->sai_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
675
struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc,
net/sctp/ulpevent.c
681
struct sock *sk = asoc->base.sk;
net/sctp/ulpevent.c
690
if (asoc->ep->rcvbuf_policy)
net/sctp/ulpevent.c
691
rx_count = atomic_read(&asoc->rmem_alloc);
net/sctp/ulpevent.c
708
if (sctp_tsnmap_mark(&asoc->peer.tsn_map,
net/sctp/ulpevent.c
745
sctp_ulpevent_receive_data(event, asoc);
net/sctp/ulpevent.c
750
event->cumtsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map);
net/sctp/ulpevent.c
77
const struct sctp_association *asoc)
net/sctp/ulpevent.c
772
const struct sctp_association *asoc,
net/sctp/ulpevent.c
817
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
818
pd->pdapi_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
826
const struct sctp_association *asoc, __u16 key_id,
net/sctp/ulpevent.c
85
sctp_association_hold((struct sctp_association *)asoc);
net/sctp/ulpevent.c
852
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
853
ak->auth_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
865
const struct sctp_association *asoc, gfp_t gfp)
net/sctp/ulpevent.c
87
event->asoc = (struct sctp_association *)asoc;
net/sctp/ulpevent.c
88
atomic_add(event->rmem_len, &event->asoc->rmem_alloc);
net/sctp/ulpevent.c
882
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
883
sdry->sender_dry_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
889
const struct sctp_association *asoc, __u16 flags, __u16 stream_num,
net/sctp/ulpevent.c
89
sctp_skb_set_owner_r(skb, asoc->base.sk);
net/sctp/ulpevent.c
908
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
909
sreset->strreset_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
91
chunk->head_skb->sk = asoc->base.sk;
net/sctp/ulpevent.c
918
const struct sctp_association *asoc, __u16 flags, __u32 local_tsn,
net/sctp/ulpevent.c
936
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
937
areset->assocreset_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
945
const struct sctp_association *asoc, __u16 flags,
net/sctp/ulpevent.c
963
sctp_ulpevent_set_owner(event, asoc);
net/sctp/ulpevent.c
964
schange->strchange_assoc_id = sctp_assoc2id(asoc);
net/sctp/ulpevent.c
97
struct sctp_association *asoc = event->asoc;
net/sctp/ulpevent.c
99
atomic_sub(event->rmem_len, &asoc->rmem_alloc);
net/sctp/ulpqueue.c
1023
struct sctp_association *asoc;
net/sctp/ulpqueue.c
1028
asoc = ulpq->asoc;
net/sctp/ulpqueue.c
1029
sp = sctp_sk(asoc->base.sk);
net/sctp/ulpqueue.c
1040
skb = skb_peek(&asoc->ulpq.reasm);
net/sctp/ulpqueue.c
1043
if (!TSN_lte(ctsn, sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map)))
net/sctp/ulpqueue.c
1072
struct sctp_association *asoc = ulpq->asoc;
net/sctp/ulpqueue.c
1079
if (skb_queue_empty(&asoc->base.sk->sk_receive_queue)) {
net/sctp/ulpqueue.c
1085
if (sk_rmem_schedule(asoc->base.sk, chunk->skb, needed) &&
net/sctp/ulpqueue.c
1111
sk = ulpq->asoc->base.sk;
net/sctp/ulpqueue.c
1113
if (sctp_ulpevent_type_enabled(ulpq->asoc->subscribe,
net/sctp/ulpqueue.c
1115
ev = sctp_ulpevent_make_pdapi(ulpq->asoc,
net/sctp/ulpqueue.c
125
int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc)
net/sctp/ulpqueue.c
144
if (!skb_queue_empty(&sp->pd_lobby) && asoc) {
net/sctp/ulpqueue.c
150
if (event->asoc == asoc) {
net/sctp/ulpqueue.c
165
struct sctp_sock *sp = sctp_sk(ulpq->asoc->base.sk);
net/sctp/ulpqueue.c
176
return sctp_clear_pd(ulpq->asoc->base.sk, ulpq->asoc);
net/sctp/ulpqueue.c
181
struct sock *sk = ulpq->asoc->base.sk;
net/sctp/ulpqueue.c
204
if (!sctp_ulpevent_is_enabled(event, ulpq->asoc->subscribe))
net/sctp/ulpqueue.c
403
struct sctp_association *asoc;
net/sctp/ulpqueue.c
41
void sctp_ulpq_init(struct sctp_ulpq *ulpq, struct sctp_association *asoc)
net/sctp/ulpqueue.c
45
ulpq->asoc = asoc;
net/sctp/ulpqueue.c
469
asoc = ulpq->asoc;
net/sctp/ulpqueue.c
476
if (!sctp_sk(asoc->base.sk)->frag_interleave &&
net/sctp/ulpqueue.c
477
atomic_read(&sctp_sk(asoc->base.sk)->pd_mode))
net/sctp/ulpqueue.c
481
pd_point = sctp_sk(asoc->base.sk)->pd_point;
net/sctp/ulpqueue.c
483
retval = sctp_make_reassembled_event(asoc->base.net,
net/sctp/ulpqueue.c
493
retval = sctp_make_reassembled_event(ulpq->asoc->base.net,
net/sctp/ulpqueue.c
559
retval = sctp_make_reassembled_event(ulpq->asoc->base.net, &ulpq->reasm,
net/sctp/ulpqueue.c
592
ctsnap = sctp_tsnmap_get_ctsn(&ulpq->asoc->peer.tsn_map);
net/sctp/ulpqueue.c
660
retval = sctp_make_reassembled_event(ulpq->asoc->base.net, &ulpq->reasm,
net/sctp/ulpqueue.c
749
stream = &ulpq->asoc->stream;
net/sctp/ulpqueue.c
843
stream = &ulpq->asoc->stream;
net/sctp/ulpqueue.c
878
stream = &ulpq->asoc->stream;
net/sctp/ulpqueue.c
90
event = sctp_ulpevent_make_rcvmsg(chunk->asoc, chunk, gfp);
net/sctp/ulpqueue.c
943
stream = &ulpq->asoc->stream;
net/sctp/ulpqueue.c
967
tsnmap = &ulpq->asoc->peer.tsn_map;
security/security.c
4654
int security_sctp_assoc_request(struct sctp_association *asoc,
security/security.c
4657
return call_int_hook(sctp_assoc_request, asoc, skb);
security/security.c
4692
void security_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk,
security/security.c
4695
call_void_hook(sctp_sk_clone, asoc, sk, newsk);
security/security.c
4709
int security_sctp_assoc_established(struct sctp_association *asoc,
security/security.c
4712
return call_int_hook(sctp_assoc_established, asoc, skb);
security/selinux/hooks.c
5488
static int selinux_sctp_process_new_assoc(struct sctp_association *asoc,
security/selinux/hooks.c
5491
struct sock *sk = asoc->base.sk;
security/selinux/hooks.c
5503
asoc->peer_secid = SECSID_NULL;
security/selinux/hooks.c
5508
err = selinux_skb_peerlbl_sid(skb, family, &asoc->peer_secid);
security/selinux/hooks.c
5512
if (asoc->peer_secid == SECSID_NULL)
security/selinux/hooks.c
5513
asoc->peer_secid = SECINITSID_UNLABELED;
security/selinux/hooks.c
5515
asoc->peer_secid = SECINITSID_UNLABELED;
security/selinux/hooks.c
5526
sksec->peer_sid = asoc->peer_secid;
security/selinux/hooks.c
5527
} else if (sksec->peer_sid != asoc->peer_secid) {
security/selinux/hooks.c
5531
ad_net_init_from_sk(&ad, &net, asoc->base.sk);
security/selinux/hooks.c
5532
err = avc_has_perm(sksec->peer_sid, asoc->peer_secid,
security/selinux/hooks.c
5545
static int selinux_sctp_assoc_request(struct sctp_association *asoc,
security/selinux/hooks.c
5548
struct sk_security_struct *sksec = selinux_sock(asoc->base.sk);
security/selinux/hooks.c
5555
err = selinux_sctp_process_new_assoc(asoc, skb);
security/selinux/hooks.c
5565
err = selinux_conn_sid(sksec->sid, asoc->peer_secid, &conn_sid);
security/selinux/hooks.c
5569
asoc->secid = conn_sid;
security/selinux/hooks.c
5572
return selinux_netlbl_sctp_assoc_request(asoc, skb);
security/selinux/hooks.c
5578
static int selinux_sctp_assoc_established(struct sctp_association *asoc,
security/selinux/hooks.c
5581
struct sk_security_struct *sksec = selinux_sock(asoc->base.sk);
security/selinux/hooks.c
5590
asoc->secid = sksec->sid;
security/selinux/hooks.c
5592
return selinux_sctp_process_new_assoc(asoc, skb);
security/selinux/hooks.c
5677
static void selinux_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk,
security/selinux/hooks.c
5689
newsksec->sid = asoc->secid;
security/selinux/hooks.c
5690
newsksec->peer_sid = asoc->peer_secid;
security/selinux/include/netlabel.h
38
int selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
security/selinux/include/netlabel.h
91
selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
security/selinux/netlabel.c
277
int selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
security/selinux/netlabel.c
282
struct sk_security_struct *sksec = selinux_sock(asoc->base.sk);
security/selinux/netlabel.c
286
if (asoc->base.sk->sk_family != PF_INET &&
security/selinux/netlabel.c
287
asoc->base.sk->sk_family != PF_INET6)
security/selinux/netlabel.c
291
rc = security_netlbl_sid_to_secattr(asoc->secid, &secattr);
security/selinux/netlabel.c
301
rc = netlbl_conn_setattr(asoc->base.sk, (void *)&addr4, &secattr);
security/selinux/netlabel.c
305
rc = netlbl_conn_setattr(asoc->base.sk, (void *)&addr6, &secattr);
sound/soc/tegra/tegra_asoc_machine.c
146
if (machine->gpiod_hp_det && machine->asoc->add_hp_jack) {
sound/soc/tegra/tegra_asoc_machine.c
147
if (machine->asoc->hp_jack_name)
sound/soc/tegra/tegra_asoc_machine.c
148
jack_name = machine->asoc->hp_jack_name;
sound/soc/tegra/tegra_asoc_machine.c
171
if (machine->gpiod_hp_det && machine->asoc->add_headset_jack) {
sound/soc/tegra/tegra_asoc_machine.c
191
if (machine->gpiod_mic_det && machine->asoc->add_mic_jack) {
sound/soc/tegra/tegra_asoc_machine.c
298
unsigned int mclk = machine->asoc->mclk_rate(srate);
sound/soc/tegra/tegra_asoc_machine.c
299
unsigned int clk_id = machine->asoc->mclk_id;
sound/soc/tegra/tegra_asoc_machine.c
429
const struct tegra_asoc_data *asoc;
sound/soc/tegra/tegra_asoc_machine.c
440
asoc = of_device_get_match_data(dev);
sound/soc/tegra/tegra_asoc_machine.c
441
card = asoc->card;
sound/soc/tegra/tegra_asoc_machine.c
444
machine->asoc = asoc;
sound/soc/tegra/tegra_asoc_machine.c
489
if (asoc->set_ac97) {
sound/soc/tegra/tegra_asoc_machine.c
490
err = tegra_machine_register_codec(dev, asoc->codec_dev_name);
sound/soc/tegra/tegra_asoc_machine.c
514
if (asoc->add_common_controls) {
sound/soc/tegra/tegra_asoc_machine.c
519
if (asoc->add_common_dapm_widgets) {
sound/soc/tegra/tegra_asoc_machine.c
524
if (asoc->add_common_snd_ops)
sound/soc/tegra/tegra_asoc_machine.c
588
if (asoc->set_ac97) {
sound/soc/tegra/tegra_asoc_machine.h
36
const struct tegra_asoc_data *asoc;
sound/soc/tegra/tegra_wm8903.c
68
if (machine->asoc->hp_jack_gpio_active_low) {
sound/soc/tegra/tegra_wm8903.c
78
if (!machine->gpiod_mic_det && machine->asoc->add_mic_jack) {