FreeBSD kernel IPv4 code
|
#include <sys/cdefs.h>
#include <netinet/sctp_os.h>
#include <sys/proc.h>
#include <netinet/sctp_var.h>
#include <netinet/sctp_sysctl.h>
#include <netinet/sctp_header.h>
#include <netinet/sctp_pcb.h>
#include <netinet/sctputil.h>
#include <netinet/sctp_output.h>
#include <netinet/sctp_uio.h>
#include <netinet/sctp_auth.h>
#include <netinet/sctp_timer.h>
#include <netinet/sctp_asconf.h>
#include <netinet/sctp_indata.h>
#include <netinet/sctp_bsd_addr.h>
#include <netinet/sctp_input.h>
#include <netinet/sctp_crc32.h>
#include <netinet/sctp_lock_bsd.h>
Go to the source code of this file.
Functions | |
__FBSDID ("$FreeBSD$") | |
static uint32_t | sctp_add_chk_to_control (struct sctp_queued_to_read *control, struct sctp_stream_in *strm, struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_tmit_chunk *chk, int hold_rlock) |
void | sctp_set_rwnd (struct sctp_tcb *stcb, struct sctp_association *asoc) |
uint32_t | sctp_calc_rwnd (struct sctp_tcb *stcb, struct sctp_association *asoc) |
struct sctp_queued_to_read * | sctp_build_readq_entry (struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t tsn, uint32_t ppid, uint32_t context, uint16_t sid, uint32_t mid, uint8_t flags, struct mbuf *dm) |
struct mbuf * | sctp_build_ctl_nchunk (struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) |
static void | sctp_mark_non_revokable (struct sctp_association *asoc, uint32_t tsn) |
static int | sctp_place_control_in_stream (struct sctp_stream_in *strm, struct sctp_association *asoc, struct sctp_queued_to_read *control) |
static void | sctp_abort_in_reasm (struct sctp_tcb *stcb, struct sctp_queued_to_read *control, struct sctp_tmit_chunk *chk, int *abort_flag, int opspot) |
static void | sctp_clean_up_control (struct sctp_tcb *stcb, struct sctp_queued_to_read *control) |
static void | sctp_queue_data_to_stream (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_queued_to_read *control, int *abort_flag, int *need_reasm) |
static void | sctp_setup_tail_pointer (struct sctp_queued_to_read *control) |
static void | sctp_add_to_tail_pointer (struct sctp_queued_to_read *control, struct mbuf *m, uint32_t *added) |
static void | sctp_build_readq_entry_from_ctl (struct sctp_queued_to_read *nc, struct sctp_queued_to_read *control) |
static void | sctp_reset_a_control (struct sctp_queued_to_read *control, struct sctp_inpcb *inp, uint32_t tsn) |
static int | sctp_handle_old_unordered_data (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm, struct sctp_queued_to_read *control, uint32_t pd_point, int inp_read_lock_held) |
static void | sctp_inject_old_unordered_data (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_queued_to_read *control, struct sctp_tmit_chunk *chk, int *abort_flag) |
static int | sctp_deliver_reasm_check (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm, int inp_read_lock_held) |
static void | sctp_queue_data_for_reasm (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_queued_to_read *control, struct sctp_tmit_chunk *chk, int created_control, int *abort_flag, uint32_t tsn) |
static struct sctp_queued_to_read * | sctp_find_reasm_entry (struct sctp_stream_in *strm, uint32_t mid, int ordered, int idata_supported) |
static int | sctp_process_a_data_chunk (struct sctp_tcb *stcb, struct sctp_association *asoc, struct mbuf **m, int offset, int chk_length, struct sctp_nets *net, uint32_t *high_tsn, int *abort_flag, int *break_flag, int last_chunk, uint8_t chk_type) |
void | sctp_slide_mapping_arrays (struct sctp_tcb *stcb) |
void | sctp_sack_check (struct sctp_tcb *stcb, int was_a_gap) |
int | sctp_process_data (struct mbuf **mm, int iphlen, int *offset, int length, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t *high_tsn) |
static int | sctp_process_segment_range (struct sctp_tcb *stcb, struct sctp_tmit_chunk **p_tp1, uint32_t last_tsn, uint16_t frag_strt, uint16_t frag_end, int nr_sacking, int *num_frs, uint32_t *biggest_newly_acked_tsn, uint32_t *this_sack_lowest_newack, int *rto_ok) |
static int | sctp_handle_segments (struct mbuf *m, int *offset, struct sctp_tcb *stcb, struct sctp_association *asoc, uint32_t last_tsn, uint32_t *biggest_tsn_acked, uint32_t *biggest_newly_acked_tsn, uint32_t *this_sack_lowest_newack, int num_seg, int num_nr_seg, int *rto_ok) |
static void | sctp_check_for_revoked (struct sctp_tcb *stcb, struct sctp_association *asoc, uint32_t cumack, uint32_t biggest_tsn_acked) |
static void | sctp_strike_gap_ack_chunks (struct sctp_tcb *stcb, struct sctp_association *asoc, uint32_t biggest_tsn_acked, uint32_t biggest_tsn_newly_acked, uint32_t this_sack_lowest_newack, int accum_moved) |
struct sctp_tmit_chunk * | sctp_try_advance_peer_ack_point (struct sctp_tcb *stcb, struct sctp_association *asoc) |
static int | sctp_fs_audit (struct sctp_association *asoc) |
static void | sctp_window_probe_recovery (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_tmit_chunk *tp1) |
void | sctp_express_handle_sack (struct sctp_tcb *stcb, uint32_t cumack, uint32_t rwnd, int *abort_now, int ecne_seen) |
void | sctp_handle_sack (struct mbuf *m, int offset_seg, int offset_dup, struct sctp_tcb *stcb, uint16_t num_seg, uint16_t num_nr_seg, uint16_t num_dup, int *abort_now, uint8_t flags, uint32_t cum_ack, uint32_t rwnd, int ecne_seen) |
void | sctp_update_acked (struct sctp_tcb *stcb, struct sctp_shutdown_chunk *cp, int *abort_flag) |
static void | sctp_kick_prsctp_reorder_queue (struct sctp_tcb *stcb, struct sctp_stream_in *strmin) |
static void | sctp_flush_reassm_for_str_seq (struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm, struct sctp_queued_to_read *control, int ordered, uint32_t cumtsn) |
void | sctp_handle_forward_tsn (struct sctp_tcb *stcb, struct sctp_forward_tsn_chunk *fwd, int *abort_flag, struct mbuf *m, int offset) |
Variables | |
static const int8_t | sctp_map_lookup_tab [256] |
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 416 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_tmit_chunk::data, sctp_data_chunkrec::fsn, sctp_queued_to_read::fsn_included, sctp_association::idata_supported, sctp_inpcb::last_abort_code, sctp_data_chunkrec::mid, sctp_tmit_chunk::rec, sctp_abort_an_association(), SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_DIAG_INFO_LEN, sctp_tcb::sctp_ep, sctp_free_a_chunk, SCTP_FROM_SCTP_INDATA, sctp_generate_cause(), SCTP_LOC_1, sctp_m_freem, SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, sctp_data_chunkrec::sid, and sctp_data_chunkrec::tsn.
Referenced by sctp_inject_old_unordered_data(), and sctp_queue_data_for_reasm().
|
static |
Definition at line 1285 of file sctp_indata.c.
References sctp_association::cnt_on_all_streams, sctp_association::cnt_on_reasm_queue, sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_queued_to_read::end_added, sctp_queued_to_read::first_frag_seen, sctp_data_chunkrec::fsn, sctp_queued_to_read::fsn_included, sctp_stream_in::inqueue, sctp_queued_to_read::last_frag_seen, sctp_queued_to_read::on_read_q, sctp_queued_to_read::on_strm_q, sctp_stream_in::pd_api_started, sctp_queued_to_read::pdapi_started, sctp_data_chunkrec::ppid, sctp_data_chunkrec::rcv_flags, sctp_tmit_chunk::rec, sctp_add_to_tail_pointer(), SCTP_DATA_FIRST_FRAG, SCTP_DATA_LAST_FRAG, sctp_tcb::sctp_ep, sctp_free_a_chunk, SCTP_INP_READ_LOCK, SCTP_INP_READ_UNLOCK, sctp_mark_non_revokable(), SCTP_ON_ORDERED, SCTP_ON_UNORDERED, sctp_setup_tail_pointer(), SCTP_SO_NOT_LOCKED, sctp_ucount_decr, sctp_tmit_chunk::send_size, sctp_queued_to_read::sinfo_ppid, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_reasm_queue, sctp_queued_to_read::stcb, sctp_data_chunkrec::tsn, and sctp_stream_in::uno_inqueue.
Referenced by sctp_flush_reassm_for_str_seq(), sctp_handle_old_unordered_data(), and sctp_queue_data_for_reasm().
|
static |
Definition at line 675 of file sctp_indata.c.
References sctp_queued_to_read::data, sctp_queued_to_read::length, sctp_queued_to_read::on_read_q, SCTP_BUF_LEN, SCTP_BUF_NEXT, sctp_m_free, sctp_m_freem, sctp_sballoc, sctp_setup_tail_pointer(), sctp_tcb::sctp_socket, sctp_queued_to_read::stcb, and sctp_queued_to_read::tail_mbuf.
Referenced by sctp_add_chk_to_control().
struct mbuf * sctp_build_ctl_nchunk | ( | struct sctp_inpcb * | inp, |
struct sctp_sndrcvinfo * | sinfo | ||
) |
Definition at line 172 of file sctp_indata.c.
References IPPROTO_SCTP, sctp_nxtinfo::nxt_assoc_id, sctp_nxtinfo::nxt_flags, sctp_nxtinfo::nxt_length, sctp_nxtinfo::nxt_ppid, sctp_nxtinfo::nxt_sid, sctp_rcvinfo::rcv_assoc_id, sctp_rcvinfo::rcv_context, sctp_rcvinfo::rcv_cumtsn, sctp_rcvinfo::rcv_flags, sctp_rcvinfo::rcv_ppid, sctp_rcvinfo::rcv_sid, sctp_rcvinfo::rcv_ssn, sctp_rcvinfo::rcv_tsn, SCTP_BUF_LEN, SCTP_COMPLETE, SCTP_EXTRCV, sctp_get_mbuf_for_msg(), sctp_is_feature_off, sctp_is_feature_on, SCTP_NEXT_MSG_AVAIL, SCTP_NEXT_MSG_IS_NOTIFICATION, SCTP_NEXT_MSG_IS_UNORDERED, SCTP_NEXT_MSG_ISCOMPLETE, SCTP_NOTIFICATION, SCTP_NXTINFO, SCTP_PCB_FLAGS_EXT_RCVINFO, SCTP_PCB_FLAGS_RECVDATAIOEVNT, SCTP_PCB_FLAGS_RECVNXTINFO, SCTP_PCB_FLAGS_RECVRCVINFO, SCTP_RCVINFO, SCTP_SNDRCV, SCTP_UNORDERED, sctp_extrcvinfo::serinfo_next_aid, sctp_extrcvinfo::serinfo_next_flags, sctp_extrcvinfo::serinfo_next_length, sctp_extrcvinfo::serinfo_next_ppid, sctp_extrcvinfo::serinfo_next_stream, sctp_sndrcvinfo::sinfo_assoc_id, sctp_sndrcvinfo::sinfo_context, sctp_sndrcvinfo::sinfo_cumtsn, sctp_sndrcvinfo::sinfo_flags, sctp_sndrcvinfo::sinfo_ppid, sctp_sndrcvinfo::sinfo_ssn, sctp_sndrcvinfo::sinfo_stream, and sctp_sndrcvinfo::sinfo_tsn.
Referenced by sctp_soreceive().
struct sctp_queued_to_read * sctp_build_readq_entry | ( | struct sctp_tcb * | stcb, |
struct sctp_nets * | net, | ||
uint32_t | tsn, | ||
uint32_t | ppid, | ||
uint32_t | context, | ||
uint16_t | sid, | ||
uint32_t | mid, | ||
uint8_t | flags, | ||
struct mbuf * | dm | ||
) |
Definition at line 135 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_queued_to_read::data, sctp_queued_to_read::do_not_ref_stcb, sctp_queued_to_read::fsn_included, sctp_queued_to_read::mid, sctp_queued_to_read::port_from, sctp_queued_to_read::reasm, sctp_nets::ref_count, sctp_tcb::rport, sctp_alloc_a_readq, sctp_get_associd, SCTP_STATE_ABOUT_TO_BE_FREED, sctp_queued_to_read::sinfo_assoc_id, sctp_queued_to_read::sinfo_context, sctp_queued_to_read::sinfo_cumtsn, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_ppid, sctp_queued_to_read::sinfo_stream, sctp_queued_to_read::sinfo_tsn, sctp_association::state, sctp_queued_to_read::stcb, sctp_queued_to_read::top_fsn, and sctp_queued_to_read::whoFrom.
Referenced by sctp_notify_adaptation_layer(), sctp_notify_assoc_change(), sctp_notify_authentication(), sctp_notify_partial_delivery_indication(), sctp_notify_peer_addr_change(), sctp_notify_remote_error(), sctp_notify_send_failed(), sctp_notify_send_failed2(), sctp_notify_sender_dry_event(), sctp_notify_shutdown_event(), sctp_notify_stream_reset(), sctp_notify_stream_reset_add(), and sctp_notify_stream_reset_tsn().
|
static |
Definition at line 730 of file sctp_indata.c.
References sctp_queued_to_read::do_not_ref_stcb, sctp_queued_to_read::fsn_included, sctp_queued_to_read::mid, sctp_queued_to_read::port_from, sctp_queued_to_read::reasm, sctp_nets::ref_count, sctp_queued_to_read::sinfo_assoc_id, sctp_queued_to_read::sinfo_context, sctp_queued_to_read::sinfo_cumtsn, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_ppid, sctp_queued_to_read::sinfo_stream, sctp_queued_to_read::sinfo_tsn, sctp_queued_to_read::stcb, sctp_queued_to_read::top_fsn, and sctp_queued_to_read::whoFrom.
Referenced by sctp_handle_old_unordered_data().
uint32_t sctp_calc_rwnd | ( | struct sctp_tcb * | stcb, |
struct sctp_association * | asoc | ||
) |
Definition at line 79 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_association::cnt_on_all_streams, sctp_association::cnt_on_reasm_queue, sctp_association::my_rwnd_control_len, sctp_association::sb_cc, SCTP_MINIMAL_RWND, SCTP_SB_LIMIT_RCV, sctp_sbspace, sctp_sbspace_sub, sctp_tcb::sctp_socket, sctp_association::size_on_all_streams, and sctp_association::size_on_reasm_queue.
Referenced by sctp_set_rwnd(), and sctp_user_rcvd().
|
static |
Definition at line 3244 of file sctp_indata.c.
References sctp_tmit_chunk::asoc, sctp_tmit_chunk::book_size, sctp_data_chunkrec::chunk_was_revoked, sctp_nets::cwnd, sctp_tmit_chunk::data, sctp_nets::flight_size, sctp_association::last_acked_seq, sctp_tmit_chunk::rec, SCTP_BASE_SYSCTL, SCTP_DATAGRAM_ACKED, SCTP_DATAGRAM_MARKED, SCTP_DATAGRAM_SENT, SCTP_DATAGRAM_UNSENT, SCTP_FLIGHT_LOG_UP_REVOKE, SCTP_FLIGHT_LOGGING_ENABLE, sctp_flight_size_increase, sctp_log_sack(), SCTP_LOG_TSN_REVOKED, sctp_misc_ints(), SCTP_SACK_LOGGING_ENABLE, sctp_total_flight_increase, SCTP_TSN_GT, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_data_chunkrec::tsn, and sctp_tmit_chunk::whoTo.
Referenced by sctp_handle_sack().
|
static |
Definition at line 452 of file sctp_indata.c.
References sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_queued_to_read::reasm, sctp_free_a_chunk, sctp_free_a_readq, sctp_free_remote_addr, sctp_m_freem, SCTP_SO_NOT_LOCKED, and sctp_queued_to_read::whoFrom.
Referenced by sctp_queue_data_for_reasm(), and sctp_queue_data_to_stream().
|
static |
Definition at line 1051 of file sctp_indata.c.
References sctp_association::cnt_on_all_streams, sctp_queued_to_read::end_added, sctp_queued_to_read::first_frag_seen, sctp_queued_to_read::fsn_included, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_queued_to_read::last_frag_seen, sctp_stream_in::last_mid_delivered, sctp_queued_to_read::length, sctp_queued_to_read::mid, sctp_queued_to_read::on_read_q, sctp_queued_to_read::on_strm_q, sctp_inpcb::partial_delivery_point, sctp_stream_in::pd_api_started, sctp_queued_to_read::pdapi_started, sctp_add_to_readq(), SCTP_DATA_NOT_FRAG, SCTP_DEBUG_XXX, sctp_tcb::sctp_ep, sctp_handle_old_unordered_data(), sctp_mark_non_revokable(), SCTP_MID_EQ, SCTP_ON_ORDERED, SCTP_ON_UNORDERED, SCTP_PARTIAL_DELIVERY_SHIFT, SCTP_SB_LIMIT_RCV, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, SCTP_STAT_INCR_COUNTER64, sctp_ucount_decr, SCTPDBG, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_all_streams, sctp_queued_to_read::stcb, sctp_queued_to_read::top_fsn, and sctp_stream_in::uno_inqueue.
Referenced by sctp_flush_reassm_for_str_seq(), sctp_kick_prsctp_reorder_queue(), and sctp_process_a_data_chunk().
void sctp_express_handle_sack | ( | struct sctp_tcb * | stcb, |
uint32_t | cumack, | ||
uint32_t | rwnd, | ||
int * | abort_now, | ||
int | ecne_seen | ||
) |
Definition at line 3924 of file sctp_indata.c.
References sctp_association::advanced_peer_ack_point, sctp_association::alternate, sctp_tcb::asoc, sctp_tmit_chunk::asoc, sctp_tmit_chunk::book_size, sctp_association::cc_functions, sctp_data_chunkrec::chunk_was_revoked, sctp_stream_out::chunks_on_queues, sctp_nets::cwnd, sctp_nets::cwr_window_tsn, sctp_tmit_chunk::data, sctp_nets::dest_state, sctp_tmit_chunk::do_rtt, sctp_nets::error_count, sctp_nets::find_pseudo_cumack, sctp_nets::find_rtx_pseudo_cumack, sctp_nets::flight_size, sctp_data_chunkrec::fwd_tsn_cnt, sctp_inpcb::last_abort_code, sctp_association::last_acked_seq, sctp_nets::lastsa, sctp_nets::lastsv, sctp_association::maxrto, sctp_association::minrto, sctp_nets::net_ack, sctp_nets::net_ack2, sctp_association::nets, sctp_nets::new_pseudo_cumack, sctp_stream_out::outqueue, sctp_association::overall_error_count, sctp_nets::partial_bytes_acked, sctp_association::peers_rwnd, sctp_association::pr_sctp_cnt, sctp_nets::prev_cwnd, sctp_association::primary_destination, sctp_association::prsctp_supported, sctp_tmit_chunk::rec, sctp_nets::RTO, sctp_nets::rto_needed, sctp_nets::rxt_timer, sctp_abort_an_association(), SCTP_ADD_SUBSTATE, SCTP_ADDR_PF, SCTP_ADDR_REACHABLE, SCTP_BASE_SYSCTL, sctp_calculate_rto(), SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_CAUSE_USER_INITIATED_ABT, SCTP_CWND_LOG_FROM_SACK, SCTP_CWND_LOGGING_ENABLE, sctp_cc_functions::sctp_cwnd_prepare_net_for_sack, sctp_cc_functions::sctp_cwnd_update_after_sack, sctp_cc_functions::sctp_cwnd_update_exit_pf, sctp_cc_functions::sctp_cwnd_update_tsn_acknowledged, SCTP_DATAGRAM_ACKED, SCTP_DATAGRAM_NR_ACKED, SCTP_DATAGRAM_RESEND, SCTP_DATAGRAM_UNSENT, SCTP_DIAG_INFO_LEN, sctp_inpcb::sctp_ep, sctp_tcb::sctp_ep, SCTP_FLIGHT_LOG_DOWN_CA, SCTP_FLIGHT_LOGGING_ENABLE, sctp_flight_size_decrease, sctp_flight_size_increase, sctp_free_a_chunk, sctp_free_bufspace, sctp_free_remote_addr, SCTP_FROM_SCTP_INDATA, sctp_fs_audit(), sctp_generate_cause(), SCTP_GET_STATE, SCTP_LOC_25, SCTP_LOC_26, SCTP_LOC_27, SCTP_LOC_28, sctp_log_cwnd(), SCTP_LOG_FREE_SENT, sctp_log_sack(), SCTP_LOG_SACK_ARRIVALS_ENABLE, sctp_m_freem, sctp_misc_ints(), SCTP_NOTIFY_INTERFACE_UP, SCTP_NOWAKE_FROM_SACK, SCTP_OS_TIMER_PENDING, SCTP_PRINTF, SCTP_RTT_FROM_DATA, SCTP_RTT_SHIFT, SCTP_SACK_LOG_EXPRESS, SCTP_SACK_LOGGING_ENABLE, SCTP_SACK_RWND_LOGGING_ENABLE, SCTP_SACK_RWND_UPDATE, sctp_sbspace_sub, sctp_send_shutdown(), sctp_send_shutdown_ack(), SCTP_SET_STATE, SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, sctp_sowwakeup_locked, sctp_ss_functions::sctp_ss_is_user_msgs_incomplete, SCTP_STAT_DECR_GAUGE32, SCTP_STATE_OPEN, SCTP_STATE_PARTIAL_MSG_LEFT, SCTP_STATE_SHUTDOWN_ACK_SENT, SCTP_STATE_SHUTDOWN_PENDING, SCTP_STATE_SHUTDOWN_RECEIVED, SCTP_STATE_SHUTDOWN_SENT, sctp_stop_timers_for_shutdown(), SCTP_STREAM_RESET_PENDING, sctp_pcb::sctp_sws_sender, SCTP_TCB_LOCK_ASSERT, SCTP_THRESHOLD_CLEAR, SCTP_THRESHOLD_LOGGING, sctp_timer_start(), sctp_timer_stop(), SCTP_TIMER_TYPE_HEARTBEAT, SCTP_TIMER_TYPE_SEND, SCTP_TIMER_TYPE_SHUTDOWN, SCTP_TIMER_TYPE_SHUTDOWNACK, SCTP_TIMER_TYPE_SHUTDOWNGUARD, sctp_total_flight_decrease, sctp_total_flight_increase, sctp_try_advance_peer_ack_point(), SCTP_TSN_GE, SCTP_TSN_GT, SCTP_TSN_LOG_SIZE, sctp_ucount_decr, sctp_ucount_incr, sctp_ulp_notify(), SCTP_WAKE_LOGGING_ENABLE, SCTP_WAKESND_FROM_SACK, sctp_wakeup_log(), sctp_window_probe_recovery(), send_forward_tsn(), sctp_association::send_queue, sctp_tmit_chunk::send_size, sctp_association::sending_seq, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_association::sent_queue_cnt, sctp_association::sent_queue_retran_cnt, sctp_tmit_chunk::sent_rcv_time, sctp_data_chunkrec::sid, sctp_tmit_chunk::snd_count, sctp_association::ss_functions, sctp_stream_out::state, sctp_association::state, sctp_association::stream_queue_cnt, sctp_association::strmout, sctp_association::this_sack_highest_gap, sctp_timer::timer, sctp_association::total_flight, sctp_association::total_flight_count, sctp_association::total_output_queue_size, sctp_association::trigger_reset, sctp_data_chunkrec::tsn, sctp_tmit_chunk::whoTo, sctp_nets::will_exit_fast_recovery, sctp_nets::window_probe, and sctp_tmit_chunk::window_probe.
Referenced by sctp_process_control(), and sctp_update_acked().
|
static |
Definition at line 1665 of file sctp_indata.c.
References sctp_stream_in::inqueue, sctp_queued_to_read::mid, SCTP_MID_EQ, and sctp_stream_in::uno_inqueue.
Referenced by sctp_process_a_data_chunk().
|
static |
Definition at line 5383 of file sctp_indata.c.
References sctp_tmit_chunk::asoc, sctp_association::cnt_on_all_streams, sctp_association::cnt_on_reasm_queue, sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_queued_to_read::first_frag_seen, sctp_queued_to_read::fsn_included, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_queued_to_read::length, sctp_queued_to_read::on_read_q, sctp_queued_to_read::on_strm_q, sctp_data_chunkrec::rcv_flags, sctp_queued_to_read::reasm, sctp_tmit_chunk::rec, sctp_add_chk_to_control(), SCTP_DATA_FIRST_FRAG, sctp_deliver_reasm_check(), sctp_tcb::sctp_ep, sctp_free_a_chunk, sctp_free_a_readq, sctp_free_remote_addr, sctp_m_freem, SCTP_ON_ORDERED, SCTP_ON_UNORDERED, SCTP_READ_LOCK_HELD, sctp_reset_a_control(), SCTP_SO_NOT_LOCKED, SCTP_TSN_GT, sctp_ucount_decr, sctp_tmit_chunk::send_size, sctp_association::size_on_all_streams, sctp_association::size_on_reasm_queue, sctp_data_chunkrec::tsn, sctp_stream_in::uno_inqueue, and sctp_queued_to_read::whoFrom.
Referenced by sctp_handle_forward_tsn().
|
static |
Definition at line 3838 of file sctp_indata.c.
References sctp_tmit_chunk::asoc, sctp_tmit_chunk::data, sctp_association::pr_sctp_cnt, sctp_tmit_chunk::rec, SCTP_DATAGRAM_ACKED, SCTP_DATAGRAM_RESEND, SCTP_PRINTF, sctp_tmit_chunk::send_size, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_association::sent_queue_cnt, sctp_tmit_chunk::snd_count, sctp_association::total_flight, sctp_association::total_flight_count, and sctp_data_chunkrec::tsn.
Referenced by sctp_express_handle_sack(), and sctp_handle_sack().
void sctp_handle_forward_tsn | ( | struct sctp_tcb * | stcb, |
struct sctp_forward_tsn_chunk * | fwd, | ||
int * | abort_flag, | ||
struct mbuf * | m, | ||
int | offset | ||
) |
Definition at line 5476 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_forward_tsn_chunk::ch, sctp_chunkhdr::chunk_length, sctp_association::cnt_on_all_streams, sctp_association::control_pdapi, sctp_association::cumulative_tsn, sctp_queued_to_read::end_added, sctp_strseq_mid::flags, sctp_association::fragmented_delivery_inprogress, sctp_association::highest_tsn_inside_map, sctp_association::highest_tsn_inside_nr_map, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_inpcb::last_abort_code, sctp_stream_in::last_mid_delivered, sctp_queued_to_read::length, sctp_association::mapping_array, sctp_association::mapping_array_base_tsn, sctp_association::mapping_array_size, sctp_strseq_mid::mid, sctp_queued_to_read::mid, sctp_forward_tsn_chunk::new_cumulative_tsn, next, sctp_association::nr_mapping_array, sctp_queued_to_read::on_strm_q, sctp_queued_to_read::pdapi_aborted, PR_SCTP_UNORDERED_FLAG, sctp_inpcb::read_queue, sctp_abort_an_association(), SCTP_BASE_SYSCTL, SCTP_CALC_TSN_TO_GAP, SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_DEBUG_INDATA1, SCTP_DIAG_INFO_LEN, sctp_tcb::sctp_ep, sctp_flush_reassm_for_str_seq(), SCTP_FROM_SCTP_INDATA, sctp_generate_cause(), SCTP_INP_READ_LOCK, SCTP_INP_READ_UNLOCK, SCTP_IS_TSN_PRESENT, sctp_kick_prsctp_reorder_queue(), SCTP_LOC_37, sctp_log_map(), sctp_m_getptr(), SCTP_MAP_LOGGING_ENABLE, SCTP_MAP_SLIDE_RESULT, SCTP_MID_EQ, SCTP_MID_GE, SCTP_MID_GT, SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION, SCTP_ON_ORDERED, SCTP_ON_UNORDERED, SCTP_PARTIAL_DELIVERY_ABORTED, sctp_sbspace, SCTP_SET_TSN_PRESENT, sctp_slide_mapping_arrays(), SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, SCTP_STAT_INCR, SCTP_TCB_LOCK_ASSERT, SCTP_TSN_GE, SCTP_TSN_GT, sctp_ucount_decr, sctp_ulp_notify(), SCTPDBG, sctp_strseq::sid, sctp_strseq_mid::sid, sctp_queued_to_read::sinfo_stream, sctp_association::size_on_all_streams, sctp_strseq::ssn, sctp_association::ssn_of_pdapi, sctp_queued_to_read::stcb, sctp_association::str_of_pdapi, sctp_association::streamincnt, sctp_association::strmin, and sctp_stream_in::uno_inqueue.
Referenced by sctp_handle_str_reset_request_tsn(), sctp_handle_stream_reset_response(), and sctp_process_control().
|
static |
Definition at line 768 of file sctp_indata.c.
References sctp_association::cnt_on_reasm_queue, sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_queued_to_read::end_added, sctp_queued_to_read::first_frag_seen, sctp_data_chunkrec::fsn, sctp_queued_to_read::fsn_included, sctp_queued_to_read::length, sctp_queued_to_read::on_read_q, sctp_queued_to_read::on_strm_q, sctp_stream_in::pd_api_started, sctp_queued_to_read::pdapi_started, sctp_data_chunkrec::ppid, sctp_data_chunkrec::rcv_flags, sctp_queued_to_read::reasm, sctp_tmit_chunk::rec, sctp_add_chk_to_control(), sctp_add_to_readq(), sctp_alloc_a_readq, sctp_build_readq_entry_from_ctl(), SCTP_DATA_FIRST_FRAG, sctp_tcb::sctp_ep, sctp_free_a_chunk, sctp_free_a_readq, sctp_mark_non_revokable(), SCTP_ON_UNORDERED, sctp_setup_tail_pointer(), SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, SCTP_STAT_INCR_COUNTER64, sctp_ucount_decr, sctp_wakeup_the_read_socket(), sctp_tmit_chunk::send_size, sctp_queued_to_read::sinfo_ppid, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_reasm_queue, sctp_queued_to_read::stcb, sctp_data_chunkrec::tsn, and sctp_stream_in::uno_inqueue.
Referenced by sctp_deliver_reasm_check().
void sctp_handle_sack | ( | struct mbuf * | m, |
int | offset_seg, | ||
int | offset_dup, | ||
struct sctp_tcb * | stcb, | ||
uint16_t | num_seg, | ||
uint16_t | num_nr_seg, | ||
uint16_t | num_dup, | ||
int * | abort_now, | ||
uint8_t | flags, | ||
uint32_t | cum_ack, | ||
uint32_t | rwnd, | ||
int | ecne_seen | ||
) |
Definition at line 4401 of file sctp_indata.c.
References sctp_association::advanced_peer_ack_point, sctp_association::alternate, sctp_tcb::asoc, sctp_tmit_chunk::asoc, sctp_tmit_chunk::book_size, sctp_association::cc_functions, sctp_data_chunkrec::chunk_was_revoked, sctp_stream_out::chunks_on_queues, sctp_nets::cwnd, sctp_nets::cwr_window_tsn, sctp_tmit_chunk::data, sctp_nets::dest_state, sctp_tmit_chunk::do_rtt, sctp_nets::error_count, sctp_association::fast_recovery_tsn, sctp_nets::fast_retran_loss_recovery, sctp_association::fast_retran_loss_recovery, sctp_nets::find_pseudo_cumack, sctp_nets::find_rtx_pseudo_cumack, sctp_tmit_chunk::flags, sctp_nets::flight_size, sctp_data_chunkrec::fwd_tsn_cnt, sctp_inpcb::last_abort_code, sctp_association::last_acked_seq, sctp_nets::lastsa, sctp_nets::lastsv, sctp_association::maxrto, sctp_association::minrto, sctp_nets::net_ack, sctp_nets::net_ack2, sctp_association::nets, sctp_nets::new_pseudo_cumack, sctp_stream_out::outqueue, sctp_association::overall_error_count, sctp_nets::partial_bytes_acked, sctp_association::peers_rwnd, PR_SCTP_BUF_ENABLED, sctp_association::pr_sctp_cnt, PR_SCTP_ENABLED, sctp_nets::prev_cwnd, sctp_association::primary_destination, sctp_association::prsctp_supported, sctp_tmit_chunk::rec, sctp_nets::RTO, sctp_nets::rto_needed, sctp_nets::rxt_timer, sctp_association::sat_t3_loss_recovery, sctp_association::sat_t3_recovery_tsn, sctp_nets::saw_newack, sctp_association::saw_sack_with_frags, sctp_association::saw_sack_with_nr_frags, sctp_abort_an_association(), SCTP_ADD_SUBSTATE, SCTP_ADDR_PF, SCTP_ADDR_REACHABLE, SCTP_ADDR_UNCONFIRMED, SCTP_BASE_SYSCTL, sctp_calculate_rto(), SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_CAUSE_USER_INITIATED_ABT, sctp_check_for_revoked(), sctp_association::sctp_cmt_on_off, SCTP_CWND_LOG_FROM_SACK, SCTP_CWND_LOGGING_ENABLE, sctp_cc_functions::sctp_cwnd_prepare_net_for_sack, sctp_cc_functions::sctp_cwnd_update_after_fr, sctp_cc_functions::sctp_cwnd_update_after_sack, sctp_cc_functions::sctp_cwnd_update_exit_pf, sctp_cc_functions::sctp_cwnd_update_tsn_acknowledged, SCTP_DATAGRAM_ACKED, SCTP_DATAGRAM_NR_ACKED, SCTP_DATAGRAM_RESEND, SCTP_DATAGRAM_SENT, SCTP_DATAGRAM_UNSENT, SCTP_DIAG_INFO_LEN, sctp_inpcb::sctp_ep, sctp_tcb::sctp_ep, SCTP_FLIGHT_LOG_DOWN_CA, SCTP_FLIGHT_LOG_UP_REVOKE, SCTP_FLIGHT_LOGGING_ENABLE, sctp_flight_size_decrease, sctp_flight_size_increase, SCTP_FR_DUPED, SCTP_FR_LOGGING_ENABLE, sctp_free_a_chunk, sctp_free_bufspace, sctp_free_remote_addr, SCTP_FROM_SCTP_INDATA, sctp_fs_audit(), SCTP_FWD_TSN_CHECK, sctp_generate_cause(), SCTP_GET_STATE, sctp_handle_segments(), SCTP_LOC_29, SCTP_LOC_30, SCTP_LOC_31, SCTP_LOC_32, SCTP_LOC_33, SCTP_LOC_34, SCTP_LOC_35, SCTP_LOC_36, sctp_log_cwnd(), sctp_log_fr(), SCTP_LOG_FREE_SENT, SCTP_LOG_NEW_SACK, SCTP_LOG_RWND_ENABLE, sctp_log_rwnd_set(), sctp_log_sack(), SCTP_LOG_SACK_ARRIVALS_ENABLE, SCTP_LOG_TRY_ADVANCE, SCTP_LOG_TSN_ACKED, sctp_m_freem, sctp_m_getptr(), sctp_misc_ints(), SCTP_NOTIFY_INTERFACE_UP, SCTP_NOWAKE_FROM_SACK, SCTP_OS_TIMER_PENDING, SCTP_PRINTF, SCTP_RTT_FROM_DATA, SCTP_RTT_SHIFT, SCTP_SACK_CMT_DAC, SCTP_SACK_LOG_NORMAL, SCTP_SACK_LOGGING_ENABLE, SCTP_SACK_RWND_LOGGING_ENABLE, SCTP_SACK_RWND_UPDATE, sctp_sbspace_sub, sctp_send_shutdown(), sctp_send_shutdown_ack(), SCTP_SET_PEER_RWND_VIA_SACK, SCTP_SET_STATE, SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, sctp_sowwakeup_locked, sctp_ss_functions::sctp_ss_is_user_msgs_incomplete, SCTP_STAT_DECR_GAUGE32, SCTP_STAT_INCR, SCTP_STATE_OPEN, SCTP_STATE_PARTIAL_MSG_LEFT, SCTP_STATE_SHUTDOWN_ACK_SENT, SCTP_STATE_SHUTDOWN_PENDING, SCTP_STATE_SHUTDOWN_RECEIVED, SCTP_STATE_SHUTDOWN_SENT, sctp_stop_timers_for_shutdown(), SCTP_STREAM_RESET_PENDING, sctp_strike_gap_ack_chunks(), sctp_pcb::sctp_sws_sender, SCTP_TCB_LOCK_ASSERT, SCTP_THRESHOLD_CLEAR, SCTP_THRESHOLD_LOGGING, sctp_timer_start(), sctp_timer_stop(), SCTP_TIMER_TYPE_HEARTBEAT, SCTP_TIMER_TYPE_SEND, SCTP_TIMER_TYPE_SHUTDOWN, SCTP_TIMER_TYPE_SHUTDOWNACK, SCTP_TIMER_TYPE_SHUTDOWNGUARD, sctp_total_flight_decrease, sctp_total_flight_increase, sctp_try_advance_peer_ack_point(), SCTP_TSN_GE, SCTP_TSN_GT, SCTP_TSN_LOG_SIZE, sctp_ucount_decr, sctp_ucount_incr, sctp_ulp_notify(), SCTP_WAKE_LOGGING_ENABLE, SCTP_WAKESND_FROM_SACK, sctp_wakeup_log(), sctp_window_probe_recovery(), send_forward_tsn(), sctp_association::send_queue, sctp_tmit_chunk::send_size, sctp_association::sending_seq, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_association::sent_queue_cnt, sctp_association::sent_queue_cnt_removeable, sctp_association::sent_queue_retran_cnt, sctp_tmit_chunk::sent_rcv_time, sctp_data_chunkrec::sid, sctp_tmit_chunk::snd_count, sctp_association::ss_functions, sctp_stream_out::state, sctp_association::state, sctp_association::stream_queue_cnt, sctp_association::strmout, sctp_association::this_sack_highest_gap, sctp_nets::this_sack_highest_newack, sctp_timer::timer, sctp_association::total_flight, sctp_association::total_flight_count, sctp_association::total_output_queue_size, sctp_association::trigger_reset, sctp_data_chunkrec::tsn, sctp_tmit_chunk::whoTo, sctp_nets::will_exit_fast_recovery, sctp_nets::window_probe, and sctp_tmit_chunk::window_probe.
Referenced by sctp_process_control().
|
static |
Definition at line 3180 of file sctp_indata.c.
References sctp_tmit_chunk::asoc, sctp_gap_ack_block::end, SCTP_BASE_SYSCTL, SCTP_FR_LOG_BIGGEST_TSNS, SCTP_FR_LOGGING_ENABLE, sctp_log_fr(), sctp_m_getptr(), sctp_process_segment_range(), SCTP_TSN_GT, sctp_association::sent_queue, and sctp_gap_ack_block::start.
Referenced by sctp_handle_sack().
|
static |
Definition at line 913 of file sctp_indata.c.
References sctp_association::cnt_on_reasm_queue, sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_queued_to_read::first_frag_seen, sctp_data_chunkrec::fsn, sctp_queued_to_read::fsn_included, sctp_queued_to_read::length, sctp_queued_to_read::pdapi_started, sctp_data_chunkrec::ppid, sctp_data_chunkrec::rcv_flags, sctp_queued_to_read::reasm, sctp_tmit_chunk::rec, sctp_abort_in_reasm(), SCTP_DATA_FIRST_FRAG, SCTP_DEBUG_XXX, sctp_free_a_chunk, SCTP_FROM_SCTP_INDATA, SCTP_LOC_4, SCTP_LOC_5, sctp_mark_non_revokable(), sctp_setup_tail_pointer(), SCTP_SO_NOT_LOCKED, SCTP_TSN_GT, sctp_ucount_incr, SCTPDBG, sctp_tmit_chunk::send_size, sctp_queued_to_read::sinfo_ppid, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_reasm_queue, sctp_queued_to_read::top_fsn, and sctp_data_chunkrec::tsn.
Referenced by sctp_queue_data_for_reasm().
|
static |
Definition at line 5236 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_association::cnt_on_all_streams, sctp_queued_to_read::first_frag_seen, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_stream_in::last_mid_delivered, sctp_queued_to_read::length, sctp_queued_to_read::mid, sctp_queued_to_read::on_strm_q, sctp_add_to_readq(), SCTP_DATA_NOT_FRAG, sctp_deliver_reasm_check(), sctp_tcb::sctp_ep, sctp_mark_non_revokable(), SCTP_MID_EQ, SCTP_MID_GE, SCTP_MID_GT, SCTP_ON_ORDERED, SCTP_ON_UNORDERED, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, sctp_ucount_decr, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_all_streams, sctp_association::strmin, and sctp_stream_in::uno_inqueue.
Referenced by sctp_handle_forward_tsn().
|
static |
Definition at line 286 of file sctp_indata.c.
References sctp_association::cumulative_tsn, sctp_association::highest_tsn_inside_map, sctp_association::highest_tsn_inside_nr_map, sctp_association::mapping_array, sctp_association::mapping_array_base_tsn, sctp_association::nr_mapping_array, SCTP_BASE_SYSCTL, SCTP_CALC_TSN_TO_GAP, SCTP_IS_TSN_PRESENT, SCTP_SET_TSN_PRESENT, SCTP_TSN_GE, SCTP_TSN_GT, and SCTP_UNSET_TSN_PRESENT.
Referenced by sctp_add_chk_to_control(), sctp_deliver_reasm_check(), sctp_handle_old_unordered_data(), sctp_inject_old_unordered_data(), sctp_kick_prsctp_reorder_queue(), sctp_process_a_data_chunk(), sctp_queue_data_for_reasm(), and sctp_queue_data_to_stream().
|
static |
Definition at line 330 of file sctp_indata.c.
References sctp_queued_to_read::end_added, sctp_queued_to_read::first_frag_seen, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_queued_to_read::last_frag_seen, sctp_queued_to_read::mid, sctp_queued_to_read::on_strm_q, SCTP_BASE_SYSCTL, SCTP_DATA_NOT_FRAG, SCTP_DATA_UNORDERED, sctp_log_strm_del(), SCTP_MID_EQ, SCTP_MID_GT, SCTP_ON_ORDERED, SCTP_ON_UNORDERED, SCTP_STR_LOG_FROM_INSERT_TL, SCTP_STR_LOGGING_ENABLE, sctp_queued_to_read::sinfo_flags, and sctp_stream_in::uno_inqueue.
Referenced by sctp_queue_data_for_reasm(), and sctp_queue_data_to_stream().
|
static |
Definition at line 1690 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_tmit_chunk::asoc, sctp_error_invalid_stream::cause, sctp_data_chunk::ch, sctp_idata_chunk::ch, sctp_chunkhdr::chunk_flags, sctp_association::cnt_msg_on_sb, sctp_association::cnt_on_all_streams, sctp_association::cnt_on_reasm_queue, sctp_error_cause::code, sctp_data_chunkrec::context, sctp_association::context, sctp_association::cumulative_tsn, sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_data_chunkrec::doing_fast_retransmit, sctp_data_chunk::dp, sctp_idata_chunk::dp, sctp_association::dup_tsns, sctp_queued_to_read::end_added, sctp_queued_to_read::first_frag_seen, sctp_idata::fsn, sctp_data_chunkrec::fsn, sctp_queued_to_read::fsn_included, sctp_association::highest_tsn_inside_map, sctp_association::highest_tsn_inside_nr_map, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_inpcb::last_abort_code, sctp_queued_to_read::last_frag_seen, sctp_stream_in::last_mid_delivered, sctp_error_cause::length, sctp_queued_to_read::length, sctp_stream_reset_list::list_of_streams, sctp_association::mapping_array, sctp_association::mapping_array_base_tsn, sctp_association::mapping_array_size, sctp_idata::mid, sctp_data_chunkrec::mid, sctp_queued_to_read::mid, sctp_association::my_rwnd, next, sctp_tmit_chunk::no_fr_allowed, sctp_association::nr_mapping_array, sctp_stream_reset_list::number_entries, sctp_association::numduptsns, sctp_association::pending_reply_queue, sctp_data::ppid, sctp_idata::ppid, sctp_data_chunkrec::ppid, sctp_idata::ppid_fsn, sctp_data_chunkrec::rcv_flags, sctp_tmit_chunk::rec, sctp_nets::ref_count, sctp_association::resetHead, sctp_abort_an_association(), sctp_add_to_readq(), sctp_alloc_a_chunk, sctp_alloc_a_readq, SCTP_BASE_SYSCTL, SCTP_BUF_LEN, SCTP_BUF_NEXT, SCTP_BUF_RESV_UF, sctp_build_readq_entry_mac, SCTP_CALC_TSN_TO_GAP, SCTP_CAUSE_INVALID_STREAM, SCTP_CAUSE_OUT_OF_RESC, SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_DATA, SCTP_DATA_FIRST_FRAG, SCTP_DATA_NOT_FRAG, SCTP_DATA_SACK_IMMEDIATELY, SCTP_DATA_UNORDERED, SCTP_DEBUG_INDATA1, SCTP_DEBUG_XXX, sctp_deliver_reasm_check(), SCTP_DIAG_INFO_LEN, sctp_tcb::sctp_ep, sctp_expand_mapping_array(), sctp_find_reasm_entry(), sctp_inpcb::sctp_flags, SCTP_FREE, SCTP_FROM_SCTP_INDATA, sctp_generate_cause(), sctp_generate_no_user_data_cause(), sctp_get_mbuf_for_msg(), SCTP_IDATA, SCTP_IS_TSN_PRESENT, SCTP_LOC_16, SCTP_LOC_17, SCTP_LOC_18, sctp_log_map(), sctp_log_strm_del_alt(), SCTP_LTRACE_CHK, SCTP_M_COPYM, sctp_m_freem, sctp_m_getptr(), SCTP_MAP_LOGGING_ENABLE, SCTP_MAP_PREPARE_SLIDE, SCTP_MAP_TSN_ENTERS, SCTP_MAPPING_ARRAY, sctp_mark_non_revokable(), SCTP_MAX_DUP_TSNS, SCTP_MBUF_ICOPY, SCTP_MBUF_LOGGING_ENABLE, SCTP_MID_EQ, SCTP_MID_GE, SCTP_PCB_FLAGS_SOCKET_ALLGONE, SCTP_PCB_FLAGS_SOCKET_GONE, sctp_queue_data_for_reasm(), sctp_queue_data_to_stream(), sctp_queue_op_err(), SCTP_READ_LOCK_NOT_HELD, sctp_reset_in_stream(), sctp_send_deferred_reset_response(), sctp_set_rwnd(), SCTP_SET_TSN_PRESENT, SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, sctp_sorwakeup, SCTP_STAT_INCR, SCTP_STAT_INCR_COUNTER64, SCTP_STATE_CLOSED_SOCKET, SCTP_STR_LOG_FROM_EXPRS_DEL, SCTP_STR_LOG_FROM_MARK_TSN, SCTP_STR_LOGGING_ENABLE, SCTP_STREAM_RESET_RESULT_PERFORMED, SCTP_TCB_LOCK_ASSERT, SCTP_TSN_GE, SCTP_TSN_GT, SCTP_TSN_LOG_SIZE, SCTPDBG, sctp_association::send_sack, sctp_tmit_chunk::send_size, sctp_data::sid, sctp_idata::sid, sctp_data_chunkrec::sid, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_stream, sctp_queued_to_read::sinfo_tsn, sctp_data::ssn, sctp_association::state, sctp_queued_to_read::stcb, sctp_association::streamincnt, sctp_association::strmin, sctp_queued_to_read::tail_mbuf, sctp_queued_to_read::top_fsn, sctp_data::tsn, sctp_idata::tsn, sctp_stream_reset_list::tsn, sctp_data_chunkrec::tsn, and sctp_tmit_chunk::whoTo.
Referenced by sctp_process_data().
int sctp_process_data | ( | struct mbuf ** | mm, |
int | iphlen, | ||
int * | offset, | ||
int | length, | ||
struct sctp_inpcb * | inp, | ||
struct sctp_tcb * | stcb, | ||
struct sctp_nets * | net, | ||
uint32_t * | high_tsn | ||
) |
Definition at line 2649 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_chunkhdr::chunk_length, sctp_chunkhdr::chunk_type, sctp_gen_error_cause::code, sctp_association::cumulative_tsn, sctp_association::data_pkts_seen, sctp_association::highest_tsn_inside_map, sctp_association::highest_tsn_inside_nr_map, sctp_association::idata_supported, sctp_inpcb::last_abort_code, sctp_association::last_data_chunk_from, sctp_gen_error_cause::length, sctp_association::overall_error_count, sctp_abort_an_association(), SCTP_ABORT_ASSOCIATION, SCTP_ASCONF, SCTP_ASCONF_ACK, SCTP_AUTHENTICATION, SCTP_BASE_SYSCTL, SCTP_BUF_LEN, SCTP_BUF_NEXT, SCTP_CAUSE_PROTOCOL_VIOLATION, SCTP_CAUSE_UNRECOG_CHUNK, SCTP_COOKIE_ACK, SCTP_COOKIE_ECHO, SCTP_DATA, SCTP_DIAG_INFO_LEN, SCTP_ECN_CWR, SCTP_ECN_ECHO, sctp_tcb::sctp_ep, SCTP_FORWARD_CUM_TSN, SCTP_FROM_SCTP_INDATA, sctp_generate_cause(), sctp_get_mbuf_for_msg(), SCTP_GET_STATE, SCTP_GETTIME_TIMEVAL, SCTP_HEARTBEAT_ACK, SCTP_HEARTBEAT_REQUEST, SCTP_IDATA, SCTP_INITIATION, SCTP_INITIATION_ACK, SCTP_LOC_21, SCTP_LOC_22, SCTP_LOC_23, SCTP_LOC_24, SCTP_M_COPYM, sctp_m_freem, sctp_m_getptr(), sctp_misc_ints(), SCTP_NR_SELECTIVE_ACK, SCTP_OPERATION_ERROR, SCTP_PACKET_DROPPED, sctp_process_a_data_chunk(), sctp_queue_op_err(), sctp_sack_check(), SCTP_SELECTIVE_ACK, sctp_send_packet_dropped(), sctp_set_rwnd(), SCTP_SHUTDOWN, SCTP_SHUTDOWN_ACK, SCTP_SHUTDOWN_COMPLETE, SCTP_SIZE32, SCTP_SNPRINTF, SCTP_SO_NOT_LOCKED, SCTP_STAT_INCR, SCTP_STATE_SHUTDOWN_SENT, SCTP_STREAM_RESET, SCTP_TCB_LOCK_ASSERT, SCTP_THRESHOLD_CLEAR, SCTP_THRESHOLD_LOGGING, SCTP_TSN_GT, sctp_association::send_sack, and sctp_association::time_last_rcvd.
Referenced by sctp_common_input_processing().
|
static |
Definition at line 2942 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_tmit_chunk::book_size, sctp_association::cc_functions, sctp_data_chunkrec::chunk_was_revoked, sctp_stream_out::chunks_on_queues, sctp_nets::cwnd, sctp_tmit_chunk::data, sctp_tmit_chunk::do_rtt, sctp_data_chunkrec::doing_fast_retransmit, sctp_nets::find_pseudo_cumack, sctp_nets::find_rtx_pseudo_cumack, sctp_nets::flight_size, sctp_nets::net_ack, sctp_nets::net_ack2, sctp_nets::new_pseudo_cumack, sctp_stream_out::outqueue, sctp_nets::pseudo_cumack, sctp_tmit_chunk::rec, sctp_nets::rto_needed, sctp_nets::rtx_pseudo_cumack, sctp_nets::saw_newack, SCTP_BASE_SYSCTL, sctp_calculate_rto(), SCTP_CWND_LOG_FROM_SACK, SCTP_CWND_LOGGING_ENABLE, sctp_cc_functions::sctp_cwnd_update_tsn_acknowledged, SCTP_DATAGRAM_MARKED, SCTP_DATAGRAM_NR_ACKED, SCTP_DATAGRAM_RESEND, SCTP_DATAGRAM_UNSENT, SCTP_FLIGHT_LOG_DOWN_GAP, SCTP_FLIGHT_LOGGING_ENABLE, sctp_flight_size_decrease, SCTP_FORWARD_TSN_SKIP, sctp_free_bufspace, sctp_log_cwnd(), sctp_log_sack(), SCTP_LOG_TSN_ACKED, sctp_m_freem, sctp_misc_ints(), SCTP_RTT_FROM_DATA, SCTP_SACK_LOGGING_ENABLE, SCTP_STREAM_RESET_PENDING, sctp_total_flight_decrease, SCTP_TSN_GT, sctp_ucount_decr, sctp_tmit_chunk::send_size, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_association::sent_queue_retran_cnt, sctp_tmit_chunk::sent_rcv_time, sctp_data_chunkrec::sid, sctp_tmit_chunk::snd_count, sctp_stream_out::state, sctp_association::strmout, sctp_association::this_sack_highest_gap, sctp_nets::this_sack_highest_newack, sctp_association::trigger_reset, sctp_data_chunkrec::tsn, and sctp_tmit_chunk::whoTo.
Referenced by sctp_handle_segments().
|
static |
Definition at line 1365 of file sctp_indata.c.
References sctp_association::cnt_on_all_streams, sctp_association::cnt_on_reasm_queue, sctp_association::cumulative_tsn, sctp_tmit_chunk::data, sctp_queued_to_read::data, sctp_queued_to_read::end_added, sctp_queued_to_read::first_frag_seen, sctp_data_chunkrec::fsn, sctp_queued_to_read::fsn_included, sctp_association::idata_supported, sctp_queued_to_read::last_frag_seen, sctp_queued_to_read::length, sctp_queued_to_read::on_read_q, sctp_stream_in::pd_api_started, sctp_queued_to_read::pdapi_started, sctp_data_chunkrec::ppid, sctp_data_chunkrec::rcv_flags, sctp_queued_to_read::reasm, sctp_tmit_chunk::rec, sctp_abort_in_reasm(), sctp_add_chk_to_control(), sctp_add_to_readq(), sctp_clean_up_control(), SCTP_DATA_FIRST_FRAG, SCTP_DATA_LAST_FRAG, SCTP_DATA_UNORDERED, SCTP_DEBUG_XXX, sctp_tcb::sctp_ep, sctp_free_a_chunk, SCTP_FROM_SCTP_INDATA, sctp_inject_old_unordered_data(), SCTP_LOC_10, SCTP_LOC_11, SCTP_LOC_12, SCTP_LOC_13, SCTP_LOC_14, SCTP_LOC_15, SCTP_LOC_6, SCTP_LOC_7, SCTP_LOC_8, SCTP_LOC_9, sctp_mark_non_revokable(), sctp_place_control_in_stream(), SCTP_READ_LOCK_NOT_HELD, sctp_setup_tail_pointer(), SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, SCTP_TSN_GE, SCTP_TSN_GT, sctp_ucount_incr, sctp_wakeup_the_read_socket(), SCTPDBG, sctp_tmit_chunk::send_size, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_ppid, sctp_queued_to_read::sinfo_stream, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_all_streams, sctp_association::size_on_reasm_queue, sctp_association::strmin, sctp_queued_to_read::top_fsn, and sctp_data_chunkrec::tsn.
Referenced by sctp_process_a_data_chunk().
|
static |
Definition at line 481 of file sctp_indata.c.
References sctp_association::cnt_on_all_streams, sctp_association::idata_supported, sctp_stream_in::inqueue, sctp_inpcb::last_abort_code, sctp_stream_in::last_mid_delivered, sctp_queued_to_read::length, sctp_queued_to_read::mid, sctp_queued_to_read::on_strm_q, sctp_abort_an_association(), sctp_add_to_readq(), SCTP_BASE_SYSCTL, SCTP_CAUSE_PROTOCOL_VIOLATION, sctp_clean_up_control(), SCTP_DATA_NOT_FRAG, SCTP_DEBUG_INDATA1, SCTP_DIAG_INFO_LEN, sctp_tcb::sctp_ep, SCTP_FROM_SCTP_INDATA, sctp_generate_cause(), SCTP_LOC_2, SCTP_LOC_3, sctp_log_strm_del(), sctp_mark_non_revokable(), SCTP_MID_EQ, SCTP_MID_GT, SCTP_ON_ORDERED, sctp_place_control_in_stream(), SCTP_READ_LOCK_NOT_HELD, SCTP_SNPRINTF, SCTP_SO_LOCKED, SCTP_SO_NOT_LOCKED, sctp_tcb::sctp_socket, SCTP_STR_LOG_FROM_IMMED_DEL, SCTP_STR_LOG_FROM_INTO_STRD, SCTP_STR_LOGGING_ENABLE, sctp_ucount_decr, sctp_ucount_incr, SCTPDBG, sctp_queued_to_read::sinfo_flags, sctp_queued_to_read::sinfo_stream, sctp_queued_to_read::sinfo_tsn, sctp_association::size_on_all_streams, and sctp_association::strmin.
Referenced by sctp_process_a_data_chunk().
|
static |
Definition at line 753 of file sctp_indata.c.
References sctp_queued_to_read::fsn_included, next, sctp_queued_to_read::on_read_q, and sctp_inpcb::read_queue.
Referenced by sctp_flush_reassm_for_str_seq().
void sctp_sack_check | ( | struct sctp_tcb * | stcb, |
int | was_a_gap | ||
) |
Definition at line 2560 of file sctp_indata.c.
References sctp_association::alternate, sctp_tcb::asoc, sctp_association::cmt_dac_pkts_rcvd, sctp_association::cumulative_tsn, sctp_association::dack_timer, sctp_association::data_pkts_seen, sctp_association::delayed_ack, sctp_association::highest_tsn_inside_map, sctp_association::highest_tsn_inside_nr_map, sctp_association::numduptsns, sctp_association::primary_destination, sctp_association::sack_freq, SCTP_BASE_SYSCTL, sctp_association::sctp_cmt_on_off, sctp_tcb::sctp_ep, SCTP_FROM_SCTP_INDATA, SCTP_GET_STATE, SCTP_LOC_19, SCTP_LOC_20, SCTP_OS_TIMER_PENDING, sctp_send_sack(), sctp_send_shutdown(), sctp_slide_mapping_arrays(), SCTP_SO_NOT_LOCKED, SCTP_STATE_SHUTDOWN_SENT, sctp_timer_start(), sctp_timer_stop(), SCTP_TIMER_TYPE_RECV, SCTP_TSN_GT, sctp_association::send_sack, and sctp_timer::timer.
Referenced by sctp_common_input_processing(), and sctp_process_data().
void sctp_set_rwnd | ( | struct sctp_tcb * | stcb, |
struct sctp_association * | asoc | ||
) |
Definition at line 72 of file sctp_indata.c.
References sctp_association::my_rwnd, and sctp_calc_rwnd().
Referenced by sctp_process_a_data_chunk(), sctp_process_data(), and sctp_send_sack().
|
static |
Definition at line 633 of file sctp_indata.c.
References sctp_queued_to_read::data, sctp_queued_to_read::held_length, sctp_queued_to_read::length, sctp_queued_to_read::on_read_q, SCTP_BUF_LEN, SCTP_BUF_NEXT, sctp_m_free, sctp_sballoc, sctp_tcb::sctp_socket, sctp_queued_to_read::stcb, and sctp_queued_to_read::tail_mbuf.
Referenced by sctp_add_chk_to_control(), sctp_add_to_tail_pointer(), sctp_handle_old_unordered_data(), sctp_inject_old_unordered_data(), and sctp_queue_data_for_reasm().
void sctp_slide_mapping_arrays | ( | struct sctp_tcb * | stcb | ) |
Definition at line 2395 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_association::cumulative_tsn, sctp_association::highest_tsn_inside_map, sctp_association::highest_tsn_inside_nr_map, sctp_association::mapping_array, sctp_association::mapping_array_base_tsn, sctp_association::mapping_array_size, sctp_association::nr_mapping_array, SCTP_BASE_SYSCTL, SCTP_CALC_TSN_TO_GAP, sctp_log_map(), SCTP_MAP_LOGGING_ENABLE, sctp_map_lookup_tab, SCTP_MAP_PREPARE_SLIDE, SCTP_MAP_SLIDE_FROM, SCTP_MAP_SLIDE_NONE, SCTP_MAP_SLIDE_RESULT, sctp_print_mapping_array(), SCTP_PRINTF, and SCTP_TSN_GT.
Referenced by sctp_handle_forward_tsn(), sctp_sack_check(), and sctp_send_sack().
|
static |
Definition at line 3302 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_tmit_chunk::asoc, sctp_tmit_chunk::book_size, sctp_association::cc_functions, sctp_tmit_chunk::data, sctp_tmit_chunk::do_rtt, sctp_data_chunkrec::doing_fast_retransmit, sctp_association::fast_retran_loss_recovery, sctp_data_chunkrec::fast_retran_tsn, sctp_nets::find_pseudo_cumack, sctp_nets::find_rtx_pseudo_cumack, sctp_tmit_chunk::flags, sctp_nets::flight_size, sctp_data_chunkrec::fwd_tsn_cnt, sctp_nets::net_ack, sctp_association::nets, sctp_tmit_chunk::no_fr_allowed, sctp_association::numnets, sctp_association::peers_rwnd, PR_SCTP_RTX_ENABLED, PR_SCTP_TTL_ENABLED, sctp_association::prsctp_supported, sctp_tmit_chunk::rec, sctp_nets::ref_count, sctp_nets::rto_needed, sctp_nets::saw_newack, SCTP_BASE_SYSCTL, sctp_association::sctp_cmt_on_off, sctp_association::sctp_cmt_pf, sctp_cc_functions::sctp_cwnd_update_tsn_acknowledged, SCTP_DATAGRAM_ACKED, SCTP_DATAGRAM_RESEND, SCTP_DATAGRAM_UNSENT, sctp_find_alternate_net(), SCTP_FLIGHT_LOG_DOWN_RSND, SCTP_FLIGHT_LOGGING_ENABLE, sctp_flight_size_decrease, SCTP_FORWARD_TSN_SKIP, SCTP_FR_LOG_CHECK_STRIKE, SCTP_FR_LOG_STRIKE_CHUNK, SCTP_FR_LOGGING_ENABLE, SCTP_FR_MARKED, sctp_free_remote_addr, SCTP_GETTIME_TIMEVAL, SCTP_INCREASE_PEER_RWND, sctp_log_fr(), sctp_log_rwnd(), SCTP_LOG_RWND_ENABLE, sctp_misc_ints(), sctp_release_pr_sctp_chunk(), SCTP_SO_NOT_LOCKED, SCTP_STAT_INCR, sctp_total_flight_decrease, SCTP_TSN_GE, SCTP_TSN_GT, sctp_ucount_incr, sctp_association::send_queue, sctp_tmit_chunk::send_size, sctp_association::sending_seq, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_association::sent_queue_retran_cnt, sctp_tmit_chunk::snd_count, sctp_association::this_sack_highest_gap, sctp_nets::this_sack_highest_newack, sctp_data_chunkrec::timetodrop, sctp_data_chunkrec::tsn, and sctp_tmit_chunk::whoTo.
Referenced by sctp_handle_sack().
struct sctp_tmit_chunk * sctp_try_advance_peer_ack_point | ( | struct sctp_tcb * | stcb, |
struct sctp_association * | asoc | ||
) |
Definition at line 3749 of file sctp_indata.c.
References sctp_association::advanced_peer_ack_point, sctp_tmit_chunk::data, sctp_tmit_chunk::flags, PR_SCTP_ENABLED, PR_SCTP_TTL_ENABLED, sctp_association::prsctp_supported, sctp_tmit_chunk::rec, SCTP_BASE_SYSCTL, SCTP_DATAGRAM_NR_ACKED, SCTP_DATAGRAM_RESEND, SCTP_FORWARD_TSN_SKIP, SCTP_FWD_TSN_CHECK, SCTP_GETTIME_TIMEVAL, SCTP_LOG_TRY_ADVANCE, sctp_misc_ints(), sctp_release_pr_sctp_chunk(), SCTP_SO_NOT_LOCKED, SCTP_TSN_GT, sctp_tmit_chunk::sent, sctp_association::sent_queue, sctp_data_chunkrec::timetodrop, and sctp_data_chunkrec::tsn.
Referenced by sctp_express_handle_sack(), sctp_handle_sack(), and sctp_t3rxt_timer().
void sctp_update_acked | ( | struct sctp_tcb * | stcb, |
struct sctp_shutdown_chunk * | cp, | ||
int * | abort_flag | ||
) |
Definition at line 5222 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_shutdown_chunk::cumulative_tsn_ack, sctp_association::peers_rwnd, sctp_express_handle_sack(), and sctp_association::total_flight.
Referenced by sctp_handle_shutdown().
|
static |
Definition at line 3889 of file sctp_indata.c.
References sctp_tcb::asoc, sctp_tmit_chunk::asoc, sctp_tmit_chunk::book_size, sctp_association::cc_functions, sctp_tmit_chunk::data, sctp_nets::flight_size, sctp_tmit_chunk::rec, SCTP_BASE_SYSCTL, sctp_cc_functions::sctp_cwnd_update_tsn_acknowledged, SCTP_DATAGRAM_ACKED, SCTP_DATAGRAM_RESEND, SCTP_FLIGHT_LOG_DOWN_WP, SCTP_FLIGHT_LOG_DWN_WP_FWD, SCTP_FLIGHT_LOGGING_ENABLE, sctp_flight_size_decrease, sctp_misc_ints(), sctp_total_flight_decrease, sctp_ucount_incr, sctp_tmit_chunk::sent, sctp_association::sent_queue_retran_cnt, sctp_data_chunkrec::tsn, sctp_tmit_chunk::whoTo, and sctp_tmit_chunk::window_probe.
Referenced by sctp_express_handle_sack(), and sctp_handle_sack().
|
static |
Definition at line 2359 of file sctp_indata.c.
Referenced by sctp_slide_mapping_arrays().