include/linux/lsm_hook_defs.h
380
LSM_HOOK(int, 0, sctp_assoc_request, struct sctp_association *asoc,
include/linux/lsm_hook_defs.h
384
LSM_HOOK(void, LSM_RET_VOID, sctp_sk_clone, struct sctp_association *asoc,
include/linux/lsm_hook_defs.h
386
LSM_HOOK(int, 0, sctp_assoc_established, struct sctp_association *asoc,
include/linux/sctp.h
738
struct sctp_association *asoc;
include/linux/security.h
1711
int security_sctp_assoc_request(struct sctp_association *asoc, struct sk_buff *skb);
include/linux/security.h
1714
void security_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk,
include/linux/security.h
1716
int security_sctp_assoc_established(struct sctp_association *asoc,
include/linux/security.h
1927
static inline int security_sctp_assoc_request(struct sctp_association *asoc,
include/linux/security.h
1940
static inline void security_sctp_sk_clone(struct sctp_association *asoc,
include/linux/security.h
1946
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
116
int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
include/net/sctp/sctp.h
128
int sctp_primitive_RECONF(struct net *net, struct sctp_association *asoc,
include/net/sctp/sctp.h
149
struct sctp_association *asoc,
include/net/sctp/sctp.h
183
int sctp_send_reset_streams(struct sctp_association *asoc,
include/net/sctp/sctp.h
185
int sctp_send_reset_assoc(struct sctp_association *asoc);
include/net/sctp/sctp.h
186
int sctp_send_add_streams(struct sctp_association *asoc,
include/net/sctp/sctp.h
256
static inline void sctp_max_rto(struct sctp_association *asoc,
include/net/sctp/sctp.h
259
if (asoc->stats.max_obs_rto < (__u64)trans->rto) {
include/net/sctp/sctp.h
260
asoc->stats.max_obs_rto = trans->rto;
include/net/sctp/sctp.h
261
memset(&asoc->stats.obs_rto_ipaddr, 0,
include/net/sctp/sctp.h
263
memcpy(&asoc->stats.obs_rto_ipaddr, &trans->ipaddr,
include/net/sctp/sctp.h
346
static inline sctp_assoc_t sctp_assoc2id(const struct sctp_association *asoc)
include/net/sctp/sctp.h
348
return asoc ? asoc->assoc_id : 0;
include/net/sctp/sctp.h
352
sctp_assoc_to_state(const struct sctp_association *asoc)
include/net/sctp/sctp.h
361
return asoc->state + 1;
include/net/sctp/sctp.h
517
#define sctp_state(asoc, state) __sctp_state((asoc), (SCTP_STATE_##state))
include/net/sctp/sctp.h
518
static inline int __sctp_state(const struct sctp_association *asoc,
include/net/sctp/sctp.h
521
return asoc->state == state;
include/net/sctp/sctp.h
621
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
1067
struct sctp_association *asoc;
include/net/sctp/structs.h
1118
void sctp_prsctp_prune(struct sctp_association *asoc,
include/net/sctp/structs.h
1359
const struct sctp_association *asoc,
include/net/sctp/structs.h
2101
struct sctp_association *asoc;
include/net/sctp/structs.h
2103
asoc = container_of(base, struct sctp_association, base);
include/net/sctp/structs.h
2104
return asoc;
include/net/sctp/structs.h
2122
int sctp_assoc_lookup_laddr(struct sctp_association *asoc,
include/net/sctp/structs.h
2128
void sctp_assoc_rm_peer(struct sctp_association *asoc,
include/net/sctp/structs.h
2130
void sctp_assoc_control_transport(struct sctp_association *asoc,
include/net/sctp/structs.h
2141
void sctp_assoc_update_frag_point(struct sctp_association *asoc);
include/net/sctp/structs.h
2142
void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu);
include/net/sctp/structs.h
2143
void sctp_assoc_sync_pmtu(struct sctp_association *asoc);
include/net/sctp/structs.h
2150
int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc,
include/net/sctp/structs.h
2156
void sctp_assoc_clean_asconf_ack_cache(const struct sctp_association *asoc);
include/net/sctp/structs.h
2158
const struct sctp_association *asoc,
include/net/sctp/structs.h
2160
void sctp_asconf_queue_teardown(struct sctp_association *asoc);
include/net/sctp/structs.h
2164
struct sctp_chunk *sctp_get_ecne_prepend(struct sctp_association *asoc);
include/net/sctp/structs.h
606
struct sctp_association *asoc;
include/net/sctp/structs.h
805
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
1018
if (sctp_auth_recv_cid(subtype.chunk, asoc) && !chunk->auth)
net/sctp/associola.c
1025
asoc->peer.last_data_from = chunk->transport;
net/sctp/associola.c
1028
asoc->stats.ictrlchunks++;
net/sctp/associola.c
103
asoc->encap_port = sp->encap_port;
net/sctp/associola.c
1030
asoc->stats.isacks++;
net/sctp/associola.c
1038
state, ep, asoc, chunk, GFP_ATOMIC);
net/sctp/associola.c
1043
if (asoc->base.dead)
net/sctp/associola.c
1053
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
1088
int sctp_assoc_update(struct sctp_association *asoc,
net/sctp/associola.c
109
asoc->dscp = sp->dscp;
net/sctp/associola.c
1095
asoc->c = new->c;
net/sctp/associola.c
1096
asoc->peer.rwnd = new->peer.rwnd;
net/sctp/associola.c
1097
asoc->peer.sack_needed = new->peer.sack_needed;
net/sctp/associola.c
1098
asoc->peer.auth_capable = new->peer.auth_capable;
net/sctp/associola.c
1099
asoc->peer.i = new->peer.i;
net/sctp/associola.c
1101
if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
net/sctp/associola.c
1102
asoc->peer.i.initial_tsn, GFP_ATOMIC))
net/sctp/associola.c
1106
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/associola.c
1109
sctp_assoc_rm_peer(asoc, trans);
net/sctp/associola.c
1113
if (asoc->state >= SCTP_STATE_ESTABLISHED)
net/sctp/associola.c
112
asoc->sackdelay = msecs_to_jiffies(sp->sackdelay);
net/sctp/associola.c
1122
if (asoc->state >= SCTP_STATE_ESTABLISHED) {
net/sctp/associola.c
1123
asoc->next_tsn = new->next_tsn;
net/sctp/associola.c
1124
asoc->ctsn_ack_point = new->ctsn_ack_point;
net/sctp/associola.c
1125
asoc->adv_peer_ack_point = new->adv_peer_ack_point;
net/sctp/associola.c
113
asoc->sackfreq = sp->sackfreq;
net/sctp/associola.c
1130
sctp_stream_clear(&asoc->stream);
net/sctp/associola.c
1136
sctp_ulpq_flush(&asoc->ulpq);
net/sctp/associola.c
1142
asoc->overall_error_count = 0;
net/sctp/associola.c
1148
if (!sctp_assoc_add_peer(asoc, &trans->ipaddr,
net/sctp/associola.c
1152
asoc->ctsn_ack_point = asoc->next_tsn - 1;
net/sctp/associola.c
1153
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/associola.c
1155
if (sctp_state(asoc, COOKIE_WAIT))
net/sctp/associola.c
1156
sctp_stream_update(&asoc->stream, &new->stream);
net/sctp/associola.c
1159
if (sctp_assoc_set_id(asoc, GFP_ATOMIC))
net/sctp/associola.c
1166
kfree(asoc->peer.peer_random);
net/sctp/associola.c
1167
asoc->peer.peer_random = new->peer.peer_random;
net/sctp/associola.c
1170
kfree(asoc->peer.peer_chunks);
net/sctp/associola.c
1171
asoc->peer.peer_chunks = new->peer.peer_chunks;
net/sctp/associola.c
1174
kfree(asoc->peer.peer_hmacs);
net/sctp/associola.c
1175
asoc->peer.peer_hmacs = new->peer.peer_hmacs;
net/sctp/associola.c
1178
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
1260
void sctp_assoc_update_retran_path(struct sctp_association *asoc)
net/sctp/associola.c
1262
struct sctp_transport *trans = asoc->peer.retran_path;
net/sctp/associola.c
1266
if (asoc->peer.transport_count == 1)
net/sctp/associola.c
1271
if (asoc->peer.active_path == asoc->peer.retran_path &&
net/sctp/associola.c
1272
asoc->peer.active_path->state == SCTP_ACTIVE)
net/sctp/associola.c
1279
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
1288
if (trans == asoc->peer.retran_path)
net/sctp/associola.c
129
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc->rto_initial;
net/sctp/associola.c
1292
asoc->peer.retran_path = trans_next;
net/sctp/associola.c
1295
__func__, asoc, &asoc->peer.retran_path->ipaddr.sa);
net/sctp/associola.c
1298
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
1304
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/associola.c
1338
if ((asoc->peer.primary_path->state == SCTP_ACTIVE ||
net/sctp/associola.c
1339
asoc->peer.primary_path->state == SCTP_UNKNOWN) &&
net/sctp/associola.c
1340
asoc->peer.primary_path != trans_pri) {
net/sctp/associola.c
1342
trans_pri = asoc->peer.primary_path;
net/sctp/associola.c
1356
trans_pri = sctp_trans_elect_best(asoc->peer.active_path, trans_pf);
net/sctp/associola.c
136
asoc->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]
net/sctp/associola.c
1361
asoc->peer.active_path = trans_pri;
net/sctp/associola.c
1362
asoc->peer.retran_path = trans_sec;
net/sctp/associola.c
1366
sctp_assoc_choose_alter_transport(struct sctp_association *asoc,
net/sctp/associola.c
137
= 5 * asoc->rto_max;
net/sctp/associola.c
1374
return asoc->peer.active_path;
net/sctp/associola.c
1376
if (last_sent_to == asoc->peer.retran_path)
net/sctp/associola.c
1377
sctp_assoc_update_retran_path(asoc);
net/sctp/associola.c
1379
return asoc->peer.retran_path;
net/sctp/associola.c
1383
void sctp_assoc_update_frag_point(struct sctp_association *asoc)
net/sctp/associola.c
1385
int frag = sctp_mtu_payload(sctp_sk(asoc->base.sk), asoc->pathmtu,
net/sctp/associola.c
1386
sctp_datachk_len(&asoc->stream));
net/sctp/associola.c
1388
if (asoc->user_frag)
net/sctp/associola.c
1389
frag = min_t(int, frag, asoc->user_frag);
net/sctp/associola.c
139
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = asoc->sackdelay;
net/sctp/associola.c
1392
sctp_datachk_len(&asoc->stream));
net/sctp/associola.c
1394
asoc->frag_point = SCTP_TRUNC4(frag);
net/sctp/associola.c
1397
void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu)
net/sctp/associola.c
1399
if (asoc->pathmtu != pmtu) {
net/sctp/associola.c
140
asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] =
net/sctp/associola.c
1400
asoc->pathmtu = pmtu;
net/sctp/associola.c
1401
sctp_assoc_update_frag_point(asoc);
net/sctp/associola.c
1404
pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc,
net/sctp/associola.c
1405
asoc->pathmtu, asoc->frag_point);
net/sctp/associola.c
1411
void sctp_assoc_sync_pmtu(struct sctp_association *asoc)
net/sctp/associola.c
1416
if (!asoc)
net/sctp/associola.c
1420
list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) {
net/sctp/associola.c
1430
sctp_assoc_set_pmtu(asoc, pmtu);
net/sctp/associola.c
1434
static inline bool sctp_peer_needs_update(struct sctp_association *asoc)
net/sctp/associola.c
1436
struct net *net = asoc->base.net;
net/sctp/associola.c
1438
switch (asoc->state) {
net/sctp/associola.c
1443
if ((asoc->rwnd > asoc->a_rwnd) &&
net/sctp/associola.c
1444
((asoc->rwnd - asoc->a_rwnd) >= max_t(__u32,
net/sctp/associola.c
1445
(asoc->base.sk->sk_rcvbuf >> net->sctp.rwnd_upd_shift),
net/sctp/associola.c
1446
asoc->pathmtu)))
net/sctp/associola.c
145
timer_setup(&asoc->timers[i], sctp_timer_events[i], 0);
net/sctp/associola.c
1456
void sctp_assoc_rwnd_increase(struct sctp_association *asoc, unsigned int len)
net/sctp/associola.c
1461
if (asoc->rwnd_over) {
net/sctp/associola.c
1462
if (asoc->rwnd_over >= len) {
net/sctp/associola.c
1463
asoc->rwnd_over -= len;
net/sctp/associola.c
1465
asoc->rwnd += (len - asoc->rwnd_over);
net/sctp/associola.c
1466
asoc->rwnd_over = 0;
net/sctp/associola.c
1469
asoc->rwnd += len;
net/sctp/associola.c
1477
if (asoc->rwnd_press) {
net/sctp/associola.c
1478
int change = min(asoc->pathmtu, asoc->rwnd_press);
net/sctp/associola.c
1479
asoc->rwnd += change;
net/sctp/associola.c
1480
asoc->rwnd_press -= change;
net/sctp/associola.c
1484
__func__, asoc, len, asoc->rwnd, asoc->rwnd_over,
net/sctp/associola.c
1485
asoc->a_rwnd);
net/sctp/associola.c
1492
if (sctp_peer_needs_update(asoc)) {
net/sctp/associola.c
1493
asoc->a_rwnd = asoc->rwnd;
net/sctp/associola.c
1496
"a_rwnd:%u\n", __func__, asoc, asoc->rwnd,
net/sctp/associola.c
1497
asoc->a_rwnd);
net/sctp/associola.c
1499
sack = sctp_make_sack(asoc);
net/sctp/associola.c
1503
asoc->peer.sack_needed = 0;
net/sctp/associola.c
1505
sctp_outq_tail(&asoc->outqueue, sack, GFP_ATOMIC);
net/sctp/associola.c
1508
timer = &asoc->timers[SCTP_EVENT_TIMEOUT_SACK];
net/sctp/associola.c
151
asoc->c.sinit_max_instreams = sp->initmsg.sinit_max_instreams;
net/sctp/associola.c
1510
sctp_association_put(asoc);
net/sctp/associola.c
1515
void sctp_assoc_rwnd_decrease(struct sctp_association *asoc, unsigned int len)
net/sctp/associola.c
152
asoc->c.sinit_num_ostreams = sp->initmsg.sinit_num_ostreams;
net/sctp/associola.c
1520
if (unlikely(!asoc->rwnd || asoc->rwnd_over))
net/sctp/associola.c
1522
"asoc->rwnd_over:%u!\n", __func__, asoc,
net/sctp/associola.c
1523
asoc->rwnd, asoc->rwnd_over);
net/sctp/associola.c
1525
if (asoc->ep->rcvbuf_policy)
net/sctp/associola.c
1526
rx_count = atomic_read(&asoc->rmem_alloc);
net/sctp/associola.c
1528
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
1535
if (rx_count >= asoc->base.sk->sk_rcvbuf)
net/sctp/associola.c
1538
if (asoc->rwnd >= len) {
net/sctp/associola.c
1539
asoc->rwnd -= len;
net/sctp/associola.c
1541
asoc->rwnd_press += asoc->rwnd;
net/sctp/associola.c
1542
asoc->rwnd = 0;
net/sctp/associola.c
1545
asoc->rwnd_over += len - asoc->rwnd;
net/sctp/associola.c
1546
asoc->rwnd = 0;
net/sctp/associola.c
155
asoc->max_init_timeo =
net/sctp/associola.c
1550
__func__, asoc, len, asoc->rwnd, asoc->rwnd_over,
net/sctp/associola.c
1551
asoc->rwnd_press);
net/sctp/associola.c
1557
int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc,
net/sctp/associola.c
1560
struct sock *sk = asoc->base.sk;
net/sctp/associola.c
1569
if (asoc->peer.ipv4_address)
net/sctp/associola.c
1571
if (asoc->peer.ipv6_address)
net/sctp/associola.c
1574
return sctp_bind_addr_copy(asoc->base.net,
net/sctp/associola.c
1575
&asoc->base.bind_addr,
net/sctp/associola.c
1576
&asoc->ep->base.bind_addr,
net/sctp/associola.c
1581
int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc,
net/sctp/associola.c
1590
return sctp_raw_to_bind_addrs(&asoc->base.bind_addr, raw, var_size3,
net/sctp/associola.c
1591
asoc->ep->base.bind_addr.port, gfp);
net/sctp/associola.c
1595
int sctp_assoc_lookup_laddr(struct sctp_association *asoc,
net/sctp/associola.c
1600
if ((asoc->base.bind_addr.port == ntohs(laddr->v4.sin_port)) &&
net/sctp/associola.c
1601
sctp_bind_addr_match(&asoc->base.bind_addr, laddr,
net/sctp/associola.c
1602
sctp_sk(asoc->base.sk)))
net/sctp/associola.c
1609
int sctp_assoc_set_id(struct sctp_association *asoc, gfp_t gfp)
net/sctp/associola.c
1615
if (asoc->assoc_id)
net/sctp/associola.c
1624
ret = idr_alloc_cyclic(&sctp_assocs_id, asoc, SCTP_ALL_ASSOC + 1, 0,
net/sctp/associola.c
1632
asoc->assoc_id = (sctp_assoc_t)ret;
net/sctp/associola.c
1637
static void sctp_assoc_free_asconf_queue(struct sctp_association *asoc)
net/sctp/associola.c
164
asoc->rwnd = SCTP_DEFAULT_MINWINDOW;
net/sctp/associola.c
1642
list_for_each_entry_safe(asconf, tmp, &asoc->addip_chunk_list, list) {
net/sctp/associola.c
1649
static void sctp_assoc_free_asconf_acks(struct sctp_association *asoc)
net/sctp/associola.c
1654
list_for_each_entry_safe(ack, tmp, &asoc->asconf_ack_list,
net/sctp/associola.c
166
asoc->rwnd = sk->sk_rcvbuf/2;
net/sctp/associola.c
1662
void sctp_assoc_clean_asconf_ack_cache(const struct sctp_association *asoc)
net/sctp/associola.c
1670
list_for_each_entry_safe(ack, tmp, &asoc->asconf_ack_list,
net/sctp/associola.c
1673
htonl(asoc->peer.addip_serial))
net/sctp/associola.c
168
asoc->a_rwnd = asoc->rwnd;
net/sctp/associola.c
1683
const struct sctp_association *asoc,
net/sctp/associola.c
1691
list_for_each_entry(ack, &asoc->asconf_ack_list, transmitted_list) {
net/sctp/associola.c
1703
void sctp_asconf_queue_teardown(struct sctp_association *asoc)
net/sctp/associola.c
1706
sctp_assoc_free_asconf_acks(asoc);
net/sctp/associola.c
1709
sctp_assoc_free_asconf_queue(asoc);
net/sctp/associola.c
171
asoc->peer.rwnd = SCTP_DEFAULT_MAXWINDOW;
net/sctp/associola.c
1712
if (asoc->addip_last_asconf)
net/sctp/associola.c
1713
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
if (asoc->peer.transport_count == U16_MAX)
net/sctp/associola.c
620
peer = sctp_transport_new(asoc->base.net, addr, gfp);
net/sctp/associola.c
624
sctp_transport_set_owner(peer, asoc);
net/sctp/associola.c
629
peer->hbinterval = asoc->hbinterval;
net/sctp/associola.c
630
peer->probe_interval = asoc->probe_interval;
net/sctp/associola.c
632
peer->encap_port = asoc->encap_port;
net/sctp/associola.c
635
peer->pathmaxrxt = asoc->pathmaxrxt;
net/sctp/associola.c
638
peer->pf_retrans = asoc->pf_retrans;
net/sctp/associola.c
640
peer->ps_retrans = asoc->ps_retrans;
net/sctp/associola.c
645
peer->sackdelay = asoc->sackdelay;
net/sctp/associola.c
646
peer->sackfreq = asoc->sackfreq;
net/sctp/associola.c
65
asoc->ep = (struct sctp_endpoint *)ep;
net/sctp/associola.c
655
peer->flowlabel = asoc->flowlabel;
net/sctp/associola.c
658
peer->dscp = asoc->dscp;
net/sctp/associola.c
66
asoc->base.sk = (struct sock *)sk;
net/sctp/associola.c
663
peer->param_flags = asoc->param_flags;
net/sctp/associola.c
67
asoc->base.net = sock_net(sk);
net/sctp/associola.c
673
sctp_assoc_set_pmtu(asoc, asoc->pathmtu ?
net/sctp/associola.c
674
min_t(int, peer->pathmtu, asoc->pathmtu) :
net/sctp/associola.c
682
sctp_packet_init(&peer->packet, peer, asoc->base.bind_addr.port,
net/sctp/associola.c
683
asoc->peer.port);
net/sctp/associola.c
69
sctp_endpoint_hold(asoc->ep);
net/sctp/associola.c
695
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
708
peer->rto = asoc->rto_initial;
net/sctp/associola.c
709
sctp_max_rto(asoc, peer);
net/sctp/associola.c
723
list_add_tail_rcu(&peer->transports, &asoc->peer.transport_addr_list);
net/sctp/associola.c
724
asoc->peer.transport_count++;
net/sctp/associola.c
729
if (!asoc->peer.primary_path) {
net/sctp/associola.c
73
asoc->base.type = SCTP_EP_TYPE_ASSOCIATION;
net/sctp/associola.c
730
sctp_assoc_set_primary(asoc, peer);
net/sctp/associola.c
731
asoc->peer.retran_path = peer;
net/sctp/associola.c
734
if (asoc->peer.active_path == asoc->peer.retran_path &&
net/sctp/associola.c
736
asoc->peer.retran_path = peer;
net/sctp/associola.c
744
const struct sctp_association *asoc,
net/sctp/associola.c
751
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/associola.c
76
refcount_set(&asoc->base.refcnt, 1);
net/sctp/associola.c
761
void sctp_assoc_del_nonprimary_peers(struct sctp_association *asoc,
net/sctp/associola.c
767
list_for_each_entry_safe(t, temp, &asoc->peer.transport_addr_list,
net/sctp/associola.c
771
sctp_assoc_rm_peer(asoc, t);
net/sctp/associola.c
779
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
795
asoc->pf_expose != SCTP_PF_EXPOSE_ENABLE)
net/sctp/associola.c
81
asoc->state = SCTP_STATE_CLOSED;
net/sctp/associola.c
82
asoc->cookie_life = ms_to_ktime(sp->assocparams.sasoc_cookie_life);
net/sctp/associola.c
822
if (asoc->pf_expose != SCTP_PF_EXPOSE_ENABLE)
net/sctp/associola.c
83
asoc->user_frag = sp->user_frag;
net/sctp/associola.c
840
sctp_select_active_and_retran_path(asoc);
net/sctp/associola.c
844
void sctp_association_hold(struct sctp_association *asoc)
net/sctp/associola.c
846
refcount_inc(&asoc->base.refcnt);
net/sctp/associola.c
852
void sctp_association_put(struct sctp_association *asoc)
net/sctp/associola.c
854
if (refcount_dec_and_test(&asoc->base.refcnt))
net/sctp/associola.c
855
sctp_association_destroy(asoc);
net/sctp/associola.c
861
__u32 sctp_association_get_next_tsn(struct sctp_association *asoc)
net/sctp/associola.c
868
__u32 retval = asoc->next_tsn;
net/sctp/associola.c
869
asoc->next_tsn++;
net/sctp/associola.c
870
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
894
struct sctp_chunk *sctp_get_ecne_prepend(struct sctp_association *asoc)
net/sctp/associola.c
896
if (!asoc->need_ecne)
net/sctp/associola.c
90
asoc->ps_retrans = sp->ps_retrans;
net/sctp/associola.c
902
return sctp_make_ecne(asoc, asoc->last_ecne_tsn);
net/sctp/associola.c
908
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
934
active = asoc->peer.active_path;
net/sctp/associola.c
94
asoc->rto_max = msecs_to_jiffies(sp->rtoinfo.srto_max);
net/sctp/associola.c
946
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
966
struct sctp_association *asoc =
net/sctp/associola.c
969
struct net *net = asoc->base.net;
net/sctp/associola.c
979
ep = asoc->ep;
net/sctp/associola.c
981
inqueue = &asoc->base.inqueue;
net/sctp/associola.c
982
sctp_association_hold(asoc);
net/sctp/associola.c
984
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
102
struct sctp_association *asoc)
net/sctp/diag.c
110
addrlen * asoc->peer.transport_count);
net/sctp/diag.c
115
list_for_each_entry(from, &asoc->peer.transport_addr_list,
net/sctp/diag.c
127
static int inet_sctp_diag_fill(struct sock *sk, struct sctp_association *asoc,
net/sctp/diag.c
154
if (asoc) {
net/sctp/diag.c
155
inet_diag_msg_sctpasoc_fill(r, sk, asoc);
net/sctp/diag.c
168
if (asoc && asoc->ep->sndbuf_policy)
net/sctp/diag.c
169
amt = asoc->sndbuf_used;
net/sctp/diag.c
173
if (asoc && asoc->ep->rcvbuf_policy)
net/sctp/diag.c
174
amt = atomic_read(&asoc->rmem_alloc);
net/sctp/diag.c
202
infox.asoc = asoc;
net/sctp/diag.c
205
addr_list = asoc ? &asoc->base.bind_addr.address_list
net/sctp/diag.c
210
if (asoc && (ext & (1 << (INET_DIAG_CONG - 1))))
net/sctp/diag.c
214
if (asoc && inet_diag_msg_sctpaddrs_fill(skb, asoc))
net/sctp/diag.c
235
struct sctp_association *asoc)
net/sctp/diag.c
241
list_for_each_entry_rcu(laddr, &asoc->base.bind_addr.address_list,
net/sctp/diag.c
246
+ nla_total_size(addrlen * asoc->peer.transport_count)
net/sctp/diag.c
256
struct sctp_association *assoc = tsp->asoc;
net/sctp/diag.c
28
struct sctp_association *asoc)
net/sctp/diag.c
310
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
36
paddr = asoc->peer.primary_path->ipaddr;
net/sctp/diag.c
361
if (!list_is_first(&tsp->asoc->asocs, &ep->asocs))
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
419
if (infox->asoc) {
net/sctp/diag.c
420
r->idiag_rqueue = atomic_read(&infox->asoc->rmem_alloc);
net/sctp/diag.c
421
r->idiag_wqueue = infox->asoc->sndbuf_used;
net/sctp/diag.c
427
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
1241
struct sctp_association *asoc = NULL;
net/sctp/input.c
1279
asoc = __sctp_rcv_asconf_lookup(
net/sctp/input.c
1288
if (asoc)
net/sctp/input.c
1295
return asoc;
net/sctp/input.c
1345
struct sctp_association *asoc;
net/sctp/input.c
1347
asoc = __sctp_lookup_association(net, laddr, paddr, transportp, dif, sdif);
net/sctp/input.c
1348
if (asoc)
net/sctp/input.c
1355
asoc = __sctp_rcv_lookup_harder(net, skb, laddr, transportp, dif, sdif);
net/sctp/input.c
1356
if (asoc)
net/sctp/input.c
1369
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
278
struct sctp_association *asoc = t->asoc;
net/sctp/ipv6.c
297
else if (asoc)
net/sctp/ipv6.c
298
fl6->flowi6_oif = asoc->base.sk->sk_bound_dev_if;
net/sctp/ipv6.c
314
if (asoc)
net/sctp/ipv6.c
315
fl6->fl6_sport = htons(asoc->base.bind_addr.port);
net/sctp/ipv6.c
330
if (!asoc || saddr) {
net/sctp/ipv6.c
336
bp = &asoc->base.bind_addr;
net/sctp/ipv6.c
350
!asoc->src_out_of_asoc_ok))
net/sctp/ipv6.c
451
pr_debug("%s: asoc:%p dst:%p\n", __func__, t->asoc, t->dst);
net/sctp/ipv6.c
838
struct sctp_association *asoc;
net/sctp/ipv6.c
845
asoc = event->asoc;
net/sctp/ipv6.c
846
paddr = &asoc->peer.primary_addr;
net/sctp/ipv6.c
850
addr->v4.sin_port = htons(asoc->peer.port);
net/sctp/ipv6.c
859
addr->v6.sin6_port = htons(asoc->peer.port);
net/sctp/ipv6.c
863
*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
965
struct sctp_association *asoc;
net/sctp/protocol.c
967
asoc = event->asoc;
net/sctp/protocol.c
970
sinfrom = &asoc->peer.primary_addr.v4;
net/sctp/protocol.c
971
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
1818
if ((!asoc ||
net/sctp/sm_make_chunk.c
1819
asoc->c.my_vtag != bear_cookie->my_vtag ||
net/sctp/sm_make_chunk.c
1820
asoc->c.peer_vtag != bear_cookie->peer_vtag) &&
net/sctp/sm_make_chunk.c
1833
*errp = sctp_make_op_error(asoc, chunk,
net/sctp/sm_make_chunk.c
1908
static int sctp_process_missing_param(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1922
*errp = sctp_make_op_error_space(asoc, chunk, len);
net/sctp/sm_make_chunk.c
1937
static int sctp_process_inv_mandatory(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1944
*errp = sctp_make_op_error_space(asoc, chunk, 0);
net/sctp/sm_make_chunk.c
1953
static int sctp_process_inv_paramlength(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1965
*errp = sctp_make_violation_paramlen(asoc, chunk, param);
net/sctp/sm_make_chunk.c
1974
static int sctp_process_hn_param(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
198
struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
1989
*errp = sctp_make_op_error(asoc, chunk, SCTP_ERROR_DNS_FAILED,
net/sctp/sm_make_chunk.c
2031
static void sctp_process_ext_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2040
if (asoc->ep->reconf_enable)
net/sctp/sm_make_chunk.c
2041
asoc->peer.reconf_capable = 1;
net/sctp/sm_make_chunk.c
2044
if (asoc->ep->prsctp_enable)
net/sctp/sm_make_chunk.c
2045
asoc->peer.prsctp_capable = 1;
net/sctp/sm_make_chunk.c
2051
if (asoc->ep->auth_enable)
net/sctp/sm_make_chunk.c
2052
asoc->peer.auth_capable = 1;
net/sctp/sm_make_chunk.c
2056
if (asoc->ep->asconf_enable)
net/sctp/sm_make_chunk.c
2057
asoc->peer.asconf_capable = 1;
net/sctp/sm_make_chunk.c
2060
if (asoc->ep->intl_enable)
net/sctp/sm_make_chunk.c
2061
asoc->peer.intl_capable = 1;
net/sctp/sm_make_chunk.c
207
struct sctp_endpoint *ep = asoc->ep;
net/sctp/sm_make_chunk.c
2095
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2116
*errp = sctp_make_op_error_limited(asoc, chunk);
net/sctp/sm_make_chunk.c
2149
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2177
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2194
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2202
sctp_process_hn_param(asoc, param, chunk, err_chunk);
net/sctp/sm_make_chunk.c
2222
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2238
sctp_process_inv_paramlength(asoc, param.p,
net/sctp/sm_make_chunk.c
2264
sctp_process_inv_paramlength(asoc, param.p, chunk,
net/sctp/sm_make_chunk.c
227
init.init_tag = htonl(asoc->c.my_vtag);
net/sctp/sm_make_chunk.c
2274
retval = sctp_process_unk_param(asoc, param, chunk, err_chunk);
net/sctp/sm_make_chunk.c
228
init.a_rwnd = htonl(asoc->rwnd);
net/sctp/sm_make_chunk.c
2282
const struct sctp_association *asoc, enum sctp_cid cid,
net/sctp/sm_make_chunk.c
229
init.num_outbound_streams = htons(asoc->c.sinit_num_ostreams);
net/sctp/sm_make_chunk.c
2298
return sctp_process_inv_mandatory(asoc, chunk, errp);
net/sctp/sm_make_chunk.c
230
init.num_inbound_streams = htons(asoc->c.sinit_max_instreams);
net/sctp/sm_make_chunk.c
231
init.initial_tsn = htonl(asoc->c.initial_tsn);
net/sctp/sm_make_chunk.c
2314
return sctp_process_inv_paramlength(asoc, param.p, chunk, errp);
net/sctp/sm_make_chunk.c
2320
return sctp_process_missing_param(asoc, SCTP_PARAM_STATE_COOKIE,
net/sctp/sm_make_chunk.c
2325
result = sctp_verify_param(net, ep, asoc, param, cid,
net/sctp/sm_make_chunk.c
234
sp = sctp_sk(asoc->base.sk);
net/sctp/sm_make_chunk.c
2347
int sctp_process_init(struct sctp_association *asoc, struct sctp_chunk *chunk,
net/sctp/sm_make_chunk.c
2368
asoc->encap_port = SCTP_INPUT_CB(chunk->skb)->encap_port;
net/sctp/sm_make_chunk.c
2369
if (!sctp_assoc_add_peer(asoc, peer_addr, gfp, SCTP_ACTIVE))
net/sctp/sm_make_chunk.c
2388
if (!sctp_process_param(asoc, param, peer_addr, gfp))
net/sctp/sm_make_chunk.c
2399
if (asoc->peer.auth_capable && (!asoc->peer.peer_random ||
net/sctp/sm_make_chunk.c
240
if (asoc->ep->ecn_enable)
net/sctp/sm_make_chunk.c
2400
!asoc->peer.peer_hmacs))
net/sctp/sm_make_chunk.c
2401
asoc->peer.auth_capable = 0;
net/sctp/sm_make_chunk.c
2409
if (!asoc->base.net->sctp.addip_noauth &&
net/sctp/sm_make_chunk.c
2410
(asoc->peer.asconf_capable && !asoc->peer.auth_capable)) {
net/sctp/sm_make_chunk.c
2411
asoc->peer.addip_disabled_mask |= (SCTP_PARAM_ADD_IP |
net/sctp/sm_make_chunk.c
2414
asoc->peer.asconf_capable = 0;
net/sctp/sm_make_chunk.c
2419
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/sm_make_chunk.c
2422
sctp_assoc_rm_peer(asoc, transport);
net/sctp/sm_make_chunk.c
2429
asoc->peer.i.init_tag =
net/sctp/sm_make_chunk.c
243
if (asoc->ep->prsctp_enable)
net/sctp/sm_make_chunk.c
2431
asoc->peer.i.a_rwnd =
net/sctp/sm_make_chunk.c
2433
asoc->peer.i.num_outbound_streams =
net/sctp/sm_make_chunk.c
2435
asoc->peer.i.num_inbound_streams =
net/sctp/sm_make_chunk.c
2437
asoc->peer.i.initial_tsn =
net/sctp/sm_make_chunk.c
2440
asoc->strreset_inseq = asoc->peer.i.initial_tsn;
net/sctp/sm_make_chunk.c
2445
if (asoc->c.sinit_num_ostreams >
net/sctp/sm_make_chunk.c
2447
asoc->c.sinit_num_ostreams =
net/sctp/sm_make_chunk.c
2451
if (asoc->c.sinit_max_instreams >
net/sctp/sm_make_chunk.c
2453
asoc->c.sinit_max_instreams =
net/sctp/sm_make_chunk.c
2458
asoc->c.peer_vtag = asoc->peer.i.init_tag;
net/sctp/sm_make_chunk.c
2461
asoc->peer.rwnd = asoc->peer.i.a_rwnd;
net/sctp/sm_make_chunk.c
2467
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
2469
transport->ssthresh = asoc->peer.i.a_rwnd;
net/sctp/sm_make_chunk.c
2473
if (!sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
net/sctp/sm_make_chunk.c
2474
asoc->peer.i.initial_tsn, gfp))
net/sctp/sm_make_chunk.c
2485
if (sctp_stream_init(&asoc->stream, asoc->c.sinit_num_ostreams,
net/sctp/sm_make_chunk.c
2486
asoc->c.sinit_max_instreams, gfp))
net/sctp/sm_make_chunk.c
2490
sctp_assoc_update_frag_point(asoc);
net/sctp/sm_make_chunk.c
2492
if (!asoc->temp && sctp_assoc_set_id(asoc, gfp))
net/sctp/sm_make_chunk.c
2505
asoc->peer.addip_serial = asoc->peer.i.initial_tsn - 1;
net/sctp/sm_make_chunk.c
251
if (asoc->ep->asconf_enable) {
net/sctp/sm_make_chunk.c
2510
list_for_each_safe(pos, temp, &asoc->peer.transport_addr_list) {
net/sctp/sm_make_chunk.c
2513
sctp_assoc_rm_peer(asoc, transport);
net/sctp/sm_make_chunk.c
2532
static int sctp_process_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2537
struct sctp_endpoint *ep = asoc->ep;
net/sctp/sm_make_chunk.c
2539
struct net *net = asoc->base.net;
net/sctp/sm_make_chunk.c
2554
if (PF_INET6 != asoc->base.sk->sk_family)
net/sctp/sm_make_chunk.c
2560
if (ipv6_only_sock(asoc->base.sk))
net/sctp/sm_make_chunk.c
2564
if (!af->from_addr_param(&addr, param.addr, htons(asoc->peer.port), 0))
net/sctp/sm_make_chunk.c
2568
if (!sctp_assoc_add_peer(asoc, &addr, gfp, SCTP_UNCONFIRMED))
net/sctp/sm_make_chunk.c
257
if (asoc->ep->reconf_enable) {
net/sctp/sm_make_chunk.c
2581
asoc->cookie_life = ktime_add_ms(asoc->cookie_life, stale);
net/sctp/sm_make_chunk.c
2588
asoc->peer.ipv4_address = 0;
net/sctp/sm_make_chunk.c
2589
asoc->peer.ipv6_address = 0;
net/sctp/sm_make_chunk.c
2595
asoc->peer.ipv6_address = 1;
net/sctp/sm_make_chunk.c
2597
asoc->peer.ipv4_address = 1;
net/sctp/sm_make_chunk.c
2607
asoc->peer.ipv4_address = 1;
net/sctp/sm_make_chunk.c
2611
if (PF_INET6 == asoc->base.sk->sk_family)
net/sctp/sm_make_chunk.c
2612
asoc->peer.ipv6_address = 1;
net/sctp/sm_make_chunk.c
2622
asoc->peer.cookie_len =
net/sctp/sm_make_chunk.c
2624
kfree(asoc->peer.cookie);
net/sctp/sm_make_chunk.c
2625
asoc->peer.cookie = kmemdup(param.cookie->body, asoc->peer.cookie_len, gfp);
net/sctp/sm_make_chunk.c
2626
if (!asoc->peer.cookie)
net/sctp/sm_make_chunk.c
2639
if (asoc->ep->ecn_enable) {
net/sctp/sm_make_chunk.c
2640
asoc->peer.ecn_capable = 1;
net/sctp/sm_make_chunk.c
2648
asoc->peer.adaptation_ind = ntohl(param.aind->adaptation_ind);
net/sctp/sm_make_chunk.c
265
if (asoc->ep->intl_enable) {
net/sctp/sm_make_chunk.c
2665
htons(asoc->peer.port), 0))
net/sctp/sm_make_chunk.c
2671
t = sctp_assoc_lookup_paddr(asoc, &addr);
net/sctp/sm_make_chunk.c
2675
sctp_assoc_set_primary(asoc, t);
net/sctp/sm_make_chunk.c
2679
sctp_process_ext_param(asoc, param);
net/sctp/sm_make_chunk.c
2683
if (asoc->ep->prsctp_enable) {
net/sctp/sm_make_chunk.c
2684
asoc->peer.prsctp_capable = 1;
net/sctp/sm_make_chunk.c
2695
kfree(asoc->peer.peer_random);
net/sctp/sm_make_chunk.c
2696
asoc->peer.peer_random = kmemdup(param.p,
net/sctp/sm_make_chunk.c
2698
if (!asoc->peer.peer_random) {
net/sctp/sm_make_chunk.c
2709
kfree(asoc->peer.peer_hmacs);
net/sctp/sm_make_chunk.c
2710
asoc->peer.peer_hmacs = kmemdup(param.p,
net/sctp/sm_make_chunk.c
2712
if (!asoc->peer.peer_hmacs) {
net/sctp/sm_make_chunk.c
2718
sctp_auth_asoc_set_default_hmac(asoc, param.hmac_algo);
net/sctp/sm_make_chunk.c
2725
kfree(asoc->peer.peer_chunks);
net/sctp/sm_make_chunk.c
2726
asoc->peer.peer_chunks = kmemdup(param.p,
net/sctp/sm_make_chunk.c
2728
if (!asoc->peer.peer_chunks)
net/sctp/sm_make_chunk.c
2739
__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
278
auth_hmacs = (struct sctp_paramhdr *)asoc->c.auth_hmacs;
net/sctp/sm_make_chunk.c
2792
static struct sctp_chunk *sctp_make_asconf(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2809
retval = sctp_make_control(asoc, SCTP_CID_ASCONF, 0, length,
net/sctp/sm_make_chunk.c
2814
asconf.serial = htonl(asoc->addip_serial++);
net/sctp/sm_make_chunk.c
2848
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
2875
if (asoc->asconf_addr_del_pending && !del_pickup) {
net/sctp/sm_make_chunk.c
2888
retval = sctp_make_asconf(asoc, laddr, totallen);
net/sctp/sm_make_chunk.c
2908
addr = asoc->asconf_addr_del_pending;
net/sctp/sm_make_chunk.c
2935
struct sctp_chunk *sctp_make_asconf_set_prim(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2951
retval = sctp_make_asconf(asoc, addr, len);
net/sctp/sm_make_chunk.c
2984
static struct sctp_chunk *sctp_make_asconf_ack(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
2992
retval = sctp_make_control(asoc, SCTP_CID_ASCONF_ACK, 0, length,
net/sctp/sm_make_chunk.c
3048
static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3069
if (!asoc->peer.ipv6_address)
net/sctp/sm_make_chunk.c
3073
if (!asoc->peer.ipv4_address)
net/sctp/sm_make_chunk.c
3084
if (!af->from_addr_param(&addr, addr_param, htons(asoc->peer.port), 0))
net/sctp/sm_make_chunk.c
3104
if (security_sctp_bind_connect(asoc->ep->base.sk,
net/sctp/sm_make_chunk.c
311
retval = sctp_make_control(asoc, SCTP_CID_INIT, 0, chunksize, gfp);
net/sctp/sm_make_chunk.c
3117
peer = sctp_assoc_add_peer(asoc, &addr, GFP_ATOMIC, SCTP_UNCONFIRMED);
net/sctp/sm_make_chunk.c
3123
asoc->new_transport = peer;
net/sctp/sm_make_chunk.c
3131
if (asoc->peer.transport_count == 1)
net/sctp/sm_make_chunk.c
3150
sctp_assoc_set_primary(asoc, asconf->transport);
net/sctp/sm_make_chunk.c
3151
sctp_assoc_del_nonprimary_peers(asoc,
net/sctp/sm_make_chunk.c
3161
peer = sctp_assoc_lookup_paddr(asoc, &addr);
net/sctp/sm_make_chunk.c
3171
sctp_assoc_rm_peer(asoc, peer);
net/sctp/sm_make_chunk.c
3182
if (security_sctp_bind_connect(asoc->ep->base.sk,
net/sctp/sm_make_chunk.c
3188
peer = sctp_assoc_lookup_paddr(asoc, &addr);
net/sctp/sm_make_chunk.c
3192
sctp_assoc_set_primary(asoc, peer);
net/sctp/sm_make_chunk.c
3200
bool sctp_verify_asconf(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3269
struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3304
asconf_ack = sctp_make_asconf_ack(asoc, serial, chunk_len * 4);
net/sctp/sm_make_chunk.c
3315
err_code = sctp_process_asconf_param(asoc, asconf,
net/sctp/sm_make_chunk.c
332
if (asoc->ep->ecn_enable)
net/sctp/sm_make_chunk.c
3339
asoc->peer.addip_serial++;
net/sctp/sm_make_chunk.c
3347
&asoc->asconf_ack_list);
net/sctp/sm_make_chunk.c
3354
static void sctp_asconf_param_success(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3357
struct sctp_bind_addr *bp = &asoc->base.bind_addr;
net/sctp/sm_make_chunk.c
3382
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
3390
if (asoc->asconf_addr_del_pending != NULL &&
net/sctp/sm_make_chunk.c
3391
sctp_cmp_addr_exact(asoc->asconf_addr_del_pending, &addr)) {
net/sctp/sm_make_chunk.c
3392
kfree(asoc->asconf_addr_del_pending);
net/sctp/sm_make_chunk.c
3393
asoc->asconf_addr_del_pending = NULL;
net/sctp/sm_make_chunk.c
3396
list_for_each_entry(transport, &asoc->peer.transport_addr_list,
net/sctp/sm_make_chunk.c
345
if (asoc->ep->prsctp_enable)
net/sctp/sm_make_chunk.c
3469
int sctp_process_asconf_ack(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3472
struct sctp_chunk *asconf = asoc->addip_last_asconf;
net/sctp/sm_make_chunk.c
3518
sctp_asconf_param_success(asoc, asconf_param);
net/sctp/sm_make_chunk.c
3529
asoc->peer.addip_disabled_mask |=
net/sctp/sm_make_chunk.c
3548
if (no_err && asoc->src_out_of_asoc_ok) {
net/sctp/sm_make_chunk.c
3549
asoc->src_out_of_asoc_ok = 0;
net/sctp/sm_make_chunk.c
3550
sctp_transport_immediate_rtx(asoc->peer.primary_path);
net/sctp/sm_make_chunk.c
3556
asoc->addip_last_asconf = NULL;
net/sctp/sm_make_chunk.c
3562
struct sctp_chunk *sctp_make_fwdtsn(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
357
sctp_addto_chunk(retval, sizeof(asoc->c.auth_random),
net/sctp/sm_make_chunk.c
3574
retval = sctp_make_control(asoc, SCTP_CID_FWD_TSN, 0, hint, GFP_ATOMIC);
net/sctp/sm_make_chunk.c
358
asoc->c.auth_random);
net/sctp/sm_make_chunk.c
3592
struct sctp_chunk *sctp_make_ifwdtsn(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3602
retval = sctp_make_control(asoc, SCTP_CID_I_FWD_TSN, 0, hint,
net/sctp/sm_make_chunk.c
3631
static struct sctp_chunk *sctp_make_reconf(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3637
retval = sctp_make_control(asoc, SCTP_CID_RECONF, 0, length,
net/sctp/sm_make_chunk.c
3683
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3696
retval = sctp_make_reconf(asoc, SCTP_PAD4(outlen) + SCTP_PAD4(inlen));
net/sctp/sm_make_chunk.c
3703
outreq.request_seq = htonl(asoc->strreset_outseq);
net/sctp/sm_make_chunk.c
3704
outreq.response_seq = htonl(asoc->strreset_inseq - 1);
net/sctp/sm_make_chunk.c
3705
outreq.send_reset_at_tsn = htonl(asoc->next_tsn - 1);
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
3716
inreq.request_seq = htonl(asoc->strreset_outseq + out);
net/sctp/sm_make_chunk.c
3737
const struct sctp_association *asoc)
net/sctp/sm_make_chunk.c
3743
retval = sctp_make_reconf(asoc, length);
net/sctp/sm_make_chunk.c
3749
tsnreq.request_seq = htonl(asoc->strreset_outseq);
net/sctp/sm_make_chunk.c
3768
const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3775
retval = sctp_make_reconf(asoc, (!!out + !!in) * size);
net/sctp/sm_make_chunk.c
3783
addstrm.request_seq = htonl(asoc->strreset_outseq);
net/sctp/sm_make_chunk.c
3793
addstrm.request_seq = htonl(asoc->strreset_outseq + !!out);
net/sctp/sm_make_chunk.c
3813
struct sctp_chunk *sctp_make_strreset_resp(const struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3820
retval = sctp_make_reconf(asoc, length);
net/sctp/sm_make_chunk.c
3849
struct sctp_chunk *sctp_make_strreset_tsnresp(struct sctp_association *asoc,
net/sctp/sm_make_chunk.c
3858
retval = sctp_make_reconf(asoc, length);
net/sctp/sm_make_chunk.c
3875
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
1007
if (asoc->peer.adaptation_ind) {
net/sctp/sm_statefuns.c
1008
ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC);
net/sctp/sm_statefuns.c
1016
if (!asoc->peer.auth_capable) {
net/sctp/sm_statefuns.c
1017
ev = sctp_ulpevent_make_authkey(asoc, 0, SCTP_AUTH_NO_AUTH,
net/sctp/sm_statefuns.c
1033
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1042
reply = sctp_make_heartbeat(asoc, transport, 0);
net/sctp/sm_statefuns.c
1059
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
106
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1066
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
1086
sctp_sf_heartbeat(ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1107
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1114
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
112
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1125
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/sm_statefuns.c
1127
SCTP_CHUNK(asoc->strreset_chunk));
net/sctp/sm_statefuns.c
1136
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1148
reply = sctp_make_heartbeat(asoc, transport, transport->pl.probe_size);
net/sctp/sm_statefuns.c
1184
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1193
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
1194
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1199
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
121
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1211
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1217
reply = sctp_make_heartbeat_ack(asoc, chunk, param_hdr, paylen);
net/sctp/sm_statefuns.c
1258
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1269
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
1270
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1275
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1284
link = sctp_assoc_lookup_paddr(asoc, &from_addr);
net/sctp/sm_statefuns.c
129
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1291
asoc,
net/sctp/sm_statefuns.c
1296
asoc,
net/sctp/sm_statefuns.c
1314
return sctp_sf_send_probe(net, ep, asoc, type, link, commands);
net/sctp/sm_statefuns.c
137
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1407
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1428
if (!list_has_sctp_addr(&asoc->peer.transport_addr_list,
net/sctp/sm_statefuns.c
1447
const struct sctp_association *asoc)
net/sctp/sm_statefuns.c
1449
switch (asoc->state) {
net/sctp/sm_statefuns.c
145
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1454
new_asoc->c.my_vtag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1455
new_asoc->c.my_ttag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1460
new_asoc->c.my_vtag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1461
new_asoc->c.my_ttag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1462
new_asoc->c.peer_ttag = asoc->c.peer_vtag;
net/sctp/sm_statefuns.c
1469
new_asoc->c.my_ttag = asoc->c.my_vtag;
net/sctp/sm_statefuns.c
1470
new_asoc->c.peer_ttag = asoc->c.peer_vtag;
net/sctp/sm_statefuns.c
1478
new_asoc->rwnd = asoc->rwnd;
net/sctp/sm_statefuns.c
1479
new_asoc->c.sinit_num_ostreams = asoc->c.sinit_num_ostreams;
net/sctp/sm_statefuns.c
1480
new_asoc->c.sinit_max_instreams = asoc->c.sinit_max_instreams;
net/sctp/sm_statefuns.c
1481
new_asoc->c.initial_tsn = asoc->c.initial_tsn;
net/sctp/sm_statefuns.c
1494
const struct sctp_association *asoc)
net/sctp/sm_statefuns.c
1497
if ((asoc->c.my_vtag != new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1498
(asoc->c.peer_vtag != new_asoc->c.peer_vtag) &&
net/sctp/sm_statefuns.c
1499
(asoc->c.my_vtag == new_asoc->c.my_ttag) &&
net/sctp/sm_statefuns.c
1500
(asoc->c.peer_vtag == new_asoc->c.peer_ttag))
net/sctp/sm_statefuns.c
1504
if ((asoc->c.my_vtag == new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1505
((asoc->c.peer_vtag != new_asoc->c.peer_vtag) ||
net/sctp/sm_statefuns.c
1506
(0 == asoc->c.peer_vtag))) {
net/sctp/sm_statefuns.c
151
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1511
if ((asoc->c.my_vtag == new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1512
(asoc->c.peer_vtag == new_asoc->c.peer_vtag))
net/sctp/sm_statefuns.c
1516
if ((asoc->c.my_vtag != new_asoc->c.my_vtag) &&
net/sctp/sm_statefuns.c
1517
(asoc->c.peer_vtag == new_asoc->c.peer_vtag) &&
net/sctp/sm_statefuns.c
1532
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1554
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1558
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1564
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1567
return sctp_sf_new_encap_port(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
157
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1575
if (asoc->state >= SCTP_STATE_ESTABLISHED) {
net/sctp/sm_statefuns.c
1577
if (ntohl(chunk->subh.init_hdr->init_tag) == asoc->peer.i.init_tag)
net/sctp/sm_statefuns.c
1578
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1583
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
net/sctp/sm_statefuns.c
1590
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
net/sctp/sm_statefuns.c
1606
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
1627
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
164
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1648
if (!sctp_state(asoc, COOKIE_WAIT)) {
net/sctp/sm_statefuns.c
1649
if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk,
net/sctp/sm_statefuns.c
1656
sctp_tietags_populate(new_asoc, asoc);
net/sctp/sm_statefuns.c
1760
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1768
return sctp_sf_do_unexpected_init(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1815
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1823
return sctp_sf_do_unexpected_init(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1839
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1848
return sctp_sf_ootb(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1850
return sctp_sf_discard_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
1853
static int sctp_sf_do_assoc_update(struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1857
struct net *net = asoc->base.net;
net/sctp/sm_statefuns.c
1860
if (!sctp_assoc_update(asoc, new))
net/sctp/sm_statefuns.c
1863
abort = sctp_make_abort(asoc, NULL, sizeof(struct sctp_errhdr));
net/sctp/sm_statefuns.c
1885
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
1914
if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, commands))
net/sctp/sm_statefuns.c
1923
if (sctp_state(asoc, SHUTDOWN_ACK_SENT)) {
net/sctp/sm_statefuns.c
1924
disposition = __sctp_sf_do_9_2_reshutack(net, ep, asoc,
net/sctp/sm_statefuns.c
1930
err = sctp_make_op_error(asoc, chunk,
net/sctp/sm_statefuns.c
1956
if (sctp_sf_do_assoc_update((struct sctp_association *)asoc, new_asoc, commands))
net/sctp/sm_statefuns.c
1959
repl = sctp_make_cookie_ack(asoc, chunk);
net/sctp/sm_statefuns.c
1964
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_RESTART, 0,
net/sctp/sm_statefuns.c
1965
asoc->c.sinit_num_ostreams,
net/sctp/sm_statefuns.c
1966
asoc->c.sinit_max_instreams,
net/sctp/sm_statefuns.c
1972
if ((sctp_state(asoc, SHUTDOWN_PENDING) ||
net/sctp/sm_statefuns.c
1973
sctp_state(asoc, SHUTDOWN_SENT)) &&
net/sctp/sm_statefuns.c
1974
(sctp_sstate(asoc->base.sk, CLOSING) ||
net/sctp/sm_statefuns.c
1975
sock_flag(asoc->base.sk, SOCK_DEAD))) {
net/sctp/sm_statefuns.c
1981
return sctp_sf_do_9_2_start_shutdown(net, ep, asoc,
net/sctp/sm_statefuns.c
2008
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2032
if (asoc->state < SCTP_STATE_ESTABLISHED)
net/sctp/sm_statefuns.c
2037
if (sctp_sf_do_assoc_update((struct sctp_association *)asoc, new_asoc, commands))
net/sctp/sm_statefuns.c
2040
repl = sctp_make_cookie_ack(asoc, chunk);
net/sctp/sm_statefuns.c
2068
if (asoc->peer.adaptation_ind)
net/sctp/sm_statefuns.c
2071
if (!asoc->peer.auth_capable)
net/sctp/sm_statefuns.c
2092
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2115
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2130
if (!sctp_auth_chunk_verify(net, chunk, asoc))
net/sctp/sm_statefuns.c
2134
if (asoc->state < SCTP_STATE_ESTABLISHED) {
net/sctp/sm_statefuns.c
2150
ev = sctp_ulpevent_make_assoc_change(asoc, 0,
net/sctp/sm_statefuns.c
2152
asoc->c.sinit_num_ostreams,
net/sctp/sm_statefuns.c
2153
asoc->c.sinit_max_instreams,
net/sctp/sm_statefuns.c
2163
if (asoc->peer.adaptation_ind) {
net/sctp/sm_statefuns.c
2164
ai_ev = sctp_ulpevent_make_adaptation_indication(asoc,
net/sctp/sm_statefuns.c
2171
if (!asoc->peer.auth_capable) {
net/sctp/sm_statefuns.c
2172
auth_ev = sctp_ulpevent_make_authkey(asoc, 0,
net/sctp/sm_statefuns.c
2180
repl = sctp_make_cookie_ack(asoc, chunk);
net/sctp/sm_statefuns.c
2227
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2247
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2248
asoc = NULL;
net/sctp/sm_statefuns.c
2249
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2265
new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error,
net/sctp/sm_statefuns.c
2283
sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2285
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2288
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2298
action = sctp_tietags_compare(new_asoc, asoc);
net/sctp/sm_statefuns.c
2310
!sctp_verify_init(net, ep, asoc, cid, peer_init, chunk,
net/sctp/sm_statefuns.c
2315
return sctp_sf_pdiscard(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2323
if (security_sctp_assoc_request((struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
2326
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2333
retval = sctp_sf_do_dupcook_a(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2338
retval = sctp_sf_do_dupcook_b(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2343
retval = sctp_sf_do_dupcook_c(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2348
retval = sctp_sf_do_dupcook_d(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
2353
retval = sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
236
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2365
SCTP_ASOC((struct sctp_association *)asoc));
net/sctp/sm_statefuns.c
2381
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2388
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2389
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2402
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2410
sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest))
net/sctp/sm_statefuns.c
2411
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2414
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2416
return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2427
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
243
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2434
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2435
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
244
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2448
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2456
sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest))
net/sctp/sm_statefuns.c
2457
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2460
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2470
return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2481
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2489
return sctp_sf_shutdown_sent_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2509
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2517
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2518
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
252
return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2524
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2540
return sctp_sf_do_5_2_6_stale(net, ep, asoc, type,
net/sctp/sm_statefuns.c
2549
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
256
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2580
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2586
int attempts = asoc->init_err_counter + 1;
net/sctp/sm_statefuns.c
2592
if (attempts > asoc->max_init_attempts) {
net/sctp/sm_statefuns.c
2622
bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
net/sctp/sm_statefuns.c
2623
reply = sctp_make_init(asoc, bp, GFP_ATOMIC, sizeof(bht));
net/sctp/sm_statefuns.c
266
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP,
net/sctp/sm_statefuns.c
2697
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2704
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2705
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2718
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2726
sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest))
net/sctp/sm_statefuns.c
2727
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2730
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2732
return __sctp_sf_do_9_1_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2738
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2769
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2778
if (!sctp_vtag_verify_either(chunk, asoc))
net/sctp/sm_statefuns.c
2779
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2792
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2799
return sctp_stop_t1_and_abort(net, commands, error, ECONNREFUSED, asoc,
net/sctp/sm_statefuns.c
2809
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2815
ENOPROTOOPT, asoc,
net/sctp/sm_statefuns.c
2825
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2833
return sctp_sf_cookie_wait_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2845
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2899
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2910
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2911
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2915
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
2924
if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
net/sctp/sm_statefuns.c
2926
asoc->ctsn_ack_point);
net/sctp/sm_statefuns.c
2935
if (!TSN_lt(ctsn, asoc->next_tsn))
net/sctp/sm_statefuns.c
2936
return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
2942
ev = sctp_ulpevent_make_shutdown_event(asoc, 0, GFP_ATOMIC);
net/sctp/sm_statefuns.c
2959
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/sm_statefuns.c
2960
disposition = sctp_sf_do_9_2_shutdown_ack(net, ep, asoc, type,
net/sctp/sm_statefuns.c
2989
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
2998
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
2999
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3003
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3009
if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
net/sctp/sm_statefuns.c
3011
asoc->ctsn_ack_point);
net/sctp/sm_statefuns.c
3020
if (!TSN_lt(ctsn, asoc->next_tsn))
net/sctp/sm_statefuns.c
3021
return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3042
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3051
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3058
reply = sctp_make_shutdown_ack(asoc, chunk);
net/sctp/sm_statefuns.c
3080
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3087
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3090
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3093
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3095
return __sctp_sf_do_9_2_reshutack(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3125
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3134
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3135
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3138
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3147
if (TSN_lte(asoc->last_ecne_tsn, lowest_tsn)) {
net/sctp/sm_statefuns.c
3181
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3188
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3189
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3192
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
321
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3237
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3246
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
3249
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3252
if (!sctp_chunk_length_valid(chunk, sctp_datachk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
3253
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3256
error = sctp_eat_data(asoc, chunk, commands);
net/sctp/sm_statefuns.c
3271
return sctp_sf_abort_violation(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
3273
sctp_datahdr_len(&asoc->stream));
net/sctp/sm_statefuns.c
3281
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) {
net/sctp/sm_statefuns.c
3358
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3366
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
3369
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3372
if (!sctp_chunk_length_valid(chunk, sctp_datachk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
3373
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3376
error = sctp_eat_data(asoc, chunk, commands);
net/sctp/sm_statefuns.c
3387
return sctp_sf_abort_violation(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
3389
sctp_datahdr_len(&asoc->stream));
net/sctp/sm_statefuns.c
342
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3449
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3458
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3459
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3463
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3470
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3478
if (TSN_lte(asoc->next_tsn, ctsn))
net/sctp/sm_statefuns.c
3479
return sctp_sf_violation_ctsn(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3481
trace_sctp_probe(ep, asoc, chunk);
net/sctp/sm_statefuns.c
3489
if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
net/sctp/sm_statefuns.c
3491
asoc->ctsn_ack_point);
net/sctp/sm_statefuns.c
350
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3526
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3535
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
3542
abort = sctp_make_abort(asoc, chunk, 0);
net/sctp/sm_statefuns.c
3561
sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
357
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
3582
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
3586
abort = sctp_make_new_encap_port(asoc, chunk);
net/sctp/sm_statefuns.c
3601
sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3615
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3623
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3624
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3628
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3632
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
364
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3653
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3662
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3663
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3667
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3674
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP,
net/sctp/sm_statefuns.c
3680
reply = sctp_make_shutdown_complete(asoc, chunk);
net/sctp/sm_statefuns.c
373
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3736
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3750
if (asoc && !sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3751
asoc = NULL;
net/sctp/sm_statefuns.c
3757
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3763
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
377
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
net/sctp/sm_statefuns.c
3778
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3801
return sctp_sf_shut_8_4_5(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3803
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3805
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3832
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
384
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
net/sctp/sm_statefuns.c
3841
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
3848
shut = sctp_make_shutdown_complete(asoc, chunk);
net/sctp/sm_statefuns.c
3872
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3888
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3895
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
3896
asoc = NULL;
net/sctp/sm_statefuns.c
3900
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3916
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
3927
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
3930
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3935
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3944
if (!asoc->peer.asconf_capable ||
net/sctp/sm_statefuns.c
3946
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
3952
if (!sctp_verify_asconf(asoc, chunk, true, &err_param))
net/sctp/sm_statefuns.c
3953
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
3960
if (serial == asoc->peer.addip_serial + 1) {
net/sctp/sm_statefuns.c
3965
sctp_assoc_clean_asconf_ack_cache(asoc);
net/sctp/sm_statefuns.c
3976
asoc, chunk);
net/sctp/sm_statefuns.c
3979
} else if (serial < asoc->peer.addip_serial + 1) {
net/sctp/sm_statefuns.c
3992
asconf_ack = sctp_assoc_lookup_asconf_ack(asoc, hdr->serial);
net/sctp/sm_statefuns.c
401
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4019
if (asoc->new_transport) {
net/sctp/sm_statefuns.c
4020
sctp_sf_heartbeat(ep, asoc, type, asoc->new_transport, commands);
net/sctp/sm_statefuns.c
4021
((struct sctp_association *)asoc)->new_transport = NULL;
net/sctp/sm_statefuns.c
4030
struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4037
if (list_empty(&asoc->addip_chunk_list))
net/sctp/sm_statefuns.c
4040
entry = asoc->addip_chunk_list.next;
net/sctp/sm_statefuns.c
4045
asoc->addip_last_asconf = asconf;
net/sctp/sm_statefuns.c
4047
return sctp_sf_do_prm_asconf(net, ep, asoc, type, asconf, commands);
net/sctp/sm_statefuns.c
4057
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4062
struct sctp_chunk *last_asconf = asoc->addip_last_asconf;
net/sctp/sm_statefuns.c
4069
if (!sctp_vtag_verify(asconf_ack, asoc)) {
net/sctp/sm_statefuns.c
4072
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4078
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4087
if (!asoc->peer.asconf_capable ||
net/sctp/sm_statefuns.c
4089
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4095
if (!sctp_verify_asconf(asoc, asconf_ack, false, &err_param))
net/sctp/sm_statefuns.c
4096
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4103
sent_serial = asoc->addip_serial - 1;
net/sctp/sm_statefuns.c
4113
!(asoc->addip_last_asconf)) {
net/sctp/sm_statefuns.c
4114
abort = sctp_make_abort(asoc, asconf_ack,
net/sctp/sm_statefuns.c
4136
if ((rcvd_serial == sent_serial) && asoc->addip_last_asconf) {
net/sctp/sm_statefuns.c
4140
if (!sctp_process_asconf_ack((struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
4143
(struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
4146
abort = sctp_make_abort(asoc, asconf_ack,
net/sctp/sm_statefuns.c
4172
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4182
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4185
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4190
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4193
if (!sctp_verify_reconf(asoc, chunk, &err_param))
net/sctp/sm_statefuns.c
4194
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4204
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4207
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
421
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4210
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4213
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4216
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4219
(struct sctp_association *)asoc, param, &ev);
net/sctp/sm_statefuns.c
4249
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4259
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4262
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4265
if (!asoc->peer.prsctp_capable)
net/sctp/sm_statefuns.c
4266
return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4269
if (!sctp_chunk_length_valid(chunk, sctp_ftsnchk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
4270
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4285
if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
net/sctp/sm_statefuns.c
4288
if (!asoc->stream.si->validate_ftsn(chunk))
net/sctp/sm_statefuns.c
4292
if (len > sctp_ftsnhdr_len(&asoc->stream))
net/sctp/sm_statefuns.c
4297
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE]) {
net/sctp/sm_statefuns.c
4316
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4326
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4329
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4332
if (!asoc->peer.prsctp_capable)
net/sctp/sm_statefuns.c
4333
return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4336
if (!sctp_chunk_length_valid(chunk, sctp_ftsnchk_len(&asoc->stream)))
net/sctp/sm_statefuns.c
4337
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4352
if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
net/sctp/sm_statefuns.c
4355
if (!asoc->stream.si->validate_ftsn(chunk))
net/sctp/sm_statefuns.c
4359
if (len > sctp_ftsnhdr_len(&asoc->stream))
net/sctp/sm_statefuns.c
4402
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4420
if (!sctp_auth_asoc_verify_hmac_id(asoc, auth_hdr->hmac_id))
net/sctp/sm_statefuns.c
4427
if (key_id != asoc->active_key_id) {
net/sctp/sm_statefuns.c
4428
sh_key = sctp_auth_get_shkey(asoc, key_id);
net/sctp/sm_statefuns.c
4458
sctp_auth_calculate_hmac(asoc, chunk->skb,
net/sctp/sm_statefuns.c
4478
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4488
if (!asoc->peer.auth_capable)
net/sctp/sm_statefuns.c
4489
return sctp_sf_unk_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4491
if (!sctp_vtag_verify(chunk, asoc)) {
net/sctp/sm_statefuns.c
4494
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4499
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4503
error = sctp_sf_authenticate(asoc, chunk);
net/sctp/sm_statefuns.c
4509
err_chunk = sctp_make_op_error(asoc, chunk,
net/sctp/sm_statefuns.c
4520
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4523
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4533
if (asoc->active_key_id != ntohs(auth_hdr->shkey_id)) {
net/sctp/sm_statefuns.c
4536
ev = sctp_ulpevent_make_authkey(asoc, ntohs(auth_hdr->shkey_id),
net/sctp/sm_statefuns.c
4574
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4585
if (!sctp_vtag_verify(unk_chunk, asoc))
net/sctp/sm_statefuns.c
4586
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4593
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4599
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4603
err_chunk = sctp_make_op_error(asoc, unk_chunk,
net/sctp/sm_statefuns.c
4613
sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4621
err_chunk = sctp_make_op_error(asoc, unk_chunk,
net/sctp/sm_statefuns.c
4654
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4661
if (asoc && !sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
4662
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4669
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4697
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4724
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4731
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
4732
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
4736
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
4748
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4769
if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc))
net/sctp/sm_statefuns.c
4773
abort = sctp_make_abort_violation(asoc, chunk, payload, paylen);
net/sctp/sm_statefuns.c
4777
if (asoc) {
net/sctp/sm_statefuns.c
4780
!asoc->peer.i.init_tag) {
net/sctp/sm_statefuns.c
4798
if (asoc->state <= SCTP_STATE_COOKIE_ECHOED) {
net/sctp/sm_statefuns.c
4813
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
4834
sctp_sf_pdiscard(net, ep, asoc, SCTP_ST_CHUNK(0), arg, commands);
net/sctp/sm_statefuns.c
4865
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4872
return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str,
net/sctp/sm_statefuns.c
4885
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4894
if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc))
net/sctp/sm_statefuns.c
4898
abort = sctp_make_violation_paramlen(asoc, chunk, param);
net/sctp/sm_statefuns.c
4913
sctp_sf_pdiscard(net, ep, asoc, SCTP_ST_CHUNK(0), arg, commands);
net/sctp/sm_statefuns.c
4928
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4935
return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str,
net/sctp/sm_statefuns.c
4948
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
4955
return sctp_sf_abort_violation(net, ep, asoc, arg, commands, err_str,
net/sctp/sm_statefuns.c
5020
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5043
repl = sctp_make_init(asoc, &asoc->base.bind_addr, GFP_ATOMIC, 0);
net/sctp/sm_statefuns.c
5054
my_asoc = (struct sctp_association *)asoc;
net/sctp/sm_statefuns.c
5132
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5172
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5191
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/sm_statefuns.c
5192
disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type,
net/sctp/sm_statefuns.c
5229
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
523
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5266
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5281
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5308
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
533
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
534
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5343
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5351
return sctp_sf_cookie_wait_prm_shutdown(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5371
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
541
return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5420
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5428
return sctp_sf_cookie_wait_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5446
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
545
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
5455
return sctp_sf_do_9_1_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5473
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5486
return sctp_sf_do_9_1_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
55
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5504
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5512
return sctp_sf_shutdown_sent_prm_abort(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
552
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
net/sctp/sm_statefuns.c
5540
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5545
if (SCTP_DISPOSITION_NOMEM == sctp_sf_heartbeat(ep, asoc, type,
net/sctp/sm_statefuns.c
5572
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5589
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5608
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5632
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5639
event = sctp_ulpevent_make_sender_dry_event(asoc, GFP_ATOMIC);
net/sctp/sm_statefuns.c
564
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
net/sctp/sm_statefuns.c
5664
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5676
reply = sctp_make_shutdown(asoc, arg);
net/sctp/sm_statefuns.c
5696
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE])
net/sctp/sm_statefuns.c
5734
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5750
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
5751
return sctp_sf_pdiscard(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
5757
return sctp_sf_violation_chunklen(net, ep, asoc, type,
net/sctp/sm_statefuns.c
5764
reply = sctp_make_shutdown_ack(asoc, chunk);
net/sctp/sm_statefuns.c
5777
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE])
net/sctp/sm_statefuns.c
58
static int sctp_eat_data(const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5807
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5835
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5844
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
5845
if (asoc->peer.zero_window_announced &&
net/sctp/sm_statefuns.c
5846
asoc->state == SCTP_STATE_SHUTDOWN_PENDING) {
net/sctp/sm_statefuns.c
591
if (sctp_auth_recv_cid(SCTP_CID_ABORT, asoc))
net/sctp/sm_statefuns.c
592
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
5923
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
5955
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
596
asoc, chunk->transport);
net/sctp/sm_statefuns.c
5960
int attempts = asoc->init_err_counter + 1;
net/sctp/sm_statefuns.c
5968
if (attempts <= asoc->max_init_attempts) {
net/sctp/sm_statefuns.c
5969
bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
net/sctp/sm_statefuns.c
5970
repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0);
net/sctp/sm_statefuns.c
5986
asoc->max_init_attempts);
net/sctp/sm_statefuns.c
6020
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6025
int attempts = asoc->init_err_counter + 1;
net/sctp/sm_statefuns.c
6032
if (attempts <= asoc->max_init_attempts) {
net/sctp/sm_statefuns.c
6033
repl = sctp_make_cookie_echo(asoc, NULL);
net/sctp/sm_statefuns.c
6071
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6082
((struct sctp_association *)asoc)->shutdown_retries++;
net/sctp/sm_statefuns.c
6084
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
6095
switch (asoc->state) {
net/sctp/sm_statefuns.c
6097
reply = sctp_make_shutdown(asoc, NULL);
net/sctp/sm_statefuns.c
6101
reply = sctp_make_shutdown_ack(asoc, NULL);
net/sctp/sm_statefuns.c
6116
if (asoc->shutdown_last_sent_to)
net/sctp/sm_statefuns.c
6118
SCTP_TRANSPORT(asoc->shutdown_last_sent_to));
net/sctp/sm_statefuns.c
6142
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6147
struct sctp_chunk *chunk = asoc->addip_last_asconf;
net/sctp/sm_statefuns.c
6168
if (asoc->overall_error_count >= asoc->max_retrans) {
net/sctp/sm_statefuns.c
6191
sctp_chunk_hold(asoc->addip_last_asconf);
net/sctp/sm_statefuns.c
6193
SCTP_CHUNK(asoc->addip_last_asconf));
net/sctp/sm_statefuns.c
6214
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6225
reply = sctp_make_abort(asoc, NULL, 0);
net/sctp/sm_statefuns.c
6251
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6272
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/sm_statefuns.c
6273
disposition = sctp_sf_do_9_2_start_shutdown(net, ep, asoc, type,
net/sctp/sm_statefuns.c
6294
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
63
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6311
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6331
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6376
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6383
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
6389
abort = sctp_make_abort(asoc, chunk, paylen);
net/sctp/sm_statefuns.c
641
const struct sctp_association *asoc)
net/sctp/sm_statefuns.c
6417
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6432
if (asoc) {
net/sctp/sm_statefuns.c
6447
vtag = asoc->peer.i.init_tag;
net/sctp/sm_statefuns.c
646
return !sctp_auth_recv_cid(chunk->chunk_hdr->type, asoc);
net/sctp/sm_statefuns.c
6501
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6509
packet = sctp_ootb_pkt_new(net, asoc, chunk);
net/sctp/sm_statefuns.c
6530
static int sctp_eat_data(const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6534
struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map;
net/sctp/sm_statefuns.c
6535
struct sock *sk = asoc->base.sk;
net/sctp/sm_statefuns.c
6546
skb_pull(chunk->skb, sctp_datahdr_len(&asoc->stream));
net/sctp/sm_statefuns.c
656
if (!net->sctp.auth_enable || !asoc->peer.auth_capable)
net/sctp/sm_statefuns.c
6563
if (asoc->peer.ecn_capable && !chunk->ecn_ce_done) {
net/sctp/sm_statefuns.c
6574
tmp = sctp_tsnmap_check(&asoc->peer.tsn_map, tsn);
net/sctp/sm_statefuns.c
6579
if (chunk->asoc)
net/sctp/sm_statefuns.c
6580
chunk->asoc->stats.outofseqtsns++;
net/sctp/sm_statefuns.c
6594
datalen -= sctp_datachk_len(&asoc->stream);
net/sctp/sm_statefuns.c
6599
if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) {
net/sctp/sm_statefuns.c
661
auth.asoc = chunk->asoc;
net/sctp/sm_statefuns.c
6612
if ((!chunk->data_accepted) && (!asoc->rwnd || asoc->rwnd_over ||
net/sctp/sm_statefuns.c
6613
(datalen > asoc->rwnd + asoc->frag_point))) {
net/sctp/sm_statefuns.c
6627
__func__, tsn, datalen, asoc->rwnd);
net/sctp/sm_statefuns.c
6658
err = sctp_make_abort_no_data(asoc, chunk, tsn);
net/sctp/sm_statefuns.c
6683
if (chunk->asoc)
net/sctp/sm_statefuns.c
6684
chunk->asoc->stats.iuodchunks++;
net/sctp/sm_statefuns.c
6687
if (chunk->asoc)
net/sctp/sm_statefuns.c
6688
chunk->asoc->stats.iodchunks++;
net/sctp/sm_statefuns.c
669
return sctp_sf_authenticate(asoc, &auth) == SCTP_IERROR_NO_ERROR;
net/sctp/sm_statefuns.c
6699
if (ntohs(data_hdr->stream) >= asoc->stream.incnt) {
net/sctp/sm_statefuns.c
67
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
6703
err = sctp_make_op_error(asoc, chunk, SCTP_ERROR_INV_STRM,
net/sctp/sm_statefuns.c
6720
if (!asoc->stream.si->validate_data(chunk))
net/sctp/sm_statefuns.c
705
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
720
if (asoc && !sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
721
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
728
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
737
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
747
return sctp_sf_tabort_8_4_8(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
762
new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error,
net/sctp/sm_statefuns.c
780
sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands,
net/sctp/sm_statefuns.c
782
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
786
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
793
!sctp_verify_init(net, ep, asoc, cid, peer_init, chunk,
net/sctp/sm_statefuns.c
798
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
805
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
82
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
831
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
89
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
940
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
948
if (!sctp_vtag_verify(chunk, asoc))
net/sctp/sm_statefuns.c
949
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
952
if (security_sctp_assoc_established((struct sctp_association *)asoc,
net/sctp/sm_statefuns.c
954
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
net/sctp/sm_statefuns.c
96
const struct sctp_association *asoc,
net/sctp/sm_statefuns.c
960
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
net/sctp/sm_statefuns.c
984
if (asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE])
net/sctp/sm_statefuns.c
992
ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP,
net/sctp/sm_statefuns.c
993
0, asoc->c.sinit_num_ostreams,
net/sctp/sm_statefuns.c
994
asoc->c.sinit_max_instreams,
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
1997
tmp = list_next_entry(asoc, asocs);
net/sctp/socket.c
2005
asoc = sctp_endpoint_lookup_assoc(ep, daddr, &transport);
net/sctp/socket.c
2006
if (asoc) {
net/sctp/socket.c
2007
err = sctp_sendmsg_check_sflags(asoc, sflags, msg,
net/sctp/socket.c
2017
asoc = transport->asoc;
net/sctp/socket.c
202
sctp_skb_for_each(skb, &asoc->ulpq.reasm, tmp)
net/sctp/socket.c
2024
asoc = sctp_id2assoc(sk, sinfo->sinfo_assoc_id);
net/sctp/socket.c
2025
if (!asoc) {
net/sctp/socket.c
2030
err = sctp_sendmsg_check_sflags(asoc, sflags, msg, msg_len);
net/sctp/socket.c
2036
sctp_sendmsg_update_sinfo(asoc, sinfo, &cmsgs);
net/sctp/socket.c
2039
err = sctp_sendmsg_to_asoc(asoc, msg, msg_len, transport, sinfo);
net/sctp/socket.c
2041
sctp_association_free(asoc);
net/sctp/socket.c
205
sctp_skb_for_each(skb, &asoc->ulpq.reasm_uo, tmp)
net/sctp/socket.c
2186
sctp_assoc_rwnd_increase(event->asoc, copied);
net/sctp/socket.c
2232
struct sctp_association *asoc;
net/sctp/socket.c
2242
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
2243
asoc->subscribe = sctp_sk(sk)->subscribe;
net/sctp/socket.c
2252
asoc = sctp_id2assoc(sk, 0);
net/sctp/socket.c
2253
if (asoc && sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/socket.c
2254
event = sctp_ulpevent_make_sender_dry_event(asoc,
net/sctp/socket.c
2259
asoc->stream.si->enqueue_event(&asoc->ulpq, event);
net/sctp/socket.c
235
struct sctp_association *asoc = NULL;
net/sctp/socket.c
2436
struct sctp_association *asoc,
net/sctp/socket.c
2445
error = sctp_primitive_REQUESTHEARTBEAT(trans->asoc->base.net,
net/sctp/socket.c
2446
trans->asoc, trans);
net/sctp/socket.c
2470
} else if (asoc) {
net/sctp/socket.c
2471
asoc->hbinterval =
net/sctp/socket.c
248
asoc = list_entry(sctp_sk(sk)->ep->asocs.next,
net/sctp/socket.c
2483
} else if (asoc) {
net/sctp/socket.c
2484
asoc->param_flags =
net/sctp/socket.c
2485
(asoc->param_flags & ~SPP_HB) | hb_change;
net/sctp/socket.c
250
return asoc;
net/sctp/socket.c
2500
sctp_assoc_sync_pmtu(asoc);
net/sctp/socket.c
2501
} else if (asoc) {
net/sctp/socket.c
2502
sctp_assoc_set_pmtu(asoc, params->spp_pathmtu);
net/sctp/socket.c
2516
sctp_assoc_sync_pmtu(asoc);
net/sctp/socket.c
2519
} else if (asoc) {
net/sctp/socket.c
2520
asoc->param_flags =
net/sctp/socket.c
2521
(asoc->param_flags & ~SPP_PMTUD) | pmtud_change;
net/sctp/socket.c
2536
} else if (asoc) {
net/sctp/socket.c
2537
asoc->sackdelay =
net/sctp/socket.c
2549
} else if (asoc) {
net/sctp/socket.c
2550
asoc->param_flags =
net/sctp/socket.c
2551
(asoc->param_flags & ~SPP_SACKDELAY) |
net/sctp/socket.c
2566
} else if (asoc) {
net/sctp/socket.c
2567
asoc->pathmaxrxt = params->spp_pathmaxrxt;
net/sctp/socket.c
258
asoc = (struct sctp_association *)idr_find(&sctp_assocs_id, (int)id);
net/sctp/socket.c
2580
} else if (asoc) {
net/sctp/socket.c
2583
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/socket.c
259
if (asoc && (asoc->base.sk != sk || asoc->base.dead))
net/sctp/socket.c
2591
asoc->flowlabel = params->spp_ipv6_flowlabel &
net/sctp/socket.c
2593
asoc->flowlabel |= SCTP_FLOWLABEL_SET_MASK;
net/sctp/socket.c
260
asoc = NULL;
net/sctp/socket.c
2605
} else if (asoc) {
net/sctp/socket.c
2608
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/socket.c
2614
asoc->dscp = params->spp_dscp & SCTP_DSCP_VAL_MASK;
net/sctp/socket.c
2615
asoc->dscp |= SCTP_DSCP_SET_MASK;
net/sctp/socket.c
263
return asoc;
net/sctp/socket.c
2630
struct sctp_association *asoc = NULL;
net/sctp/socket.c
2670
asoc = sctp_id2assoc(sk, params->spp_assoc_id);
net/sctp/socket.c
2671
if (!asoc && params->spp_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
2678
if (params->spp_flags & SPP_HB_DEMAND && !trans && !asoc)
net/sctp/socket.c
2682
error = sctp_apply_peer_addr_params(params, trans, asoc, sp,
net/sctp/socket.c
2692
if (!trans && asoc) {
net/sctp/socket.c
2693
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/socket.c
2695
sctp_apply_peer_addr_params(params, trans, asoc, sp,
net/sctp/socket.c
2715
struct sctp_association *asoc)
net/sctp/socket.c
2720
asoc->sackdelay = msecs_to_jiffies(params->sack_delay);
net/sctp/socket.c
2721
asoc->param_flags =
net/sctp/socket.c
2722
sctp_spp_sackdelay_enable(asoc->param_flags);
net/sctp/socket.c
2725
asoc->param_flags =
net/sctp/socket.c
2726
sctp_spp_sackdelay_disable(asoc->param_flags);
net/sctp/socket.c
2728
asoc->sackfreq = params->sack_freq;
net/sctp/socket.c
2729
asoc->param_flags =
net/sctp/socket.c
2730
sctp_spp_sackdelay_enable(asoc->param_flags);
net/sctp/socket.c
2733
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/socket.c
2790
struct sctp_association *asoc;
net/sctp/socket.c
2800
asoc = sctp_id2assoc(sk, params->sack_assoc_id);
net/sctp/socket.c
2801
if (!asoc && params->sack_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
2805
if (asoc) {
net/sctp/socket.c
2806
sctp_apply_asoc_delayed_ack(params, asoc);
net/sctp/socket.c
2833
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
2834
sctp_apply_asoc_delayed_ack(params, asoc);
net/sctp/socket.c
2916
struct sctp_association *asoc;
net/sctp/socket.c
2925
asoc = sctp_id2assoc(sk, info->sinfo_assoc_id);
net/sctp/socket.c
2926
if (!asoc && info->sinfo_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
2930
if (asoc) {
net/sctp/socket.c
2931
asoc->default_stream = info->sinfo_stream;
net/sctp/socket.c
2932
asoc->default_flags = info->sinfo_flags;
net/sctp/socket.c
2933
asoc->default_ppid = info->sinfo_ppid;
net/sctp/socket.c
2934
asoc->default_context = info->sinfo_context;
net/sctp/socket.c
2935
asoc->default_timetolive = info->sinfo_timetolive;
net/sctp/socket.c
2954
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
2955
asoc->default_stream = info->sinfo_stream;
net/sctp/socket.c
2956
asoc->default_flags = info->sinfo_flags;
net/sctp/socket.c
2957
asoc->default_ppid = info->sinfo_ppid;
net/sctp/socket.c
2958
asoc->default_context = info->sinfo_context;
net/sctp/socket.c
2959
asoc->default_timetolive = info->sinfo_timetolive;
net/sctp/socket.c
2974
struct sctp_association *asoc;
net/sctp/socket.c
2983
asoc = sctp_id2assoc(sk, info->snd_assoc_id);
net/sctp/socket.c
2984
if (!asoc && info->snd_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
2988
if (asoc) {
net/sctp/socket.c
2989
asoc->default_stream = info->snd_sid;
net/sctp/socket.c
2990
asoc->default_flags = info->snd_flags;
net/sctp/socket.c
2991
asoc->default_ppid = info->snd_ppid;
net/sctp/socket.c
2992
asoc->default_context = info->snd_context;
net/sctp/socket.c
3010
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
3011
asoc->default_stream = info->snd_sid;
net/sctp/socket.c
3012
asoc->default_flags = info->snd_flags;
net/sctp/socket.c
3013
asoc->default_ppid = info->snd_ppid;
net/sctp/socket.c
3014
asoc->default_context = info->snd_context;
net/sctp/socket.c
3052
sctp_assoc_set_primary(trans->asoc, trans);
net/sctp/socket.c
3090
struct sctp_association *asoc;
net/sctp/socket.c
3097
asoc = sctp_id2assoc(sk, rtoinfo->srto_assoc_id);
net/sctp/socket.c
3100
if (!asoc && rtoinfo->srto_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3108
rto_max = asoc ? msecs_to_jiffies(rto_max) : rto_max;
net/sctp/socket.c
3110
rto_max = asoc ? asoc->rto_max : sp->rtoinfo.srto_max;
net/sctp/socket.c
3113
rto_min = asoc ? msecs_to_jiffies(rto_min) : rto_min;
net/sctp/socket.c
3115
rto_min = asoc ? asoc->rto_min : sp->rtoinfo.srto_min;
net/sctp/socket.c
3120
if (asoc) {
net/sctp/socket.c
3122
asoc->rto_initial =
net/sctp/socket.c
3124
asoc->rto_max = rto_max;
net/sctp/socket.c
3125
asoc->rto_min = rto_min;
net/sctp/socket.c
3155
struct sctp_association *asoc;
net/sctp/socket.c
3160
asoc = sctp_id2assoc(sk, assocparams->sasoc_assoc_id);
net/sctp/socket.c
3162
if (!asoc && assocparams->sasoc_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3167
if (asoc) {
net/sctp/socket.c
3173
list_for_each_entry(peer_addr, &asoc->peer.transport_addr_list,
net/sctp/socket.c
3188
asoc->max_retrans = assocparams->sasoc_asocmaxrxt;
net/sctp/socket.c
3192
asoc->cookie_life =
net/sctp/socket.c
3265
struct sctp_association *asoc;
net/sctp/socket.c
3284
asoc = sctp_id2assoc(sk, assoc_id);
net/sctp/socket.c
3285
if (!asoc && assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3291
__u16 datasize = asoc ? sctp_datachk_len(&asoc->stream) :
net/sctp/socket.c
3301
if (asoc) {
net/sctp/socket.c
3302
asoc->user_frag = val;
net/sctp/socket.c
3303
sctp_assoc_update_frag_point(asoc);
net/sctp/socket.c
3325
struct sctp_association *asoc = NULL;
net/sctp/socket.c
3338
asoc = sctp_id2assoc(sk, prim->sspp_assoc_id);
net/sctp/socket.c
3339
if (!asoc)
net/sctp/socket.c
3342
if (!asoc->peer.asconf_capable)
net/sctp/socket.c
3345
if (asoc->peer.addip_disabled_mask & SCTP_PARAM_SET_PRIMARY)
net/sctp/socket.c
3348
if (!sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
3358
if (!sctp_assoc_lookup_laddr(asoc, (union sctp_addr *)&prim->sspp_addr))
net/sctp/socket.c
3369
chunk = sctp_make_asconf_set_prim(asoc,
net/sctp/socket.c
3374
err = sctp_send_asconf(asoc, chunk);
net/sctp/socket.c
3412
struct sctp_association *asoc;
net/sctp/socket.c
3417
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
3418
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3422
if (asoc) {
net/sctp/socket.c
3423
asoc->default_rcv_context = params->assoc_value;
net/sctp/socket.c
3437
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
3438
asoc->default_rcv_context = params->assoc_value;
net/sctp/socket.c
3531
struct sctp_association *asoc;
net/sctp/socket.c
3549
asoc = sctp_id2assoc(sk, assoc_id);
net/sctp/socket.c
3550
if (!asoc && assoc_id > SCTP_ALL_ASSOC && sctp_style(sk, UDP))
net/sctp/socket.c
3553
if (asoc) {
net/sctp/socket.c
3554
asoc->max_burst = assoc_value;
net/sctp/socket.c
3566
list_for_each_entry(asoc, &sp->ep->asocs, asocs)
net/sctp/socket.c
3567
asoc->max_burst = assoc_value;
net/sctp/socket.c
3643
struct sctp_association *asoc;
net/sctp/socket.c
3656
asoc = sctp_id2assoc(sk, authkey->sca_assoc_id);
net/sctp/socket.c
3657
if (!asoc && authkey->sca_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3661
if (asoc) {
net/sctp/socket.c
3662
ret = sctp_auth_set_key(ep, asoc, authkey);
net/sctp/socket.c
3671
ret = sctp_auth_set_key(ep, asoc, authkey);
net/sctp/socket.c
3680
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3681
int res = sctp_auth_set_key(ep, asoc, authkey);
net/sctp/socket.c
3704
struct sctp_association *asoc;
net/sctp/socket.c
3710
asoc = sctp_id2assoc(sk, val->scact_assoc_id);
net/sctp/socket.c
3711
if (!asoc && val->scact_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3715
if (asoc)
net/sctp/socket.c
3716
return sctp_auth_set_active_key(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3723
ret = sctp_auth_set_active_key(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3730
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3731
int res = sctp_auth_set_active_key(ep, asoc,
net/sctp/socket.c
3752
struct sctp_association *asoc;
net/sctp/socket.c
3758
asoc = sctp_id2assoc(sk, val->scact_assoc_id);
net/sctp/socket.c
3759
if (!asoc && val->scact_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3763
if (asoc)
net/sctp/socket.c
3764
return sctp_auth_del_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3771
ret = sctp_auth_del_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3778
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3779
int res = sctp_auth_del_key_id(ep, asoc,
net/sctp/socket.c
3800
struct sctp_association *asoc;
net/sctp/socket.c
3806
asoc = sctp_id2assoc(sk, val->scact_assoc_id);
net/sctp/socket.c
3807
if (!asoc && val->scact_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
3811
if (asoc)
net/sctp/socket.c
3812
return sctp_auth_deact_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3819
ret = sctp_auth_deact_key_id(ep, asoc, val->scact_keynumber);
net/sctp/socket.c
3826
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
3827
int res = sctp_auth_deact_key_id(ep, asoc,
net/sctp/socket.c
3889
struct sctp_association *asoc;
net/sctp/socket.c
3914
asoc = sctp_id2assoc(sk, val->spt_assoc_id);
net/sctp/socket.c
3915
if (!asoc && val->spt_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3919
if (asoc) {
net/sctp/socket.c
3920
list_for_each_entry(trans, &asoc->peer.transport_addr_list,
net/sctp/socket.c
3930
asoc->pathmaxrxt = val->spt_pathmaxrxt;
net/sctp/socket.c
3932
asoc->ps_retrans = val->spt_pathcpthld;
net/sctp/socket.c
3933
asoc->pf_retrans = val->spt_pathpfthld;
net/sctp/socket.c
3973
struct sctp_association *asoc;
net/sctp/socket.c
3978
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
3979
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
3993
struct sctp_association *asoc;
net/sctp/socket.c
4005
asoc = sctp_id2assoc(sk, info->pr_assoc_id);
net/sctp/socket.c
4006
if (!asoc && info->pr_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4012
if (asoc) {
net/sctp/socket.c
4013
SCTP_PR_SET_POLICY(asoc->default_flags, info->pr_policy);
net/sctp/socket.c
4014
asoc->default_timetolive = info->pr_value;
net/sctp/socket.c
4029
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
4030
SCTP_PR_SET_POLICY(asoc->default_flags,
net/sctp/socket.c
4032
asoc->default_timetolive = info->pr_value;
net/sctp/socket.c
4044
struct sctp_association *asoc;
net/sctp/socket.c
4050
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4051
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4068
struct sctp_association *asoc;
net/sctp/socket.c
4077
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4078
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4084
if (asoc) {
net/sctp/socket.c
4085
asoc->strreset_enable = params->assoc_value;
net/sctp/socket.c
4098
list_for_each_entry(asoc, &ep->asocs, asocs)
net/sctp/socket.c
4099
asoc->strreset_enable = params->assoc_value;
net/sctp/socket.c
4109
struct sctp_association *asoc;
net/sctp/socket.c
4122
asoc = sctp_id2assoc(sk, params->srs_assoc_id);
net/sctp/socket.c
4123
if (!asoc)
net/sctp/socket.c
4126
return sctp_send_reset_streams(asoc, params);
net/sctp/socket.c
4132
struct sctp_association *asoc;
net/sctp/socket.c
4137
asoc = sctp_id2assoc(sk, *associd);
net/sctp/socket.c
4138
if (!asoc)
net/sctp/socket.c
4141
return sctp_send_reset_assoc(asoc);
net/sctp/socket.c
4148
struct sctp_association *asoc;
net/sctp/socket.c
4153
asoc = sctp_id2assoc(sk, params->sas_assoc_id);
net/sctp/socket.c
4154
if (!asoc)
net/sctp/socket.c
4157
return sctp_send_add_streams(asoc, params);
net/sctp/socket.c
4165
struct sctp_association *asoc;
net/sctp/socket.c
4174
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4175
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4179
if (asoc)
net/sctp/socket.c
4180
return sctp_sched_set_sched(asoc, params->assoc_value);
net/sctp/socket.c
4191
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
4192
int ret = sctp_sched_set_sched(asoc,
net/sctp/socket.c
4207
struct sctp_association *asoc;
net/sctp/socket.c
4213
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4214
if (!asoc && params->assoc_id != SCTP_CURRENT_ASSOC &&
net/sctp/socket.c
4218
if (asoc) {
net/sctp/socket.c
4219
retval = sctp_sched_set_value(asoc, params->stream_id,
net/sctp/socket.c
4226
list_for_each_entry(asoc, &sctp_sk(sk)->ep->asocs, asocs) {
net/sctp/socket.c
4227
int ret = sctp_sched_set_value(asoc, params->stream_id,
net/sctp/socket.c
4243
struct sctp_association *asoc;
net/sctp/socket.c
4248
asoc = sctp_id2assoc(sk, p->assoc_id);
net/sctp/socket.c
4249
if (!asoc && p->assoc_id != SCTP_FUTURE_ASSOC && sctp_style(sk, UDP))
net/sctp/socket.c
4278
struct sctp_association *asoc)
net/sctp/socket.c
4282
sctp_ulpevent_type_set(&asoc->subscribe, param->se_type, param->se_on);
net/sctp/socket.c
4285
if (sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/socket.c
4286
event = sctp_ulpevent_make_sender_dry_event(asoc,
net/sctp/socket.c
4291
asoc->stream.si->enqueue_event(&asoc->ulpq, event);
net/sctp/socket.c
4302
struct sctp_association *asoc;
net/sctp/socket.c
4312
asoc = sctp_id2assoc(sk, param->se_assoc_id);
net/sctp/socket.c
4313
if (!asoc && param->se_assoc_id > SCTP_ALL_ASSOC &&
net/sctp/socket.c
4317
if (asoc)
net/sctp/socket.c
4318
return sctp_assoc_ulpevent_type_set(param, asoc);
net/sctp/socket.c
4330
list_for_each_entry(asoc, &sp->ep->asocs, asocs) {
net/sctp/socket.c
4331
int ret = sctp_assoc_ulpevent_type_set(param, asoc);
net/sctp/socket.c
4345
struct sctp_association *asoc;
net/sctp/socket.c
4352
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4353
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4375
struct sctp_association *asoc;
net/sctp/socket.c
4382
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4383
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4409
struct sctp_association *asoc;
net/sctp/socket.c
4415
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4416
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4431
struct sctp_association *asoc;
net/sctp/socket.c
4440
asoc = sctp_id2assoc(sk, params->assoc_id);
net/sctp/socket.c
4441
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4445
if (asoc)
net/sctp/socket.c
4446
asoc->pf_expose = params->assoc_value;
net/sctp/socket.c
4459
struct sctp_association *asoc;
net/sctp/socket.c
4484
asoc = sctp_id2assoc(sk, encap->sue_assoc_id);
net/sctp/socket.c
4485
if (!asoc && encap->sue_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4492
if (asoc) {
net/sctp/socket.c
4493
list_for_each_entry(t, &asoc->peer.transport_addr_list,
net/sctp/socket.c
4497
asoc->encap_port = encap_port;
net/sctp/socket.c
4509
struct sctp_association *asoc;
net/sctp/socket.c
4538
asoc = sctp_id2assoc(sk, params->spi_assoc_id);
net/sctp/socket.c
4539
if (!asoc && params->spi_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
4546
if (asoc) {
net/sctp/socket.c
4547
list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) {
net/sctp/socket.c
4552
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
4857
struct sctp_association *asoc,
net/sctp/socket.c
4875
newsp->pf->to_sk_daddr(&asoc->peer.primary_addr, newsk);
net/sctp/socket.c
4876
newinet->inet_dport = htons(asoc->peer.port);
net/sctp/socket.c
488
asoc->addip_last_asconf = chunk;
net/sctp/socket.c
4911
err = sctp_sock_migrate(sk, newsk, asoc, type);
net/sctp/socket.c
4918
security_sctp_sk_clone(asoc, sk, newsk);
net/sctp/socket.c
4936
struct sctp_association *asoc;
net/sctp/socket.c
4963
asoc = list_entry(sctp_sk(sk)->ep->asocs.next,
net/sctp/socket.c
4966
newsk = sctp_clone_sock(sk, asoc, SCTP_SOCKET_TCP);
net/sctp/socket.c
5218
struct sctp_association *asoc;
net/sctp/socket.c
5221
asoc = list_entry(ep->asocs.next,
net/sctp/socket.c
5223
sctp_primitive_SHUTDOWN(net, asoc, NULL);
net/sctp/socket.c
5227
int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
net/sctp/socket.c
5235
if (!asoc) {
net/sctp/socket.c
5250
info->sctpi_tag = asoc->c.my_vtag;
net/sctp/socket.c
5251
info->sctpi_state = asoc->state;
net/sctp/socket.c
5252
info->sctpi_rwnd = asoc->a_rwnd;
net/sctp/socket.c
5253
info->sctpi_unackdata = asoc->unack_data;
net/sctp/socket.c
5254
info->sctpi_penddata = sctp_tsnmap_pending(&asoc->peer.tsn_map);
net/sctp/socket.c
5255
info->sctpi_instrms = asoc->stream.incnt;
net/sctp/socket.c
5256
info->sctpi_outstrms = asoc->stream.outcnt;
net/sctp/socket.c
5257
list_for_each(pos, &asoc->base.inqueue.in_chunk_list)
net/sctp/socket.c
5259
list_for_each(pos, &asoc->outqueue.out_chunk_list)
net/sctp/socket.c
5261
info->sctpi_overall_error = asoc->overall_error_count;
net/sctp/socket.c
5262
info->sctpi_max_burst = asoc->max_burst;
net/sctp/socket.c
5263
info->sctpi_maxseg = asoc->frag_point;
net/sctp/socket.c
5264
info->sctpi_peer_rwnd = asoc->peer.rwnd;
net/sctp/socket.c
5265
info->sctpi_peer_tag = asoc->c.peer_vtag;
net/sctp/socket.c
5267
mask = asoc->peer.intl_capable << 1;
net/sctp/socket.c
5268
mask = (mask | asoc->peer.ecn_capable) << 1;
net/sctp/socket.c
5269
mask = (mask | asoc->peer.ipv4_address) << 1;
net/sctp/socket.c
5270
mask = (mask | asoc->peer.ipv6_address) << 1;
net/sctp/socket.c
5271
mask = (mask | asoc->peer.reconf_capable) << 1;
net/sctp/socket.c
5272
mask = (mask | asoc->peer.asconf_capable) << 1;
net/sctp/socket.c
5273
mask = (mask | asoc->peer.prsctp_capable) << 1;
net/sctp/socket.c
5274
mask = (mask | asoc->peer.auth_capable);
net/sctp/socket.c
5276
mask = asoc->peer.sack_needed << 1;
net/sctp/socket.c
5277
mask = (mask | asoc->peer.sack_generation) << 1;
net/sctp/socket.c
5278
mask = (mask | asoc->peer.zero_window_announced);
net/sctp/socket.c
5281
info->sctpi_isacks = asoc->stats.isacks;
net/sctp/socket.c
5282
info->sctpi_osacks = asoc->stats.osacks;
net/sctp/socket.c
5283
info->sctpi_opackets = asoc->stats.opackets;
net/sctp/socket.c
5284
info->sctpi_ipackets = asoc->stats.ipackets;
net/sctp/socket.c
5285
info->sctpi_rtxchunks = asoc->stats.rtxchunks;
net/sctp/socket.c
5286
info->sctpi_outofseqtsns = asoc->stats.outofseqtsns;
net/sctp/socket.c
5287
info->sctpi_idupchunks = asoc->stats.idupchunks;
net/sctp/socket.c
5288
info->sctpi_gapcnt = asoc->stats.gapcnt;
net/sctp/socket.c
5289
info->sctpi_ouodchunks = asoc->stats.ouodchunks;
net/sctp/socket.c
5290
info->sctpi_iuodchunks = asoc->stats.iuodchunks;
net/sctp/socket.c
5291
info->sctpi_oodchunks = asoc->stats.oodchunks;
net/sctp/socket.c
5292
info->sctpi_iodchunks = asoc->stats.iodchunks;
net/sctp/socket.c
5293
info->sctpi_octrlchunks = asoc->stats.octrlchunks;
net/sctp/socket.c
5294
info->sctpi_ictrlchunks = asoc->stats.ictrlchunks;
net/sctp/socket.c
5296
prim = asoc->peer.primary_path;
net/sctp/socket.c
5344
if (net_eq(t->asoc->base.net, net) &&
net/sctp/socket.c
5345
t->asoc->peer.primary_path == t)
net/sctp/socket.c
5423
ep = transport->asoc->ep;
net/sctp/socket.c
5452
ep = tsp->asoc->ep;
net/sctp/socket.c
5491
struct sctp_association *asoc = NULL;
net/sctp/socket.c
5508
asoc = sctp_id2assoc(sk, associd);
net/sctp/socket.c
5509
if (!asoc) {
net/sctp/socket.c
5514
transport = asoc->peer.primary_path;
net/sctp/socket.c
5516
status.sstat_assoc_id = sctp_assoc2id(asoc);
net/sctp/socket.c
5517
status.sstat_state = sctp_assoc_to_state(asoc);
net/sctp/socket.c
5518
status.sstat_rwnd = asoc->peer.rwnd;
net/sctp/socket.c
5519
status.sstat_unackdata = asoc->unack_data;
net/sctp/socket.c
5521
status.sstat_penddata = sctp_tsnmap_pending(&asoc->peer.tsn_map);
net/sctp/socket.c
5522
status.sstat_instrms = asoc->stream.incnt;
net/sctp/socket.c
5523
status.sstat_outstrms = asoc->stream.outcnt;
net/sctp/socket.c
5524
status.sstat_fragmentation_point = asoc->frag_point;
net/sctp/socket.c
5525
status.sstat_primary.spinfo_assoc_id = sctp_assoc2id(transport->asoc);
net/sctp/socket.c
5593
transport->asoc->pf_expose == SCTP_PF_EXPOSE_DISABLE) {
net/sctp/socket.c
5598
pinfo.spinfo_assoc_id = sctp_assoc2id(transport->asoc);
net/sctp/socket.c
562
struct sctp_association *asoc;
net/sctp/socket.c
5705
struct sctp_association *asoc = sctp_id2assoc(sk, id);
net/sctp/socket.c
5714
if (!asoc)
net/sctp/socket.c
5727
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
5987
struct sctp_association *asoc = NULL;
net/sctp/socket.c
6018
asoc = sctp_id2assoc(sk, params.spp_assoc_id);
net/sctp/socket.c
6019
if (!asoc && params.spp_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6043
} else if (asoc) {
net/sctp/socket.c
6045
params.spp_hbinterval = jiffies_to_msecs(asoc->hbinterval);
net/sctp/socket.c
6046
params.spp_pathmtu = asoc->pathmtu;
net/sctp/socket.c
6047
params.spp_pathmaxrxt = asoc->pathmaxrxt;
net/sctp/socket.c
6048
params.spp_sackdelay = jiffies_to_msecs(asoc->sackdelay);
net/sctp/socket.c
6051
params.spp_flags = asoc->param_flags;
net/sctp/socket.c
6052
if (asoc->flowlabel & SCTP_FLOWLABEL_SET_MASK) {
net/sctp/socket.c
6053
params.spp_ipv6_flowlabel = asoc->flowlabel &
net/sctp/socket.c
6057
if (asoc->dscp & SCTP_DSCP_SET_MASK) {
net/sctp/socket.c
6058
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
6130
struct sctp_association *asoc = NULL;
net/sctp/socket.c
6153
asoc = sctp_id2assoc(sk, params.sack_assoc_id);
net/sctp/socket.c
6154
if (!asoc && params.sack_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6158
if (asoc) {
net/sctp/socket.c
6160
if (asoc->param_flags & SPP_SACKDELAY_ENABLE) {
net/sctp/socket.c
6161
params.sack_delay = jiffies_to_msecs(asoc->sackdelay);
net/sctp/socket.c
6162
params.sack_freq = asoc->sackfreq;
net/sctp/socket.c
618
bp = &asoc->base.bind_addr;
net/sctp/socket.c
621
chunk = sctp_make_asconf_update_ip(asoc, &laddr->a, addrs,
net/sctp/socket.c
6215
struct sctp_association *asoc;
net/sctp/socket.c
6233
asoc = sctp_id2assoc(sk, getaddrs.assoc_id);
net/sctp/socket.c
6234
if (!asoc)
net/sctp/socket.c
6240
list_for_each_entry(from, &asoc->peer.transport_addr_list,
net/sctp/socket.c
6312
struct sctp_association *asoc;
net/sctp/socket.c
6341
asoc = sctp_id2assoc(sk, getaddrs.assoc_id);
net/sctp/socket.c
6342
if (!asoc)
net/sctp/socket.c
6344
bp = &asoc->base.bind_addr;
net/sctp/socket.c
641
if (asoc->src_out_of_asoc_ok) {
net/sctp/socket.c
6420
struct sctp_association *asoc;
net/sctp/socket.c
6431
asoc = sctp_id2assoc(sk, prim.ssp_assoc_id);
net/sctp/socket.c
6432
if (!asoc)
net/sctp/socket.c
6435
if (!asoc->peer.primary_path)
net/sctp/socket.c
6438
memcpy(&prim.ssp_addr, &asoc->peer.primary_path->ipaddr,
net/sctp/socket.c
6439
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
648
trans->ssthresh = asoc->peer.i.a_rwnd;
net/sctp/socket.c
649
trans->rto = asoc->rto_initial;
net/sctp/socket.c
650
sctp_max_rto(asoc, trans);
net/sctp/socket.c
6502
struct sctp_association *asoc;
net/sctp/socket.c
6513
asoc = sctp_id2assoc(sk, info.sinfo_assoc_id);
net/sctp/socket.c
6514
if (!asoc && info.sinfo_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6518
if (asoc) {
net/sctp/socket.c
6519
info.sinfo_stream = asoc->default_stream;
net/sctp/socket.c
6520
info.sinfo_flags = asoc->default_flags;
net/sctp/socket.c
6521
info.sinfo_ppid = asoc->default_ppid;
net/sctp/socket.c
6522
info.sinfo_context = asoc->default_context;
net/sctp/socket.c
6523
info.sinfo_timetolive = asoc->default_timetolive;
net/sctp/socket.c
654
sctp_sk(asoc->base.sk));
net/sctp/socket.c
6548
struct sctp_association *asoc;
net/sctp/socket.c
6559
asoc = sctp_id2assoc(sk, info.snd_assoc_id);
net/sctp/socket.c
6560
if (!asoc && info.snd_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6564
if (asoc) {
net/sctp/socket.c
6565
info.snd_sid = asoc->default_stream;
net/sctp/socket.c
6566
info.snd_flags = asoc->default_flags;
net/sctp/socket.c
6567
info.snd_ppid = asoc->default_ppid;
net/sctp/socket.c
6568
info.snd_context = asoc->default_context;
net/sctp/socket.c
657
retval = sctp_send_asconf(asoc, chunk);
net/sctp/socket.c
6627
struct sctp_association *asoc;
net/sctp/socket.c
6637
asoc = sctp_id2assoc(sk, rtoinfo.srto_assoc_id);
net/sctp/socket.c
6639
if (!asoc && rtoinfo.srto_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6644
if (asoc) {
net/sctp/socket.c
6645
rtoinfo.srto_initial = jiffies_to_msecs(asoc->rto_initial);
net/sctp/socket.c
6646
rtoinfo.srto_max = jiffies_to_msecs(asoc->rto_max);
net/sctp/socket.c
6647
rtoinfo.srto_min = jiffies_to_msecs(asoc->rto_min);
net/sctp/socket.c
6683
struct sctp_association *asoc;
net/sctp/socket.c
6695
asoc = sctp_id2assoc(sk, assocparams.sasoc_assoc_id);
net/sctp/socket.c
6697
if (!asoc && assocparams.sasoc_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6702
if (asoc) {
net/sctp/socket.c
6703
assocparams.sasoc_asocmaxrxt = asoc->max_retrans;
net/sctp/socket.c
6704
assocparams.sasoc_peer_rwnd = asoc->peer.rwnd;
net/sctp/socket.c
6705
assocparams.sasoc_local_rwnd = asoc->a_rwnd;
net/sctp/socket.c
6706
assocparams.sasoc_cookie_life = ktime_to_ms(asoc->cookie_life);
net/sctp/socket.c
6708
list_for_each(pos, &asoc->peer.transport_addr_list) {
net/sctp/socket.c
6773
struct sctp_association *asoc;
net/sctp/socket.c
6783
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
6784
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6788
params.assoc_value = asoc ? asoc->default_rcv_context
net/sctp/socket.c
6830
struct sctp_association *asoc;
net/sctp/socket.c
6846
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
6847
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6851
if (asoc)
net/sctp/socket.c
6852
params.assoc_value = asoc->frag_point;
net/sctp/socket.c
6925
struct sctp_association *asoc;
net/sctp/socket.c
6941
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
6942
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
6946
params.assoc_value = asoc ? asoc->max_burst : sctp_sk(sk)->max_burst;
net/sctp/socket.c
7001
struct sctp_association *asoc;
net/sctp/socket.c
7010
asoc = sctp_id2assoc(sk, val.scact_assoc_id);
net/sctp/socket.c
7011
if (!asoc && val.scact_assoc_id && sctp_style(sk, UDP))
net/sctp/socket.c
7014
if (asoc) {
net/sctp/socket.c
7015
if (!asoc->peer.auth_capable)
net/sctp/socket.c
7017
val.scact_keynumber = asoc->active_key_id;
net/sctp/socket.c
7037
struct sctp_association *asoc;
net/sctp/socket.c
7049
asoc = sctp_id2assoc(sk, val.gauth_assoc_id);
net/sctp/socket.c
7050
if (!asoc)
net/sctp/socket.c
7053
if (!asoc->peer.auth_capable)
net/sctp/socket.c
7056
ch = asoc->peer.peer_chunks;
net/sctp/socket.c
7082
struct sctp_association *asoc;
net/sctp/socket.c
7094
asoc = sctp_id2assoc(sk, val.gauth_assoc_id);
net/sctp/socket.c
7095
if (!asoc && val.gauth_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7099
if (asoc) {
net/sctp/socket.c
7100
if (!asoc->peer.auth_capable)
net/sctp/socket.c
7102
ch = (struct sctp_chunks_param *)asoc->c.auth_chunks;
net/sctp/socket.c
7136
struct sctp_association *asoc;
net/sctp/socket.c
7147
list_for_each_entry(asoc, &(sp->ep->asocs), asocs) {
net/sctp/socket.c
7192
struct sctp_association *asoc;
net/sctp/socket.c
7203
list_for_each_entry(asoc, &(sp->ep->asocs), asocs) {
net/sctp/socket.c
7218
list_for_each_entry(asoc, &(sp->ep->asocs), asocs) {
net/sctp/socket.c
7219
ids->gaids_assoc_id[num++] = asoc->assoc_id;
net/sctp/socket.c
7244
struct sctp_association *asoc;
net/sctp/socket.c
7267
asoc = sctp_id2assoc(sk, val.spt_assoc_id);
net/sctp/socket.c
7268
if (!asoc && val.spt_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7272
if (asoc) {
net/sctp/socket.c
7273
val.spt_pathpfthld = asoc->pf_retrans;
net/sctp/socket.c
7274
val.spt_pathmaxrxt = asoc->pathmaxrxt;
net/sctp/socket.c
7275
val.spt_pathcpthld = asoc->ps_retrans;
net/sctp/socket.c
7302
struct sctp_association *asoc = NULL;
net/sctp/socket.c
7314
asoc = sctp_id2assoc(sk, sas.sas_assoc_id);
net/sctp/socket.c
7315
if (!asoc)
net/sctp/socket.c
7318
sas.sas_rtxchunks = asoc->stats.rtxchunks;
net/sctp/socket.c
7319
sas.sas_gapcnt = asoc->stats.gapcnt;
net/sctp/socket.c
7320
sas.sas_outofseqtsns = asoc->stats.outofseqtsns;
net/sctp/socket.c
7321
sas.sas_osacks = asoc->stats.osacks;
net/sctp/socket.c
7322
sas.sas_isacks = asoc->stats.isacks;
net/sctp/socket.c
7323
sas.sas_octrlchunks = asoc->stats.octrlchunks;
net/sctp/socket.c
7324
sas.sas_ictrlchunks = asoc->stats.ictrlchunks;
net/sctp/socket.c
7325
sas.sas_oodchunks = asoc->stats.oodchunks;
net/sctp/socket.c
7326
sas.sas_iodchunks = asoc->stats.iodchunks;
net/sctp/socket.c
7327
sas.sas_ouodchunks = asoc->stats.ouodchunks;
net/sctp/socket.c
7328
sas.sas_iuodchunks = asoc->stats.iuodchunks;
net/sctp/socket.c
7329
sas.sas_idupchunks = asoc->stats.idupchunks;
net/sctp/socket.c
7330
sas.sas_opackets = asoc->stats.opackets;
net/sctp/socket.c
7331
sas.sas_ipackets = asoc->stats.ipackets;
net/sctp/socket.c
7337
sas.sas_maxrto = asoc->stats.max_obs_rto;
net/sctp/socket.c
7338
memcpy(&sas.sas_obs_rto_ipaddr, &asoc->stats.obs_rto_ipaddr,
net/sctp/socket.c
7342
asoc->stats.max_obs_rto = asoc->rto_min;
net/sctp/socket.c
74
static int sctp_wait_for_sndbuf(struct sctp_association *asoc,
net/sctp/socket.c
7400
struct sctp_association *asoc;
net/sctp/socket.c
7412
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7413
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7419
params.assoc_value = asoc ? asoc->peer.prsctp_capable
net/sctp/socket.c
7439
struct sctp_association *asoc;
net/sctp/socket.c
7451
asoc = sctp_id2assoc(sk, info.pr_assoc_id);
net/sctp/socket.c
7452
if (!asoc && info.pr_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7458
if (asoc) {
net/sctp/socket.c
7459
info.pr_policy = SCTP_PR_POLICY(asoc->default_flags);
net/sctp/socket.c
7460
info.pr_value = asoc->default_timetolive;
net/sctp/socket.c
7485
struct sctp_association *asoc;
net/sctp/socket.c
7503
asoc = sctp_id2assoc(sk, params.sprstat_assoc_id);
net/sctp/socket.c
7504
if (!asoc)
net/sctp/socket.c
7512
asoc->abandoned_unsent[policy];
net/sctp/socket.c
7514
asoc->abandoned_sent[policy];
net/sctp/socket.c
7518
asoc->abandoned_unsent[__SCTP_PR_INDEX(policy)];
net/sctp/socket.c
7520
asoc->abandoned_sent[__SCTP_PR_INDEX(policy)];
net/sctp/socket.c
7544
struct sctp_association *asoc;
net/sctp/socket.c
7563
asoc = sctp_id2assoc(sk, params.sprstat_assoc_id);
net/sctp/socket.c
7564
if (!asoc || params.sprstat_sid >= asoc->stream.outcnt)
net/sctp/socket.c
7567
streamoute = SCTP_SO(&asoc->stream, params.sprstat_sid)->ext;
net/sctp/socket.c
7608
struct sctp_association *asoc;
net/sctp/socket.c
7620
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7621
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7627
params.assoc_value = asoc ? asoc->peer.reconf_capable
net/sctp/socket.c
764
struct sctp_association *asoc;
net/sctp/socket.c
7647
struct sctp_association *asoc;
net/sctp/socket.c
7659
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7660
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7666
params.assoc_value = asoc ? asoc->strreset_enable
net/sctp/socket.c
7686
struct sctp_association *asoc;
net/sctp/socket.c
7698
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7699
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7705
params.assoc_value = asoc ? sctp_sched_get_sched(asoc)
net/sctp/socket.c
7725
struct sctp_association *asoc;
net/sctp/socket.c
7737
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7738
if (!asoc) {
net/sctp/socket.c
7743
retval = sctp_sched_get_value(asoc, params.stream_id,
net/sctp/socket.c
7767
struct sctp_association *asoc;
net/sctp/socket.c
7779
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7780
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7786
params.assoc_value = asoc ? asoc->peer.intl_capable
net/sctp/socket.c
7824
struct sctp_association *asoc;
net/sctp/socket.c
7839
asoc = sctp_id2assoc(sk, param.se_assoc_id);
net/sctp/socket.c
7840
if (!asoc && param.se_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7844
subscribe = asoc ? asoc->subscribe : sctp_sk(sk)->subscribe;
net/sctp/socket.c
786
list_for_each_entry(asoc, &ep->asocs, asocs) {
net/sctp/socket.c
7861
struct sctp_association *asoc;
net/sctp/socket.c
7873
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7874
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
788
if (!asoc->peer.asconf_capable)
net/sctp/socket.c
7880
params.assoc_value = asoc ? asoc->peer.asconf_capable
net/sctp/socket.c
7900
struct sctp_association *asoc;
net/sctp/socket.c
791
if (asoc->peer.addip_disabled_mask & SCTP_PARAM_DEL_IP)
net/sctp/socket.c
7912
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7913
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7919
params.assoc_value = asoc ? asoc->peer.auth_capable
net/sctp/socket.c
7939
struct sctp_association *asoc;
net/sctp/socket.c
794
if (!sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
7951
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7952
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7958
params.assoc_value = asoc ? asoc->peer.ecn_capable
net/sctp/socket.c
7978
struct sctp_association *asoc;
net/sctp/socket.c
7990
asoc = sctp_id2assoc(sk, params.assoc_id);
net/sctp/socket.c
7991
if (!asoc && params.assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
7997
params.assoc_value = asoc ? asoc->pf_expose
net/sctp/socket.c
8015
struct sctp_association *asoc;
net/sctp/socket.c
8046
asoc = sctp_id2assoc(sk, encap.sue_assoc_id);
net/sctp/socket.c
8047
if (!asoc && encap.sue_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
8053
if (asoc) {
net/sctp/socket.c
8054
encap_port = asoc->encap_port;
net/sctp/socket.c
8076
struct sctp_association *asoc;
net/sctp/socket.c
8106
asoc = sctp_id2assoc(sk, params.spi_assoc_id);
net/sctp/socket.c
8107
if (!asoc && params.spi_assoc_id != SCTP_FUTURE_ASSOC &&
net/sctp/socket.c
811
if (!sctp_assoc_lookup_laddr(asoc, laddr))
net/sctp/socket.c
8113
if (asoc) {
net/sctp/socket.c
8114
probe_interval = jiffies_to_msecs(asoc->probe_interval);
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
9138
static void __sctp_write_space(struct sctp_association *asoc)
net/sctp/socket.c
9140
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9142
if (sctp_wspace(asoc) <= 0)
net/sctp/socket.c
9145
if (waitqueue_active(&asoc->wait))
net/sctp/socket.c
9146
wake_up_interruptible(&asoc->wait);
net/sctp/socket.c
9170
struct sctp_association *asoc)
net/sctp/socket.c
9172
struct sctp_association *tmp = asoc;
net/sctp/socket.c
9177
if (asoc->ep->sndbuf_policy)
net/sctp/socket.c
9178
return __sctp_write_space(asoc);
net/sctp/socket.c
9183
if (asoc->base.dead)
net/sctp/socket.c
9204
if (tmp == asoc)
net/sctp/socket.c
9216
struct sctp_association *asoc = chunk->asoc;
net/sctp/socket.c
9217
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9221
asoc->sndbuf_used -= skb->truesize + sizeof(struct sctp_chunk);
net/sctp/socket.c
9236
ev = sctp_ulpevent_make_authkey(asoc, shkey->key_id,
net/sctp/socket.c
9240
asoc->stream.si->enqueue_event(&asoc->ulpq, ev);
net/sctp/socket.c
9246
sctp_wake_up_waiters(sk, asoc);
net/sctp/socket.c
9248
sctp_association_put(asoc);
net/sctp/socket.c
9271
static int sctp_wait_for_sndbuf(struct sctp_association *asoc,
net/sctp/socket.c
9275
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9280
pr_debug("%s: asoc:%p, timeo:%ld, msg_len:%zu\n", __func__, asoc,
net/sctp/socket.c
9286
sctp_association_hold(asoc);
net/sctp/socket.c
9290
prepare_to_wait_exclusive(&asoc->wait, &wait,
net/sctp/socket.c
9292
if (asoc->base.dead)
net/sctp/socket.c
9296
if (sk->sk_err || asoc->state >= SCTP_STATE_SHUTDOWN_PENDING)
net/sctp/socket.c
9300
if ((int)msg_len <= sctp_wspace(asoc) &&
net/sctp/socket.c
9310
if (sk != asoc->base.sk)
net/sctp/socket.c
9317
finish_wait(&asoc->wait, &wait);
net/sctp/socket.c
9322
sctp_association_put(asoc);
net/sctp/socket.c
9361
struct sctp_association *asoc;
net/sctp/socket.c
9364
list_for_each_entry(asoc, &((sctp_sk(sk))->ep->asocs), asocs) {
net/sctp/socket.c
9365
__sctp_write_space(asoc);
net/sctp/socket.c
9388
static int sctp_wait_for_connect(struct sctp_association *asoc, long *timeo_p)
net/sctp/socket.c
9390
struct sock *sk = asoc->base.sk;
net/sctp/socket.c
9395
pr_debug("%s: asoc:%p, timeo:%ld\n", __func__, asoc, *timeo_p);
net/sctp/socket.c
9398
sctp_association_hold(asoc);
net/sctp/socket.c
9401
prepare_to_wait_exclusive(&asoc->wait, &wait,
net/sctp/socket.c
9407
if (sk->sk_err || asoc->state >= SCTP_STATE_SHUTDOWN_PENDING ||
net/sctp/socket.c
9408
asoc->base.dead)
net/sctp/socket.c
9413
if (sctp_state(asoc, ESTABLISHED))
net/sctp/socket.c
9422
if (sk != asoc->base.sk)
net/sctp/socket.c
9429
finish_wait(&asoc->wait, &wait);
net/sctp/socket.c
9432
sctp_association_put(asoc);
net/sctp/socket.c
9437
if (asoc->init_err_counter + 1 > asoc->max_init_attempts)
net/sctp/socket.c
9571
if (event->asoc == assoc) {
net/sctp/socket.c
9600
if (event->asoc == assoc) {
net/sctp/stream.c
1009
&asoc->peer.tsn_map);
net/sctp/stream.c
1012
asoc->stream.si->report_ftsn(&asoc->ulpq, mtsn);
net/sctp/stream.c
1014
sctp_tsnmap_init(&asoc->peer.tsn_map,
net/sctp/stream.c
1022
list_splice_init(&asoc->outqueue.out_chunk_list, &temp);
net/sctp/stream.c
1023
sctp_outq_free(&asoc->outqueue);
net/sctp/stream.c
1024
list_splice_init(&temp, &asoc->outqueue.out_chunk_list);
net/sctp/stream.c
1026
asoc->next_tsn = rtsn;
net/sctp/stream.c
1027
asoc->ctsn_ack_point = asoc->next_tsn - 1;
net/sctp/stream.c
1028
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/stream.c
1041
*evp = sctp_ulpevent_make_assoc_reset_event(asoc, flags,
net/sctp/stream.c
1063
*evp = sctp_ulpevent_make_stream_change_event(asoc, flags,
net/sctp/stream.c
1077
*evp = sctp_ulpevent_make_stream_change_event(asoc, flags,
net/sctp/stream.c
1081
asoc->strreset_outstanding--;
net/sctp/stream.c
1082
asoc->strreset_outseq++;
net/sctp/stream.c
1085
if (!asoc->strreset_outstanding) {
net/sctp/stream.c
1086
t = asoc->strreset_chunk->transport;
net/sctp/stream.c
1090
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
1091
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
335
chunk = sctp_make_strreset_req(asoc, str_nums, nstr_list, out, in);
net/sctp/stream.c
354
asoc->strreset_chunk = chunk;
net/sctp/stream.c
355
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
357
retval = sctp_send_reconf(asoc, chunk);
net/sctp/stream.c
359
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
360
asoc->strreset_chunk = NULL;
net/sctp/stream.c
375
asoc->strreset_outstanding = out + in;
net/sctp/stream.c
381
int sctp_send_reset_assoc(struct sctp_association *asoc)
net/sctp/stream.c
383
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
388
if (!asoc->peer.reconf_capable ||
net/sctp/stream.c
389
!(asoc->strreset_enable & SCTP_ENABLE_RESET_ASSOC_REQ))
net/sctp/stream.c
392
if (asoc->strreset_outstanding)
net/sctp/stream.c
395
if (!sctp_outq_is_empty(&asoc->outqueue))
net/sctp/stream.c
398
chunk = sctp_make_strreset_tsnreq(asoc);
net/sctp/stream.c
406
asoc->strreset_chunk = chunk;
net/sctp/stream.c
407
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
409
retval = sctp_send_reconf(asoc, chunk);
net/sctp/stream.c
411
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
412
asoc->strreset_chunk = NULL;
net/sctp/stream.c
420
asoc->strreset_outstanding = 1;
net/sctp/stream.c
425
int sctp_send_add_streams(struct sctp_association *asoc,
net/sctp/stream.c
428
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
434
if (!asoc->peer.reconf_capable ||
net/sctp/stream.c
435
!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ)) {
net/sctp/stream.c
440
if (asoc->strreset_outstanding) {
net/sctp/stream.c
461
chunk = sctp_make_strreset_addstrm(asoc, out, in);
net/sctp/stream.c
467
asoc->strreset_chunk = chunk;
net/sctp/stream.c
468
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
47
if (asoc->peer.prsctp_capable &&
net/sctp/stream.c
470
retval = sctp_send_reconf(asoc, chunk);
net/sctp/stream.c
472
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
473
asoc->strreset_chunk = NULL;
net/sctp/stream.c
477
asoc->strreset_outstanding = !!out + !!in;
net/sctp/stream.c
484
struct sctp_association *asoc, __be32 resp_seq,
net/sctp/stream.c
487
struct sctp_chunk *chunk = asoc->strreset_chunk;
net/sctp/stream.c
49
asoc->sent_cnt_removable--;
net/sctp/stream.c
510
static void sctp_update_strreset_result(struct sctp_association *asoc,
net/sctp/stream.c
513
asoc->strreset_result[1] = asoc->strreset_result[0];
net/sctp/stream.c
514
asoc->strreset_result[0] = result;
net/sctp/stream.c
518
struct sctp_association *asoc,
net/sctp/stream.c
523
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
532
sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map)) {
net/sctp/stream.c
537
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
538
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
541
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
542
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
543
result = asoc->strreset_result[i];
net/sctp/stream.c
546
asoc->strreset_inseq++;
net/sctp/stream.c
552
if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ))
net/sctp/stream.c
564
if (asoc->strreset_chunk) {
net/sctp/stream.c
566
asoc, outreq->response_seq,
net/sctp/stream.c
573
asoc->strreset_outstanding--;
net/sctp/stream.c
574
asoc->strreset_outseq++;
net/sctp/stream.c
576
if (!asoc->strreset_outstanding) {
net/sctp/stream.c
579
t = asoc->strreset_chunk->transport;
net/sctp/stream.c
583
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
584
asoc->strreset_chunk = NULL;
net/sctp/stream.c
597
*evp = sctp_ulpevent_make_stream_reset_event(asoc,
net/sctp/stream.c
601
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
603
return sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
607
struct sctp_association *asoc,
net/sctp/stream.c
612
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
620
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
621
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
624
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
625
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
626
result = asoc->strreset_result[i];
net/sctp/stream.c
631
asoc->strreset_inseq++;
net/sctp/stream.c
633
if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_STREAM_REQ))
net/sctp/stream.c
636
if (asoc->strreset_outstanding) {
net/sctp/stream.c
655
asoc->strreset_inseq--;
net/sctp/stream.c
659
chunk = sctp_make_strreset_req(asoc, nums, str_p, 1, 0);
net/sctp/stream.c
671
asoc->strreset_chunk = chunk;
net/sctp/stream.c
672
asoc->strreset_outstanding = 1;
net/sctp/stream.c
673
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
678
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
681
chunk = sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
687
struct sctp_association *asoc,
net/sctp/stream.c
693
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
699
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
700
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
703
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
704
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
705
result = asoc->strreset_result[i];
net/sctp/stream.c
707
next_tsn = asoc->ctsn_ack_point + 1;
net/sctp/stream.c
709
sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + 1;
net/sctp/stream.c
714
if (!sctp_outq_is_empty(&asoc->outqueue)) {
net/sctp/stream.c
719
asoc->strreset_inseq++;
net/sctp/stream.c
721
if (!(asoc->strreset_enable & SCTP_ENABLE_RESET_ASSOC_REQ))
net/sctp/stream.c
724
if (asoc->strreset_outstanding) {
net/sctp/stream.c
734
max_tsn_seen = sctp_tsnmap_get_max_tsn_seen(&asoc->peer.tsn_map);
net/sctp/stream.c
735
asoc->stream.si->report_ftsn(&asoc->ulpq, max_tsn_seen);
net/sctp/stream.c
742
init_tsn = sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + (1U << 31);
net/sctp/stream.c
743
sctp_tsnmap_init(&asoc->peer.tsn_map, SCTP_TSN_MAP_INITIAL,
net/sctp/stream.c
750
sctp_outq_free(&asoc->outqueue);
net/sctp/stream.c
757
next_tsn = asoc->next_tsn;
net/sctp/stream.c
758
asoc->ctsn_ack_point = next_tsn - 1;
net/sctp/stream.c
759
asoc->adv_peer_ack_point = asoc->ctsn_ack_point;
net/sctp/stream.c
773
*evp = sctp_ulpevent_make_assoc_reset_event(asoc, 0, init_tsn,
net/sctp/stream.c
777
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
779
return sctp_make_strreset_tsnresp(asoc, result, request_seq,
net/sctp/stream.c
784
struct sctp_association *asoc,
net/sctp/stream.c
789
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
795
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
796
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
799
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
800
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
801
result = asoc->strreset_result[i];
net/sctp/stream.c
804
asoc->strreset_inseq++;
net/sctp/stream.c
806
if (!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ))
net/sctp/stream.c
817
if (asoc->strreset_chunk) {
net/sctp/stream.c
819
asoc, 0, SCTP_PARAM_RESET_ADD_IN_STREAMS)) {
net/sctp/stream.c
825
asoc->strreset_outstanding--;
net/sctp/stream.c
826
asoc->strreset_outseq++;
net/sctp/stream.c
828
if (!asoc->strreset_outstanding) {
net/sctp/stream.c
831
t = asoc->strreset_chunk->transport;
net/sctp/stream.c
835
sctp_chunk_put(asoc->strreset_chunk);
net/sctp/stream.c
836
asoc->strreset_chunk = NULL;
net/sctp/stream.c
844
*evp = sctp_ulpevent_make_stream_change_event(asoc,
net/sctp/stream.c
848
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
850
return sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
854
struct sctp_association *asoc,
net/sctp/stream.c
859
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
867
if (TSN_lt(asoc->strreset_inseq, request_seq) ||
net/sctp/stream.c
868
TSN_lt(request_seq, asoc->strreset_inseq - 2)) {
net/sctp/stream.c
871
} else if (TSN_lt(request_seq, asoc->strreset_inseq)) {
net/sctp/stream.c
872
i = asoc->strreset_inseq - request_seq - 1;
net/sctp/stream.c
873
result = asoc->strreset_result[i];
net/sctp/stream.c
878
asoc->strreset_inseq++;
net/sctp/stream.c
880
if (!(asoc->strreset_enable & SCTP_ENABLE_CHANGE_ASSOC_REQ))
net/sctp/stream.c
883
if (asoc->strreset_outstanding) {
net/sctp/stream.c
897
chunk = sctp_make_strreset_addstrm(asoc, out, 0);
net/sctp/stream.c
901
asoc->strreset_chunk = chunk;
net/sctp/stream.c
902
asoc->strreset_outstanding = 1;
net/sctp/stream.c
903
sctp_chunk_hold(asoc->strreset_chunk);
net/sctp/stream.c
910
sctp_update_strreset_result(asoc, result);
net/sctp/stream.c
913
chunk = sctp_make_strreset_resp(asoc, result, request_seq);
net/sctp/stream.c
919
struct sctp_association *asoc,
net/sctp/stream.c
923
struct sctp_stream *stream = &asoc->stream;
net/sctp/stream.c
930
req = sctp_chunk_lookup_strreset_param(asoc, resp->response_seq, 0);
net/sctp/stream.c
976
*evp = sctp_ulpevent_make_stream_reset_event(asoc, flags,
net/sctp/stream.c
993
*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
4756
int security_sctp_assoc_request(struct sctp_association *asoc,
security/security.c
4759
return call_int_hook(sctp_assoc_request, asoc, skb);
security/security.c
4794
void security_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk,
security/security.c
4797
call_void_hook(sctp_sk_clone, asoc, sk, newsk);
security/security.c
4811
int security_sctp_assoc_established(struct sctp_association *asoc,
security/security.c
4814
return call_int_hook(sctp_assoc_established, asoc, skb);
security/selinux/hooks.c
5618
static int selinux_sctp_process_new_assoc(struct sctp_association *asoc,
security/selinux/hooks.c
5621
struct sock *sk = asoc->base.sk;
security/selinux/hooks.c
5633
asoc->peer_secid = SECSID_NULL;
security/selinux/hooks.c
5638
err = selinux_skb_peerlbl_sid(skb, family, &asoc->peer_secid);
security/selinux/hooks.c
5642
if (asoc->peer_secid == SECSID_NULL)
security/selinux/hooks.c
5643
asoc->peer_secid = SECINITSID_UNLABELED;
security/selinux/hooks.c
5645
asoc->peer_secid = SECINITSID_UNLABELED;
security/selinux/hooks.c
5656
sksec->peer_sid = asoc->peer_secid;
security/selinux/hooks.c
5657
} else if (sksec->peer_sid != asoc->peer_secid) {
security/selinux/hooks.c
5661
ad_net_init_from_sk(&ad, &net, asoc->base.sk);
security/selinux/hooks.c
5662
err = avc_has_perm(sksec->peer_sid, asoc->peer_secid,
security/selinux/hooks.c
5675
static int selinux_sctp_assoc_request(struct sctp_association *asoc,
security/selinux/hooks.c
5678
struct sk_security_struct *sksec = selinux_sock(asoc->base.sk);
security/selinux/hooks.c
5685
err = selinux_sctp_process_new_assoc(asoc, skb);
security/selinux/hooks.c
5695
err = selinux_conn_sid(sksec->sid, asoc->peer_secid, &conn_sid);
security/selinux/hooks.c
5699
asoc->secid = conn_sid;
security/selinux/hooks.c
5702
return selinux_netlbl_sctp_assoc_request(asoc, skb);
security/selinux/hooks.c
5708
static int selinux_sctp_assoc_established(struct sctp_association *asoc,
security/selinux/hooks.c
5711
struct sk_security_struct *sksec = selinux_sock(asoc->base.sk);
security/selinux/hooks.c
5720
asoc->secid = sksec->sid;
security/selinux/hooks.c
5722
return selinux_sctp_process_new_assoc(asoc, skb);
security/selinux/hooks.c
5805
static void selinux_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk,
security/selinux/hooks.c
5817
newsksec->sid = asoc->secid;
security/selinux/hooks.c
5818
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
317
unsigned int mclk = machine->asoc->mclk_rate(srate);
sound/soc/tegra/tegra_asoc_machine.c
318
unsigned int clk_id = machine->asoc->mclk_id;
sound/soc/tegra/tegra_asoc_machine.c
449
const struct tegra_asoc_data *asoc;
sound/soc/tegra/tegra_asoc_machine.c
460
asoc = of_device_get_match_data(dev);
sound/soc/tegra/tegra_asoc_machine.c
461
card = asoc->card;
sound/soc/tegra/tegra_asoc_machine.c
464
machine->asoc = asoc;
sound/soc/tegra/tegra_asoc_machine.c
515
if (asoc->set_ac97) {
sound/soc/tegra/tegra_asoc_machine.c
516
err = tegra_machine_register_codec(dev, asoc->codec_dev_name);
sound/soc/tegra/tegra_asoc_machine.c
540
if (asoc->add_common_controls) {
sound/soc/tegra/tegra_asoc_machine.c
545
if (asoc->add_common_dapm_widgets) {
sound/soc/tegra/tegra_asoc_machine.c
550
if (asoc->add_common_snd_ops)
sound/soc/tegra/tegra_asoc_machine.c
607
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) {
sound/soc/tegra/tegra_wm8962.c
78
if (!machine->gpiod_mic_det && machine->asoc->add_mic_jack) {