Lines Matching refs:chunk

65 				  struct sctp_chunk *chunk,
69 struct sctp_chunk *chunk,
73 const struct sctp_chunk *chunk);
77 const struct sctp_chunk *chunk,
98 static struct sctp_sackhdr *sctp_sm_pull_sack(struct sctp_chunk *chunk);
151 struct sctp_chunk *chunk);
168 sctp_chunk_length_valid(struct sctp_chunk *chunk, in sctp_chunk_length_valid() argument
171 __u16 chunk_length = ntohs(chunk->chunk_hdr->length); in sctp_chunk_length_valid()
174 if (unlikely(chunk->pdiscard)) in sctp_chunk_length_valid()
224 struct sctp_chunk *chunk = arg; in sctp_sf_do_4_C() local
227 if (!sctp_vtag_verify_either(chunk, asoc)) in sctp_sf_do_4_C()
235 if (!chunk->singleton) in sctp_sf_do_4_C()
239 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_4_C()
310 struct sctp_chunk *chunk = arg; in sctp_sf_do_5_1B_init() local
327 if (!chunk->singleton) in sctp_sf_do_5_1B_init()
341 if (chunk->sctp_hdr->vtag != 0) in sctp_sf_do_5_1B_init()
349 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_init_chunk_t))) in sctp_sf_do_5_1B_init()
363 if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type, in sctp_sf_do_5_1B_init()
364 (sctp_init_chunk_t *)chunk->chunk_hdr, chunk, in sctp_sf_do_5_1B_init()
393 chunk->subh.init_hdr = (sctp_inithdr_t *)chunk->skb->data; in sctp_sf_do_5_1B_init()
396 chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(sctp_inithdr_t)); in sctp_sf_do_5_1B_init()
398 new_asoc = sctp_make_temp_asoc(ep, chunk, GFP_ATOMIC); in sctp_sf_do_5_1B_init()
403 sctp_scope(sctp_source(chunk)), in sctp_sf_do_5_1B_init()
408 if (!sctp_process_init(new_asoc, chunk, sctp_source(chunk), in sctp_sf_do_5_1B_init()
409 (sctp_init_chunk_t *)chunk->chunk_hdr, in sctp_sf_do_5_1B_init()
423 repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len); in sctp_sf_do_5_1B_init()
506 struct sctp_chunk *chunk = arg; in sctp_sf_do_5_1C_ack() local
511 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_5_1C_ack()
518 if (!chunk->singleton) in sctp_sf_do_5_1C_ack()
522 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_initack_chunk_t))) in sctp_sf_do_5_1C_ack()
526 chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data; in sctp_sf_do_5_1C_ack()
530 if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type, in sctp_sf_do_5_1C_ack()
531 (sctp_init_chunk_t *)chunk->chunk_hdr, chunk, in sctp_sf_do_5_1C_ack()
574 asoc, chunk->transport); in sctp_sf_do_5_1C_ack()
580 chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(sctp_inithdr_t)); in sctp_sf_do_5_1C_ack()
582 initchunk = (sctp_init_chunk_t *) chunk->chunk_hdr; in sctp_sf_do_5_1C_ack()
655 struct sctp_chunk *chunk = arg; in sctp_sf_do_5_1D_ce() local
677 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_5_1D_ce()
692 chunk->subh.cookie_hdr = in sctp_sf_do_5_1D_ce()
693 (struct sctp_signed_cookie *)chunk->skb->data; in sctp_sf_do_5_1D_ce()
694 if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) - in sctp_sf_do_5_1D_ce()
702 new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error, in sctp_sf_do_5_1D_ce()
720 sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands, in sctp_sf_do_5_1D_ce()
739 peer_init = &chunk->subh.cookie_hdr->c.peer_init[0]; in sctp_sf_do_5_1D_ce()
741 if (!sctp_process_init(new_asoc, chunk, in sctp_sf_do_5_1D_ce()
742 &chunk->subh.cookie_hdr->c.peer_addr, in sctp_sf_do_5_1D_ce()
760 if (chunk->auth_chunk) { in sctp_sf_do_5_1D_ce()
771 auth.skb = chunk->auth_chunk; in sctp_sf_do_5_1D_ce()
772 auth.asoc = chunk->asoc; in sctp_sf_do_5_1D_ce()
773 auth.sctp_hdr = chunk->sctp_hdr; in sctp_sf_do_5_1D_ce()
774 auth.chunk_hdr = (sctp_chunkhdr_t *)skb_push(chunk->auth_chunk, in sctp_sf_do_5_1D_ce()
776 skb_pull(chunk->auth_chunk, sizeof(sctp_chunkhdr_t)); in sctp_sf_do_5_1D_ce()
777 auth.transport = chunk->transport; in sctp_sf_do_5_1D_ce()
786 repl = sctp_make_cookie_ack(new_asoc, chunk); in sctp_sf_do_5_1D_ce()
881 struct sctp_chunk *chunk = arg; in sctp_sf_do_5_1E_ca() local
884 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_5_1E_ca()
890 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_5_1E_ca()
1057 struct sctp_chunk *chunk = arg; in sctp_sf_beat_8_3() local
1061 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_beat_8_3()
1065 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_heartbeat_chunk_t))) in sctp_sf_beat_8_3()
1073 chunk->subh.hb_hdr = (sctp_heartbeathdr_t *) chunk->skb->data; in sctp_sf_beat_8_3()
1074 param_hdr = (sctp_paramhdr_t *) chunk->subh.hb_hdr; in sctp_sf_beat_8_3()
1075 paylen = ntohs(chunk->chunk_hdr->length) - sizeof(sctp_chunkhdr_t); in sctp_sf_beat_8_3()
1081 if (!pskb_pull(chunk->skb, paylen)) in sctp_sf_beat_8_3()
1084 reply = sctp_make_heartbeat_ack(asoc, chunk, param_hdr, paylen); in sctp_sf_beat_8_3()
1130 struct sctp_chunk *chunk = arg; in sctp_sf_backbeat_8_3() local
1136 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_backbeat_8_3()
1140 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t) + in sctp_sf_backbeat_8_3()
1145 hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data; in sctp_sf_backbeat_8_3()
1395 struct sctp_chunk *chunk = arg; in sctp_sf_do_unexpected_init() local
1412 if (!chunk->singleton) in sctp_sf_do_unexpected_init()
1418 if (chunk->sctp_hdr->vtag != 0) in sctp_sf_do_unexpected_init()
1425 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_init_chunk_t))) in sctp_sf_do_unexpected_init()
1429 chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data; in sctp_sf_do_unexpected_init()
1432 chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(sctp_inithdr_t)); in sctp_sf_do_unexpected_init()
1436 if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type, in sctp_sf_do_unexpected_init()
1437 (sctp_init_chunk_t *)chunk->chunk_hdr, chunk, in sctp_sf_do_unexpected_init()
1471 new_asoc = sctp_make_temp_asoc(ep, chunk, GFP_ATOMIC); in sctp_sf_do_unexpected_init()
1476 sctp_scope(sctp_source(chunk)), GFP_ATOMIC) < 0) in sctp_sf_do_unexpected_init()
1483 if (!sctp_process_init(new_asoc, chunk, sctp_source(chunk), in sctp_sf_do_unexpected_init()
1484 (sctp_init_chunk_t *)chunk->chunk_hdr, in sctp_sf_do_unexpected_init()
1494 if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, in sctp_sf_do_unexpected_init()
1514 repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len); in sctp_sf_do_unexpected_init()
1701 struct sctp_chunk *chunk, in sctp_sf_do_dupcook_a() argument
1714 peer_init = &chunk->subh.cookie_hdr->c.peer_init[0]; in sctp_sf_do_dupcook_a()
1716 if (!sctp_process_init(new_asoc, chunk, sctp_source(chunk), peer_init, in sctp_sf_do_dupcook_a()
1724 if (!sctp_sf_check_restart_addrs(new_asoc, asoc, chunk, commands)) { in sctp_sf_do_dupcook_a()
1736 SCTP_ST_CHUNK(chunk->chunk_hdr->type), in sctp_sf_do_dupcook_a()
1737 chunk, commands); in sctp_sf_do_dupcook_a()
1741 err = sctp_make_op_error(asoc, chunk, in sctp_sf_do_dupcook_a()
1766 repl = sctp_make_cookie_ack(new_asoc, chunk); in sctp_sf_do_dupcook_a()
1816 struct sctp_chunk *chunk, in sctp_sf_do_dupcook_b() argument
1826 peer_init = &chunk->subh.cookie_hdr->c.peer_init[0]; in sctp_sf_do_dupcook_b()
1827 if (!sctp_process_init(new_asoc, chunk, sctp_source(chunk), peer_init, in sctp_sf_do_dupcook_b()
1838 repl = sctp_make_cookie_ack(new_asoc, chunk); in sctp_sf_do_dupcook_b()
1887 struct sctp_chunk *chunk, in sctp_sf_do_dupcook_c() argument
1909 struct sctp_chunk *chunk, in sctp_sf_do_dupcook_d() argument
1962 repl = sctp_make_cookie_ack(new_asoc, chunk); in sctp_sf_do_dupcook_d()
2009 struct sctp_chunk *chunk = arg; in sctp_sf_do_5_2_4_dupcook() local
2020 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_5_2_4_dupcook()
2027 chunk->subh.cookie_hdr = (struct sctp_signed_cookie *)chunk->skb->data; in sctp_sf_do_5_2_4_dupcook()
2028 if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) - in sctp_sf_do_5_2_4_dupcook()
2037 new_asoc = sctp_unpack_cookie(ep, asoc, chunk, GFP_ATOMIC, &error, in sctp_sf_do_5_2_4_dupcook()
2055 sctp_send_stale_cookie_err(net, ep, asoc, chunk, commands, in sctp_sf_do_5_2_4_dupcook()
2071 retval = sctp_sf_do_dupcook_a(net, ep, asoc, chunk, commands, in sctp_sf_do_5_2_4_dupcook()
2076 retval = sctp_sf_do_dupcook_b(net, ep, asoc, chunk, commands, in sctp_sf_do_5_2_4_dupcook()
2081 retval = sctp_sf_do_dupcook_c(net, ep, asoc, chunk, commands, in sctp_sf_do_5_2_4_dupcook()
2086 retval = sctp_sf_do_dupcook_d(net, ep, asoc, chunk, commands, in sctp_sf_do_5_2_4_dupcook()
2124 struct sctp_chunk *chunk = arg; in sctp_sf_shutdown_pending_abort() local
2126 if (!sctp_vtag_verify_either(chunk, asoc)) in sctp_sf_shutdown_pending_abort()
2139 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_abort_chunk_t))) in sctp_sf_shutdown_pending_abort()
2148 sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest)) in sctp_sf_shutdown_pending_abort()
2166 struct sctp_chunk *chunk = arg; in sctp_sf_shutdown_sent_abort() local
2168 if (!sctp_vtag_verify_either(chunk, asoc)) in sctp_sf_shutdown_sent_abort()
2181 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_abort_chunk_t))) in sctp_sf_shutdown_sent_abort()
2190 sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest)) in sctp_sf_shutdown_sent_abort()
2244 struct sctp_chunk *chunk = arg; in sctp_sf_cookie_echoed_err() local
2247 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_cookie_echoed_err()
2253 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_operr_chunk_t))) in sctp_sf_cookie_echoed_err()
2262 sctp_walk_errors(err, chunk->chunk_hdr) { in sctp_sf_cookie_echoed_err()
2308 struct sctp_chunk *chunk = arg; in sctp_sf_do_5_2_6_stale() local
2324 err = (sctp_errhdr_t *)(chunk->skb->data); in sctp_sf_do_5_2_6_stale()
2431 struct sctp_chunk *chunk = arg; in sctp_sf_do_9_1_abort() local
2433 if (!sctp_vtag_verify_either(chunk, asoc)) in sctp_sf_do_9_1_abort()
2446 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_abort_chunk_t))) in sctp_sf_do_9_1_abort()
2455 sctp_bind_addr_state(&asoc->base.bind_addr, &chunk->dest)) in sctp_sf_do_9_1_abort()
2468 struct sctp_chunk *chunk = arg; in __sctp_sf_do_9_1_abort() local
2473 len = ntohs(chunk->chunk_hdr->length); in __sctp_sf_do_9_1_abort()
2477 sctp_walk_errors(err, chunk->chunk_hdr); in __sctp_sf_do_9_1_abort()
2478 if ((void *)err != (void *)chunk->chunk_end) in __sctp_sf_do_9_1_abort()
2481 error = ((sctp_errhdr_t *)chunk->skb->data)->cause; in __sctp_sf_do_9_1_abort()
2505 struct sctp_chunk *chunk = arg; in sctp_sf_cookie_wait_abort() local
2509 if (!sctp_vtag_verify_either(chunk, asoc)) in sctp_sf_cookie_wait_abort()
2522 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_abort_chunk_t))) in sctp_sf_cookie_wait_abort()
2526 len = ntohs(chunk->chunk_hdr->length); in sctp_sf_cookie_wait_abort()
2528 error = ((sctp_errhdr_t *)chunk->skb->data)->cause; in sctp_sf_cookie_wait_abort()
2531 chunk->transport); in sctp_sf_cookie_wait_abort()
2631 struct sctp_chunk *chunk = arg; in sctp_sf_do_9_2_shutdown() local
2637 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_9_2_shutdown()
2641 if (!sctp_chunk_length_valid(chunk, in sctp_sf_do_9_2_shutdown()
2647 sdh = (sctp_shutdownhdr_t *)chunk->skb->data; in sctp_sf_do_9_2_shutdown()
2648 skb_pull(chunk->skb, sizeof(sctp_shutdownhdr_t)); in sctp_sf_do_9_2_shutdown()
2649 chunk->subh.shutdown_hdr = sdh; in sctp_sf_do_9_2_shutdown()
2700 SCTP_BE32(chunk->subh.shutdown_hdr->cum_tsn_ack)); in sctp_sf_do_9_2_shutdown()
2721 struct sctp_chunk *chunk = arg; in sctp_sf_do_9_2_shut_ctsn() local
2725 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_9_2_shut_ctsn()
2729 if (!sctp_chunk_length_valid(chunk, in sctp_sf_do_9_2_shut_ctsn()
2734 sdh = (sctp_shutdownhdr_t *)chunk->skb->data; in sctp_sf_do_9_2_shut_ctsn()
2775 struct sctp_chunk *chunk = (struct sctp_chunk *) arg; in sctp_sf_do_9_2_reshutack() local
2779 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_9_2_reshutack()
2787 reply = sctp_make_shutdown_ack(asoc, chunk); in sctp_sf_do_9_2_reshutack()
2840 struct sctp_chunk *chunk = arg; in sctp_sf_do_ecn_cwr() local
2843 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_ecn_cwr()
2846 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_ecne_chunk_t))) in sctp_sf_do_ecn_cwr()
2850 cwr = (sctp_cwrhdr_t *) chunk->skb->data; in sctp_sf_do_ecn_cwr()
2851 skb_pull(chunk->skb, sizeof(sctp_cwrhdr_t)); in sctp_sf_do_ecn_cwr()
2896 struct sctp_chunk *chunk = arg; in sctp_sf_do_ecne() local
2898 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_ecne()
2901 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_ecne_chunk_t))) in sctp_sf_do_ecne()
2905 ecne = (sctp_ecnehdr_t *) chunk->skb->data; in sctp_sf_do_ecne()
2906 skb_pull(chunk->skb, sizeof(sctp_ecnehdr_t)); in sctp_sf_do_ecne()
2952 struct sctp_chunk *chunk = arg; in sctp_sf_eat_data_6_2() local
2956 if (!sctp_vtag_verify(chunk, asoc)) { in sctp_sf_eat_data_6_2()
2962 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_data_chunk_t))) in sctp_sf_eat_data_6_2()
2966 error = sctp_eat_data(asoc, chunk, commands); in sctp_sf_eat_data_6_2()
2981 return sctp_sf_abort_violation(net, ep, asoc, chunk, commands, in sctp_sf_eat_data_6_2()
2982 (u8 *)chunk->subh.data_hdr, sizeof(sctp_datahdr_t)); in sctp_sf_eat_data_6_2()
2987 if (chunk->chunk_hdr->flags & SCTP_DATA_SACK_IMM) in sctp_sf_eat_data_6_2()
3017 if (chunk->end_of_packet) in sctp_sf_eat_data_6_2()
3037 if (chunk->end_of_packet) in sctp_sf_eat_data_6_2()
3042 if (chunk->end_of_packet) in sctp_sf_eat_data_6_2()
3074 struct sctp_chunk *chunk = arg; in sctp_sf_eat_data_fast_4_4() local
3077 if (!sctp_vtag_verify(chunk, asoc)) { in sctp_sf_eat_data_fast_4_4()
3083 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_data_chunk_t))) in sctp_sf_eat_data_fast_4_4()
3087 error = sctp_eat_data(asoc, chunk, commands); in sctp_sf_eat_data_fast_4_4()
3098 return sctp_sf_abort_violation(net, ep, asoc, chunk, commands, in sctp_sf_eat_data_fast_4_4()
3099 (u8 *)chunk->subh.data_hdr, sizeof(sctp_datahdr_t)); in sctp_sf_eat_data_fast_4_4()
3112 if (chunk->end_of_packet) { in sctp_sf_eat_data_fast_4_4()
3165 struct sctp_chunk *chunk = arg; in sctp_sf_eat_sack_6_2() local
3169 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_eat_sack_6_2()
3173 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_sack_chunk_t))) in sctp_sf_eat_sack_6_2()
3178 sackh = sctp_sm_pull_sack(chunk); in sctp_sf_eat_sack_6_2()
3182 chunk->subh.sack_hdr = sackh; in sctp_sf_eat_sack_6_2()
3206 sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, SCTP_CHUNK(chunk)); in sctp_sf_eat_sack_6_2()
3240 struct sctp_chunk *chunk = arg; in sctp_sf_tabort_8_4_8() local
3243 packet = sctp_ootb_pkt_new(net, asoc, chunk); in sctp_sf_tabort_8_4_8()
3249 abort = sctp_make_abort(asoc, chunk, 0); in sctp_sf_tabort_8_4_8()
3257 packet->vtag = ntohl(chunk->sctp_hdr->vtag); in sctp_sf_tabort_8_4_8()
3291 struct sctp_chunk *chunk = arg; in sctp_sf_operr_notify() local
3294 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_operr_notify()
3298 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_operr_chunk_t))) in sctp_sf_operr_notify()
3301 sctp_walk_errors(err, chunk->chunk_hdr); in sctp_sf_operr_notify()
3302 if ((void *)err != (void *)chunk->chunk_end) in sctp_sf_operr_notify()
3307 SCTP_CHUNK(chunk)); in sctp_sf_operr_notify()
3329 struct sctp_chunk *chunk = arg; in sctp_sf_do_9_2_final() local
3333 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_9_2_final()
3337 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_9_2_final()
3351 reply = sctp_make_shutdown_complete(asoc, chunk); in sctp_sf_do_9_2_final()
3412 struct sctp_chunk *chunk = arg; in sctp_sf_ootb() local
3413 struct sk_buff *skb = chunk->skb; in sctp_sf_ootb()
3422 ch = (sctp_chunkhdr_t *) chunk->chunk_hdr; in sctp_sf_ootb()
3506 struct sctp_chunk *chunk = arg; in sctp_sf_shut_8_4_5() local
3509 packet = sctp_ootb_pkt_new(net, asoc, chunk); in sctp_sf_shut_8_4_5()
3515 shut = sctp_make_shutdown_complete(asoc, chunk); in sctp_sf_shut_8_4_5()
3523 packet->vtag = ntohl(chunk->sctp_hdr->vtag); in sctp_sf_shut_8_4_5()
3538 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_shut_8_4_5()
3569 struct sctp_chunk *chunk = arg; in sctp_sf_do_8_5_1_E_sa() local
3572 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_do_8_5_1_E_sa()
3593 struct sctp_chunk *chunk = arg; in sctp_sf_do_asconf() local
3599 if (!sctp_vtag_verify(chunk, asoc)) { in sctp_sf_do_asconf()
3611 if (!net->sctp.addip_noauth && !chunk->auth) in sctp_sf_do_asconf()
3615 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_addip_chunk_t))) in sctp_sf_do_asconf()
3619 hdr = (sctp_addiphdr_t *)chunk->skb->data; in sctp_sf_do_asconf()
3623 if (!sctp_verify_asconf(asoc, chunk, true, &err_param)) in sctp_sf_do_asconf()
3635 if (!chunk->has_asconf) in sctp_sf_do_asconf()
3647 asoc, chunk); in sctp_sf_do_asconf()
3688 asconf_ack->dest = chunk->source; in sctp_sf_do_asconf()
3839 struct sctp_chunk *chunk = arg; in sctp_sf_eat_fwd_tsn() local
3845 if (!sctp_vtag_verify(chunk, asoc)) { in sctp_sf_eat_fwd_tsn()
3852 if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_fwdtsn_chunk))) in sctp_sf_eat_fwd_tsn()
3856 fwdtsn_hdr = (struct sctp_fwdtsn_hdr *)chunk->skb->data; in sctp_sf_eat_fwd_tsn()
3857 chunk->subh.fwdtsn_hdr = fwdtsn_hdr; in sctp_sf_eat_fwd_tsn()
3858 len = ntohs(chunk->chunk_hdr->length); in sctp_sf_eat_fwd_tsn()
3860 skb_pull(chunk->skb, len); in sctp_sf_eat_fwd_tsn()
3872 sctp_walk_fwdtsn(skip, chunk) { in sctp_sf_eat_fwd_tsn()
3880 SCTP_CHUNK(chunk)); in sctp_sf_eat_fwd_tsn()
3907 struct sctp_chunk *chunk = arg; in sctp_sf_eat_fwd_tsn_fast() local
3913 if (!sctp_vtag_verify(chunk, asoc)) { in sctp_sf_eat_fwd_tsn_fast()
3920 if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_fwdtsn_chunk))) in sctp_sf_eat_fwd_tsn_fast()
3924 fwdtsn_hdr = (struct sctp_fwdtsn_hdr *)chunk->skb->data; in sctp_sf_eat_fwd_tsn_fast()
3925 chunk->subh.fwdtsn_hdr = fwdtsn_hdr; in sctp_sf_eat_fwd_tsn_fast()
3926 len = ntohs(chunk->chunk_hdr->length); in sctp_sf_eat_fwd_tsn_fast()
3928 skb_pull(chunk->skb, len); in sctp_sf_eat_fwd_tsn_fast()
3940 sctp_walk_fwdtsn(skip, chunk) { in sctp_sf_eat_fwd_tsn_fast()
3948 SCTP_CHUNK(chunk)); in sctp_sf_eat_fwd_tsn_fast()
3992 struct sctp_chunk *chunk) in sctp_sf_authenticate() argument
4002 auth_hdr = (struct sctp_authhdr *)chunk->skb->data; in sctp_sf_authenticate()
4003 chunk->subh.auth_hdr = auth_hdr; in sctp_sf_authenticate()
4004 skb_pull(chunk->skb, sizeof(struct sctp_authhdr)); in sctp_sf_authenticate()
4023 sig_len = ntohs(chunk->chunk_hdr->length) - sizeof(sctp_auth_chunk_t); in sctp_sf_authenticate()
4036 skb_pull(chunk->skb, sig_len); in sctp_sf_authenticate()
4044 sctp_auth_calculate_hmac(asoc, chunk->skb, in sctp_sf_authenticate()
4045 (struct sctp_auth_chunk *)chunk->chunk_hdr, in sctp_sf_authenticate()
4055 chunk->auth = 1; in sctp_sf_authenticate()
4070 struct sctp_chunk *chunk = arg; in sctp_sf_eat_auth() local
4078 if (!sctp_vtag_verify(chunk, asoc)) { in sctp_sf_eat_auth()
4085 if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_auth_chunk))) in sctp_sf_eat_auth()
4089 auth_hdr = (struct sctp_authhdr *)chunk->skb->data; in sctp_sf_eat_auth()
4090 error = sctp_sf_authenticate(net, ep, asoc, type, chunk); in sctp_sf_eat_auth()
4096 err_chunk = sctp_make_op_error(asoc, chunk, in sctp_sf_eat_auth()
4170 pr_debug("%s: processing unknown chunk id:%d\n", __func__, type.chunk); in sctp_sf_unk_chunk()
4183 switch (type.chunk & SCTP_CID_ACTION_MASK) { in sctp_sf_unk_chunk()
4246 struct sctp_chunk *chunk = arg; in sctp_sf_discard_chunk() local
4252 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_discard_chunk()
4256 pr_debug("%s: chunk:%d is discarded\n", __func__, type.chunk); in sctp_sf_discard_chunk()
4314 struct sctp_chunk *chunk = arg; in sctp_sf_violation() local
4317 if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t))) in sctp_sf_violation()
4337 struct sctp_chunk *chunk = arg; in sctp_sf_abort_violation() local
4355 abort = sctp_make_abort_violation(asoc, chunk, payload, paylen); in sctp_sf_abort_violation()
4361 if (chunk->chunk_hdr->type == SCTP_CID_INIT_ACK && in sctp_sf_abort_violation()
4365 initack = (sctp_initack_chunk_t *)chunk->chunk_hdr; in sctp_sf_abort_violation()
4366 if (!sctp_chunk_length_valid(chunk, in sctp_sf_abort_violation()
4396 packet = sctp_ootb_pkt_new(net, asoc, chunk); in sctp_sf_abort_violation()
4402 packet->vtag = ntohl(chunk->sctp_hdr->vtag); in sctp_sf_abort_violation()
4473 struct sctp_chunk *chunk = arg; in sctp_sf_violation_paramlen() local
4481 abort = sctp_make_violation_paramlen(asoc, chunk, param); in sctp_sf_violation_paramlen()
5165 struct sctp_chunk *chunk = arg; in sctp_sf_do_prm_asconf() local
5167 sctp_add_cmd_sf(commands, SCTP_CMD_SETUP_T4, SCTP_CHUNK(chunk)); in sctp_sf_do_prm_asconf()
5170 sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(chunk)); in sctp_sf_do_prm_asconf()
5313 struct sctp_chunk *chunk = (struct sctp_chunk *) arg; in sctp_sf_do_9_2_shutdown_ack() local
5323 if (chunk) { in sctp_sf_do_9_2_shutdown_ack()
5324 if (!sctp_vtag_verify(chunk, asoc)) in sctp_sf_do_9_2_shutdown_ack()
5328 if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_shutdown_chunk_t))) in sctp_sf_do_9_2_shutdown_ack()
5336 reply = sctp_make_shutdown_ack(asoc, chunk); in sctp_sf_do_9_2_shutdown_ack()
5715 struct sctp_chunk *chunk = asoc->addip_last_asconf; in sctp_sf_t4_timer_expire() local
5716 struct sctp_transport *transport = chunk->transport; in sctp_sf_t4_timer_expire()
5729 sctp_add_cmd_sf(commands, SCTP_CMD_SETUP_T4, SCTP_CHUNK(chunk)); in sctp_sf_t4_timer_expire()
5904 pr_debug("%s: timer %d ignored\n", __func__, type.chunk); in sctp_sf_timer_ignore()
5914 static struct sctp_sackhdr *sctp_sm_pull_sack(struct sctp_chunk *chunk) in sctp_sm_pull_sack() argument
5924 sack = (struct sctp_sackhdr *) chunk->skb->data; in sctp_sm_pull_sack()
5930 if (len > chunk->skb->len) in sctp_sm_pull_sack()
5933 skb_pull(chunk->skb, len); in sctp_sm_pull_sack()
5944 struct sctp_chunk *chunk, in sctp_abort_pkt_new() argument
5951 packet = sctp_ootb_pkt_new(net, asoc, chunk); in sctp_abort_pkt_new()
5957 abort = sctp_make_abort(asoc, chunk, paylen); in sctp_abort_pkt_new()
5965 packet->vtag = ntohl(chunk->sctp_hdr->vtag); in sctp_abort_pkt_new()
5985 const struct sctp_chunk *chunk) in sctp_ootb_pkt_new() argument
5994 sport = ntohs(chunk->sctp_hdr->dest); in sctp_ootb_pkt_new()
5995 dport = ntohs(chunk->sctp_hdr->source); in sctp_ootb_pkt_new()
6004 switch (chunk->chunk_hdr->type) { in sctp_ootb_pkt_new()
6009 initack = (sctp_initack_chunk_t *)chunk->chunk_hdr; in sctp_ootb_pkt_new()
6021 switch (chunk->chunk_hdr->type) { in sctp_ootb_pkt_new()
6026 init = (sctp_init_chunk_t *)chunk->chunk_hdr; in sctp_ootb_pkt_new()
6031 vtag = ntohl(chunk->sctp_hdr->vtag); in sctp_ootb_pkt_new()
6037 transport = sctp_transport_new(net, sctp_source(chunk), GFP_ATOMIC); in sctp_ootb_pkt_new()
6044 sctp_transport_route(transport, (union sctp_addr *)&chunk->dest, in sctp_ootb_pkt_new()
6066 const struct sctp_chunk *chunk, in sctp_send_stale_cookie_err() argument
6073 packet = sctp_ootb_pkt_new(net, asoc, chunk); in sctp_send_stale_cookie_err()
6078 cookie = chunk->subh.cookie_hdr; in sctp_send_stale_cookie_err()
6095 struct sctp_chunk *chunk, in sctp_eat_data() argument
6111 data_hdr = chunk->subh.data_hdr = (sctp_datahdr_t *)chunk->skb->data; in sctp_eat_data()
6112 skb_pull(chunk->skb, sizeof(sctp_datahdr_t)); in sctp_eat_data()
6129 if (!chunk->ecn_ce_done) { in sctp_eat_data()
6131 chunk->ecn_ce_done = 1; in sctp_eat_data()
6134 ipver2af(ip_hdr(chunk->skb)->version)); in sctp_eat_data()
6136 if (af && af->is_ce(chunk->skb) && asoc->peer.ecn_capable) { in sctp_eat_data()
6148 if (chunk->asoc) in sctp_eat_data()
6149 chunk->asoc->stats.outofseqtsns++; in sctp_eat_data()
6162 datalen = ntohs(chunk->chunk_hdr->length); in sctp_eat_data()
6181 if ((!chunk->data_accepted) && (!asoc->rwnd || asoc->rwnd_over || in sctp_eat_data()
6227 err = sctp_make_abort_no_data(asoc, chunk, tsn); in sctp_eat_data()
6245 chunk->data_accepted = 1; in sctp_eat_data()
6250 if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) { in sctp_eat_data()
6252 if (chunk->asoc) in sctp_eat_data()
6253 chunk->asoc->stats.iuodchunks++; in sctp_eat_data()
6256 if (chunk->asoc) in sctp_eat_data()
6257 chunk->asoc->stats.iodchunks++; in sctp_eat_data()
6274 err = sctp_make_op_error(asoc, chunk, SCTP_ERROR_INV_STRM, in sctp_eat_data()
6300 sctp_add_cmd_sf(commands, deliver, SCTP_CHUNK(chunk)); in sctp_eat_data()