• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/net/sctp/

Lines Matching refs:asoc

69 				  const struct sctp_association *asoc,
73 static int sctp_eat_data(const struct sctp_association *asoc,
76 static struct sctp_packet *sctp_ootb_pkt_new(const struct sctp_association *asoc,
79 const struct sctp_association *asoc,
84 const struct sctp_association *asoc,
89 const struct sctp_association *asoc,
97 const struct sctp_association *asoc,
102 const struct sctp_association *asoc,
154 * (endpoint, asoc, chunk)
157 * (asoc, reply_msg, msg_up, timers, counters)
162 const struct sctp_association *asoc,
178 if (!sctp_vtag_verify_either(chunk, asoc))
179 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
188 ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP,
234 * (endpoint, asoc, chunk)
237 * (asoc, reply_msg, msg_up, timers, counters)
242 const struct sctp_association *asoc,
266 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
272 return sctp_sf_tabort_8_4_8(ep, asoc, type, arg, commands);
282 return sctp_sf_tabort_8_4_8(ep, asoc, type, arg, commands);
288 return sctp_sf_tabort_8_4_8(ep, asoc, type, arg, commands);
296 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
300 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
307 packet = sctp_abort_pkt_new(ep, asoc, arg,
324 return sctp_sf_tabort_8_4_8(ep, asoc, type, arg,
428 * (endpoint, asoc, chunk)
431 * (asoc, reply_msg, msg_up, timers, counters)
436 const struct sctp_association *asoc,
447 if (!sctp_vtag_verify(chunk, asoc))
448 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
452 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
466 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
476 packet = sctp_abort_pkt_new(ep, asoc, arg,
493 sctp_sf_tabort_8_4_8(ep, asoc, type, arg, commands);
497 asoc, chunk->transport);
560 * (endpoint, asoc, chunk)
563 * (asoc, reply_msg, msg_up, timers, counters)
568 const struct sctp_association *asoc,
584 return sctp_sf_ootb(ep, asoc, type, arg, commands);
592 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
607 new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error,
616 sctp_send_stale_cookie_err(ep, asoc, chunk, commands,
618 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
622 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
726 * (endpoint, asoc, chunk)
729 * (asoc, reply_msg, msg_up, timers, counters)
734 const struct sctp_association *asoc,
741 if (!sctp_vtag_verify(chunk, asoc))
742 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
748 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
772 if (asoc->autoclose)
781 ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_COMM_UP,
782 0, asoc->c.sinit_num_ostreams,
783 asoc->c.sinit_max_instreams,
796 if (asoc->peer.adaptation_ind) {
797 ev = sctp_ulpevent_make_adaptation_indication(asoc, GFP_ATOMIC);
812 const struct sctp_association *asoc,
830 reply = sctp_make_heartbeat(asoc, transport, &hbinfo, paylen);
846 const struct sctp_association *asoc,
853 if (asoc->overall_error_count >= asoc->max_retrans) {
873 sctp_sf_heartbeat(ep, asoc, type, arg,
905 * (endpoint, asoc, chunk)
908 * (asoc, reply_msg, msg_up, timers, counters)
913 const struct sctp_association *asoc,
922 if (!sctp_vtag_verify(chunk, asoc))
923 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
927 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
939 reply = sctp_make_heartbeat_ack(asoc, chunk,
972 * (endpoint, asoc, chunk)
975 * (asoc, reply_msg, msg_up, timers, counters)
980 const struct sctp_association *asoc,
991 if (!sctp_vtag_verify(chunk, asoc))
992 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
996 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
1007 link = sctp_assoc_lookup_paddr(asoc, &from_addr);
1016 asoc,
1023 asoc,
1111 const struct sctp_association *asoc,
1136 list_for_each(pos2, &asoc->peer.transport_addr_list) {
1164 const struct sctp_association *asoc)
1166 switch (asoc->state) {
1171 new_asoc->c.my_vtag = asoc->c.my_vtag;
1172 new_asoc->c.my_ttag = asoc->c.my_vtag;
1177 new_asoc->c.my_vtag = asoc->c.my_vtag;
1178 new_asoc->c.my_ttag = asoc->c.my_vtag;
1179 new_asoc->c.peer_ttag = asoc->c.peer_vtag;
1186 new_asoc->c.my_ttag = asoc->c.my_vtag;
1187 new_asoc->c.peer_ttag = asoc->c.peer_vtag;
1195 new_asoc->rwnd = asoc->rwnd;
1196 new_asoc->c.sinit_num_ostreams = asoc->c.sinit_num_ostreams;
1197 new_asoc->c.sinit_max_instreams = asoc->c.sinit_max_instreams;
1198 new_asoc->c.initial_tsn = asoc->c.initial_tsn;
1211 const struct sctp_association *asoc)
1214 if ((asoc->c.my_vtag != new_asoc->c.my_vtag) &&
1215 (asoc->c.peer_vtag != new_asoc->c.peer_vtag) &&
1216 (asoc->c.my_vtag == new_asoc->c.my_ttag) &&
1217 (asoc->c.peer_vtag == new_asoc->c.peer_ttag))
1221 if ((asoc->c.my_vtag == new_asoc->c.my_vtag) &&
1222 ((asoc->c.peer_vtag != new_asoc->c.peer_vtag) ||
1223 (0 == asoc->c.peer_vtag))) {
1228 if ((asoc->c.my_vtag == new_asoc->c.my_vtag) &&
1229 (asoc->c.peer_vtag == new_asoc->c.peer_vtag))
1233 if ((asoc->c.my_vtag != new_asoc->c.my_vtag) &&
1234 (asoc->c.peer_vtag == new_asoc->c.peer_vtag) &&
1248 const struct sctp_association *asoc,
1271 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1277 return sctp_sf_tabort_8_4_8(ep, asoc, type, arg, commands);
1284 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
1294 if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
1301 packet = sctp_abort_pkt_new(ep, asoc, arg,
1317 return sctp_sf_tabort_8_4_8(ep, asoc, type, arg,
1341 if (!sctp_state(asoc, COOKIE_WAIT)) {
1342 if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk,
1349 sctp_tietags_populate(new_asoc, asoc);
1445 * (endpoint, asoc, chunk)
1448 * (asoc, reply_msg, msg_up, timers, counters)
1453 const struct sctp_association *asoc,
1461 return sctp_sf_do_unexpected_init(ep, asoc, type, arg, commands);
1498 * (endpoint, asoc, chunk)
1501 * (asoc, reply_msg, msg_up, timers, counters)
1506 const struct sctp_association *asoc,
1514 return sctp_sf_do_unexpected_init(ep, asoc, type, arg, commands);
1528 const struct sctp_association *asoc,
1536 return sctp_sf_ootb(ep, asoc, type, arg, commands);
1538 return sctp_sf_discard_chunk(ep, asoc, type, arg, commands);
1547 const struct sctp_association *asoc,
1572 if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, commands)) {
1582 if (sctp_state(asoc, SHUTDOWN_ACK_SENT)) {
1583 disposition = sctp_sf_do_9_2_reshutack(ep, asoc,
1589 err = sctp_make_op_error(asoc, chunk,
1609 ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_RESTART, 0,
1637 const struct sctp_association *asoc,
1690 if (asoc->peer.adaptation_ind)
1709 const struct sctp_association *asoc,
1730 const struct sctp_association *asoc,
1746 if (asoc->state < SCTP_STATE_ESTABLISHED) {
1762 ev = sctp_ulpevent_make_assoc_change(asoc, 0,
1764 asoc->c.sinit_num_ostreams,
1765 asoc->c.sinit_max_instreams,
1775 if (asoc->peer.adaptation_ind) {
1776 ai_ev = sctp_ulpevent_make_adaptation_indication(asoc,
1818 * (endpoint, asoc, chunk)
1821 * (asoc, reply_msg, msg_up, timers, counters)
1826 const struct sctp_association *asoc,
1844 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
1860 new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error,
1869 sctp_send_stale_cookie_err(ep, asoc, chunk, commands,
1871 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1874 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1881 action = sctp_tietags_compare(new_asoc, asoc);
1885 retval = sctp_sf_do_dupcook_a(ep, asoc, chunk, commands,
1890 retval = sctp_sf_do_dupcook_b(ep, asoc, chunk, commands,
1895 retval = sctp_sf_do_dupcook_c(ep, asoc, chunk, commands,
1900 retval = sctp_sf_do_dupcook_d(ep, asoc, chunk, commands,
1905 retval = sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1926 const struct sctp_association *asoc,
1933 if (!sctp_vtag_verify_either(chunk, asoc))
1934 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1947 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1953 return sctp_sf_do_9_1_abort(ep, asoc, type, arg, commands);
1962 const struct sctp_association *asoc,
1969 if (!sctp_vtag_verify_either(chunk, asoc))
1970 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1983 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
1993 return sctp_sf_do_9_1_abort(ep, asoc, type, arg, commands);
2003 const struct sctp_association *asoc,
2011 return sctp_sf_shutdown_sent_abort(ep, asoc, type, arg, commands);
2021 * (endpoint, asoc, chunk)
2024 * (asoc, reply_msg, msg_up, timers, counters)
2029 const struct sctp_association *asoc,
2037 if (!sctp_vtag_verify(chunk, asoc))
2038 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2044 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2050 return sctp_sf_do_5_2_6_stale(ep, asoc, type,
2059 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2080 * (endpoint, asoc, chunk)
2083 * (asoc, reply_msg, msg_up, timers, counters)
2088 const struct sctp_association *asoc,
2099 int attempts = asoc->init_err_counter + 1;
2101 if (attempts > asoc->max_init_attempts) {
2133 bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
2134 reply = sctp_make_init(asoc, bp, GFP_ATOMIC, sizeof(bht));
2156 SCTP_TRANSPORT(asoc->peer.primary_path));
2202 * (endpoint, asoc, chunk)
2205 * (asoc, reply_msg, msg_up, timers, counters)
2210 const struct sctp_association *asoc,
2219 if (!sctp_vtag_verify_either(chunk, asoc))
2220 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2233 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2255 const struct sctp_association *asoc,
2264 if (!sctp_vtag_verify_either(chunk, asoc))
2265 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2278 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2285 return sctp_stop_t1_and_abort(commands, error, ECONNREFUSED, asoc,
2293 const struct sctp_association *asoc,
2299 ENOPROTOOPT, asoc,
2307 const struct sctp_association *asoc,
2315 return sctp_sf_cookie_wait_abort(ep, asoc, type, arg, commands);
2325 const struct sctp_association *asoc,
2367 * (endpoint, asoc, chunk)
2370 * (asoc, reply_msg, msg_up, timers, counters)
2375 const struct sctp_association *asoc,
2385 if (!sctp_vtag_verify(chunk, asoc))
2386 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2391 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2403 ev = sctp_ulpevent_make_shutdown_event(asoc, 0, GFP_ATOMIC);
2420 if (sctp_outq_is_empty(&asoc->outqueue)) {
2421 disposition = sctp_sf_do_9_2_shutdown_ack(ep, asoc, type,
2447 const struct sctp_association *asoc,
2459 reply = sctp_make_shutdown_ack(asoc, chunk);
2497 * (endpoint, asoc, chunk)
2500 * (asoc, reply_msg, msg_up, timers, counters)
2505 const struct sctp_association *asoc,
2514 if (!sctp_vtag_verify(chunk, asoc))
2515 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2518 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2527 if (TSN_lte(asoc->last_ecne_tsn, lowest_tsn)) {
2552 * (endpoint, asoc, chunk)
2555 * (asoc, reply_msg, msg_up, timers, counters)
2560 const struct sctp_association *asoc,
2568 if (!sctp_vtag_verify(chunk, asoc))
2569 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2572 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2608 * (endpoint, asoc, chunk)
2611 * (asoc, reply_msg, msg_up, timers, counters)
2616 const struct sctp_association *asoc,
2624 if (!sctp_vtag_verify(chunk, asoc)) {
2627 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2631 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2634 error = sctp_eat_data(asoc, chunk, commands );
2652 if (asoc->autoclose) {
2722 * (endpoint, asoc, chunk)
2725 * (asoc, reply_msg, msg_up, timers, counters)
2730 const struct sctp_association *asoc,
2738 if (!sctp_vtag_verify(chunk, asoc)) {
2741 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2745 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2748 error = sctp_eat_data(asoc, chunk, commands );
2809 * (endpoint, asoc, chunk)
2812 * (asoc, reply_msg, msg_up, timers, counters)
2817 const struct sctp_association *asoc,
2826 if (!sctp_vtag_verify(chunk, asoc))
2827 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2831 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2838 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2848 if (TSN_lt(ctsn, asoc->ctsn_ack_point)) {
2850 SCTP_DEBUG_PRINTK("ctsn_ack_point %x\n", asoc->ctsn_ack_point);
2882 const struct sctp_association *asoc,
2891 packet = sctp_ootb_pkt_new(asoc, chunk);
2894 /* Make an ABORT. The T bit will be set if the asoc
2897 abort = sctp_make_abort(asoc, chunk, 0);
2932 const struct sctp_association *asoc,
2940 if (!sctp_vtag_verify(chunk, asoc))
2941 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2945 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
2949 ev = sctp_ulpevent_make_remote_error(asoc, chunk, 0,
2980 const struct sctp_association *asoc,
2989 if (!sctp_vtag_verify(chunk, asoc))
2990 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
2994 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
3001 ev = sctp_ulpevent_make_assoc_change(asoc, 0, SCTP_SHUTDOWN_COMP,
3007 reply = sctp_make_shutdown_complete(asoc, chunk);
3062 const struct sctp_association *asoc,
3094 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3100 sctp_sf_shut_8_4_5(ep, asoc, type, arg, commands);
3102 sctp_sf_tabort_8_4_8(ep, asoc, type, arg, commands);
3104 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3121 * (endpoint, asoc, type, arg, commands)
3129 const struct sctp_association *asoc,
3138 packet = sctp_ootb_pkt_new(asoc, chunk);
3142 * The T bit will be set if the asoc is NULL.
3144 shut = sctp_make_shutdown_complete(asoc, chunk);
3168 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3188 const struct sctp_association *asoc,
3203 const struct sctp_association *asoc,
3212 if (!sctp_vtag_verify(chunk, asoc)) {
3215 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3220 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
3230 if (serial == asoc->peer.addip_serial + 1) {
3236 asoc, chunk);
3239 } else if (serial == asoc->peer.addip_serial) {
3247 if (asoc->addip_last_asconf_ack)
3248 asconf_ack = asoc->addip_last_asconf_ack;
3273 const struct sctp_association *asoc,
3278 struct sctp_chunk *last_asconf = asoc->addip_last_asconf;
3283 if (!sctp_vtag_verify(asconf_ack, asoc)) {
3286 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3291 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
3301 sent_serial = asoc->addip_serial - 1;
3311 !(asoc->addip_last_asconf)) {
3312 abort = sctp_make_abort(asoc, asconf_ack,
3334 if ((rcvd_serial == sent_serial) && asoc->addip_last_asconf) {
3338 if (!sctp_process_asconf_ack((struct sctp_association *)asoc,
3342 abort = sctp_make_abort(asoc, asconf_ack,
3380 const struct sctp_association *asoc,
3390 if (!sctp_vtag_verify(chunk, asoc)) {
3393 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3398 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
3413 if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
3422 if (asoc->autoclose) {
3437 const struct sctp_association *asoc,
3447 if (!sctp_vtag_verify(chunk, asoc)) {
3450 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3455 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
3470 if (sctp_tsnmap_check(&asoc->peer.tsn_map, tsn) < 0)
3518 const struct sctp_association *asoc,
3529 if (!sctp_vtag_verify(unk_chunk, asoc))
3530 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3537 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
3543 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3547 sctp_sf_pdiscard(ep, asoc, type, arg, commands);
3551 err_chunk = sctp_make_op_error(asoc, unk_chunk,
3567 err_chunk = sctp_make_op_error(asoc, unk_chunk,
3591 * (endpoint, asoc, chunk)
3594 * (asoc, reply_msg, msg_up, timers, counters)
3599 const struct sctp_association *asoc,
3619 * (endpoint, asoc, chunk)
3622 * (asoc, reply_msg, msg_up, timers, counters)
3627 const struct sctp_association *asoc,
3645 * (endpoint, asoc, chunk)
3648 * (asoc, reply_msg, msg_up, timers, counters)
3654 const struct sctp_association *asoc,
3675 * (endpoint, asoc, chunk)
3684 const struct sctp_association *asoc,
3694 abort = sctp_make_abort_violation(asoc, chunk, err_str,
3702 if (asoc->state <= SCTP_STATE_COOKIE_ECHOED) {
3773 * [This is the argument asoc.]
3777 * [This is asoc->peer.active_path.]
3788 const struct sctp_association *asoc,
3810 repl = sctp_make_init(asoc, &asoc->base.bind_addr, GFP_ATOMIC, 0);
3818 SCTP_ASOC((struct sctp_association *) asoc));
3898 const struct sctp_association *asoc,
3937 const struct sctp_association *asoc,
3963 if (sctp_outq_is_empty(&asoc->outqueue)) {
3964 disposition = sctp_sf_do_9_2_start_shutdown(ep, asoc, type,
3999 const struct sctp_association *asoc,
4037 const struct sctp_association *asoc,
4050 const struct sctp_association *asoc,
4066 * (endpoint, asoc)
4076 const struct sctp_association *asoc,
4100 * (endpoint, asoc)
4110 const struct sctp_association *asoc,
4117 return sctp_sf_cookie_wait_prm_shutdown(ep, asoc, type, arg, commands);
4126 * (endpoint, asoc)
4136 const struct sctp_association *asoc,
4175 * (endpoint, asoc)
4185 const struct sctp_association *asoc,
4193 return sctp_sf_cookie_wait_prm_abort(ep, asoc, type, arg, commands);
4200 * (endpoint, asoc)
4210 const struct sctp_association *asoc,
4219 return sctp_sf_do_9_1_prm_abort(ep, asoc, type, arg, commands);
4226 * (endpoint, asoc)
4236 const struct sctp_association *asoc,
4249 return sctp_sf_do_9_1_prm_abort(ep, asoc, type, arg, commands);
4256 * (endpoint, asoc)
4266 const struct sctp_association *asoc,
4274 return sctp_sf_shutdown_sent_prm_abort(ep, asoc, type, arg, commands);
4301 const struct sctp_association *asoc,
4306 if (SCTP_DISPOSITION_NOMEM == sctp_sf_heartbeat(ep, asoc, type,
4332 const struct sctp_association *asoc,
4353 const struct sctp_association *asoc,
4381 const struct sctp_association *asoc,
4393 reply = sctp_make_shutdown(asoc, NULL);
4406 if (asoc->autoclose)
4443 const struct sctp_association *asoc,
4459 if (!sctp_vtag_verify(chunk, asoc))
4460 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
4464 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
4471 reply = sctp_make_shutdown_ack(asoc, chunk);
4484 if (asoc->autoclose)
4513 const struct sctp_association *asoc,
4538 const struct sctp_association *asoc,
4547 if (asoc->overall_error_count >= asoc->max_retrans) {
4610 const struct sctp_association *asoc,
4626 * (endpoint, asoc)
4640 const struct sctp_association *asoc,
4647 int attempts = asoc->init_err_counter + 1;
4652 if (attempts <= asoc->max_init_attempts) {
4653 bp = (struct sctp_bind_addr *) &asoc->base.bind_addr;
4654 repl = sctp_make_init(asoc, bp, GFP_ATOMIC, 0);
4670 attempts, asoc->max_init_attempts);
4687 * (endpoint, asoc)
4701 const struct sctp_association *asoc,
4707 int attempts = asoc->init_err_counter + 1;
4712 if (attempts <= asoc->max_init_attempts) {
4713 repl = sctp_make_cookie_echo(asoc, NULL);
4747 const struct sctp_association *asoc,
4757 if (asoc->overall_error_count >= asoc->max_retrans) {
4768 switch (asoc->state) {
4770 reply = sctp_make_shutdown(asoc, NULL);
4774 reply = sctp_make_shutdown_ack(asoc, NULL);
4787 SCTP_TRANSPORT(asoc->shutdown_last_sent_to));
4810 const struct sctp_association *asoc,
4815 struct sctp_chunk *chunk = asoc->addip_last_asconf;
4834 if (asoc->overall_error_count >= asoc->max_retrans) {
4857 sctp_chunk_hold(asoc->addip_last_asconf);
4859 SCTP_CHUNK(asoc->addip_last_asconf));
4878 const struct sctp_association *asoc,
4888 reply = sctp_make_abort(asoc, NULL, 0);
4910 const struct sctp_association *asoc,
4937 if (sctp_outq_is_empty(&asoc->outqueue)) {
4938 disposition = sctp_sf_do_9_2_start_shutdown(ep, asoc, type,
4952 * (endpoint, asoc, chunk)
4957 const struct sctp_association *asoc,
4969 * (endpoint, asoc, chunk)
4974 const struct sctp_association *asoc,
4989 * (endpoint, asoc, chunk)
4994 const struct sctp_association *asoc,
5036 const struct sctp_association *asoc,
5044 packet = sctp_ootb_pkt_new(asoc, chunk);
5048 * The T bit will be set if the asoc is NULL.
5050 abort = sctp_make_abort(asoc, chunk, paylen);
5076 static struct sctp_packet *sctp_ootb_pkt_new(const struct sctp_association *asoc,
5092 if (asoc) {
5093 vtag = asoc->peer.i.init_tag;
5141 const struct sctp_association *asoc,
5149 packet = sctp_ootb_pkt_new(asoc, chunk);
5170 static int sctp_eat_data(const struct sctp_association *asoc,
5181 struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map;
5182 struct sock *sk = asoc->base.sk;
5203 if ((asoc->state == SCTP_STATE_ESTABLISHED) && (!chunk->data_accepted)) {
5210 if (asoc->ep->rcvbuf_policy)
5211 account_value = atomic_read(&asoc->rmem_alloc);
5252 if (af && af->is_ce(chunk->skb) && asoc->peer.ecn_capable) {
5259 tmp = sctp_tsnmap_check(&asoc->peer.tsn_map, tsn);
5282 if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) {
5303 if (!asoc->rwnd || asoc->rwnd_over ||
5304 (datalen > asoc->rwnd + asoc->frag_point) ||
5320 asoc->rwnd);
5334 err = sctp_make_abort_no_data(asoc, chunk, tsn);
5376 if (ntohs(data_hdr->stream) >= asoc->c.sinit_max_instreams) {
5377 err = sctp_make_op_error(asoc, chunk, SCTP_ERROR_INV_STRM,