38#ifndef _NETINET_SCTP_STRUCTS_H_
39#define _NETINET_SCTP_STRUCTS_H_
101#define SCTP_PCB_ANY_FLAGS 0x00000000
102#define SCTP_PCB_ANY_FEATURES 0x00000000
103#define SCTP_ASOC_ANY_STATE 0x00000000
110#if defined(SCTP_MCORE_INPUT) && defined(SMP)
112struct sctp_mcore_queue {
120TAILQ_HEAD(sctp_mcore_qhead, sctp_mcore_queue);
122struct sctp_mcore_ctrl {
124 struct sctp_mcore_qhead que;
154#define SCTP_ITERATOR_DO_ALL_INP 0x00000001
155#define SCTP_ITERATOR_DO_SINGLE_INP 0x00000002
182#define SCTP_ITERATOR_STOP_CUR_IT 0x00000004
183#define SCTP_ITERATOR_STOP_CUR_INP 0x00000008
410#define CHUNK_FLAGS_PR_SCTP_TTL SCTP_PR_SCTP_TTL
411#define CHUNK_FLAGS_PR_SCTP_BUF SCTP_PR_SCTP_BUF
412#define CHUNK_FLAGS_PR_SCTP_RTX SCTP_PR_SCTP_RTX
415#define CHUNK_FLAGS_FRAGMENT_OK 0x0100
488#define SCTP_ON_ORDERED 1
489#define SCTP_ON_UNORDERED 2
603#define SCTP_STREAM_CLOSED 0x00
604#define SCTP_STREAM_OPENING 0x01
605#define SCTP_STREAM_OPEN 0x02
606#define SCTP_STREAM_RESET_PENDING 0x03
607#define SCTP_STREAM_RESET_IN_FLIGHT 0x04
614#if defined(SCTP_DETAILED_STR_STATS)
633#define SCTP_MAX_STREAMS_AT_ONCE_RESET 200
654#define SCTP_TSN_LOG_SIZE 40
668#define SCTP_FS_SPEC_LOG_SIZE 200
707 int accum_moved,
int reneged_all,
int will_exit);
714 struct sctp_nets *net,
int in_window,
int num_pkt_lost);
977#ifdef SCTP_ASOCLOG_OF_TSNS
993#ifdef SCTP_FS_SPEC_LOG
#define SCTP_MAX_DUP_TSNS
#define SCTP_MAX_RESET_PARAMS
#define SCTP_PROCESS_STRUCT
struct callout sctp_os_timer_t
void(* asoc_func)(struct sctp_inpcb *, struct sctp_tcb *, void *ptr, uint32_t val)
int(* inp_func)(struct sctp_inpcb *, void *ptr, uint32_t val)
#define SCTP_FS_SPEC_LOG_SIZE
TAILQ_HEAD(sctpnetlisthead, sctp_nets)
void(* end_func)(void *ptr, uint32_t val)
#define SCTP_TSN_LOG_SIZE
struct mtx ipi_iterator_wq_mtx
SCTP_PROCESS_STRUCT thread_proc
struct sctpiterators iteratorhead
uint32_t iterator_running
struct sctp_iterator * cur_it
uint8_t rtt_set_this_sack
uint64_t bw_bytes_at_last_rttc
struct sctpwheel_listhead wheel
struct sctplist_listhead list
struct sctp_stream_out * locked_on_sending
struct sctp_stream_out * last_out_stream
union scheduling_data::@35 out
union scheduling_parameters::@36 ss
TAILQ_ENTRY(sctp_asconf_ack) next
struct sctp_nets * last_sent_to
struct sctp_asconf_addr_param ap
TAILQ_ENTRY(sctp_asconf_addr) next
struct sctpladdr list_of_work
TAILQ_ENTRY(sctp_asconf) next
uint32_t cookie_preserve_req
int16_t num_send_timers_up
uint16_t strm_realoutsize
struct timeval time_entered
uint16_t mapping_array_size
uint32_t last_base_tsnsent[SCTP_MAX_RESET_PARAMS]
uint32_t total_output_queue_size
unsigned int sent_queue_retran_cnt
unsigned int cnt_msg_on_sb
uint8_t asconf_del_pending
unsigned int sent_queue_cnt_removeable
uint16_t stream_locked_on
uint8_t peer_supports_nat
uint16_t last_strm_seq_delivered
uint8_t fragmented_delivery_inprogress
sctp_auth_chklist_t * local_auth_chunks
uint32_t highest_tsn_inside_map
struct sctp_nets * alternate
struct sctp_timer asconf_timer
uint32_t str_reset_seq_out
uint32_t my_last_reported_rwnd
unsigned int old_delayed_ack
uint8_t adaptation_needed
struct timeval time_last_sat_advance
struct sctpchunk_listhead send_queue
struct sctp_timer strreset_timer
struct sctp_stream_out * strmout
struct sctpladdr sctp_restricted_addrs
unsigned int total_flight_count
struct sctp_keyhead shared_keys
uint32_t sat_t3_recovery_tsn
uint8_t used_alt_asconfack
struct timeval start_time
uint32_t sctp_autoclose_ticks
struct sctpnetlisthead nets
uint8_t reconfig_supported
struct sctp_nets * last_control_chunk_from
struct sctp_readhead pending_reply_queue
uint8_t fast_retran_loss_recovery
uint8_t burst_limit_applied
uint16_t stale_cookie_count
struct sctp_nets * deleted_primary
struct timeval time_last_rcvd
uint8_t dropped_special_cnt
uint32_t last_reset_action[SCTP_MAX_RESET_PARAMS]
struct sctp_laddr * last_used_address
uint8_t sat_network_lockout
uint32_t asconf_seq_out_acked
struct sctp_timer dack_timer
uint8_t delayed_connection
struct sctp_asconf_ackhead asconf_ack_sent
unsigned int cnt_on_all_streams
struct sctpchunk_listhead free_chunks
uint32_t mapping_array_base_tsn
uint8_t cmt_dac_pkts_rcvd
uint8_t stream_reset_out_is_outstanding
uint32_t peers_adaptation
uint32_t str_reset_seq_in
unsigned int total_flight
unsigned int stream_queue_cnt
uint32_t tsn_last_delivered
uint8_t sat_t3_loss_recovery
uint16_t last_revoke_count
struct sctp_asconf_addrhead asconf_queue
struct sctpchunk_listhead asconf_send_queue
struct sctp_queued_to_read * control_pdapi
uint8_t saw_sack_with_nr_frags
uint8_t saw_sack_with_frags
uint16_t last_strm_no_delivered
struct sctp_nets * last_net_cmt_send_started
uint32_t fast_recovery_tsn
struct sctp_resethead resetHead
struct sctp_ss_functions ss_functions
struct sctp_timer autoclose_timer
struct sctp_timer shut_guard_timer
uint8_t * nr_mapping_array
uint32_t my_rwnd_control_len
struct sctpchunk_listhead control_send_queue
unsigned int size_on_all_streams
uint32_t highest_tsn_inside_nr_map
uint8_t seen_a_sack_this_pkt
unsigned int max_inbound_streams
struct sctp_iterator * stcb_starting_point_for_iterator
uint16_t def_net_pf_threshold
uint64_t abandoned_unsent[SCTP_PR_SCTP_MAX+1]
uint32_t tsn_of_pdapi_last_delivered
struct sctp_timer delete_prim_timer
sctp_hmaclist_t * local_hmacs
uint32_t this_sack_highest_gap
unsigned int data_pkts_seen
uint32_t congestion_control_module
sctp_hmaclist_t * peer_hmacs
struct sctp_scoping scope
struct scheduling_data ss_data
uint8_t pktdrop_supported
uint32_t last_sending_seq[SCTP_MAX_RESET_PARAMS]
struct sctp_tmit_chunk * str_reset
unsigned int cnt_on_reasm_queue
uint32_t chunks_on_out_queue
unsigned int send_queue_cnt
uint64_t abandoned_sent[SCTP_PR_SCTP_MAX+1]
int dup_tsns[SCTP_MAX_DUP_TSNS]
struct timeval time_last_sent
struct sctp_nonpad_sndrcvinfo def_send
uint16_t ecn_echo_cnt_onq
uint32_t heart_beat_delay
uint8_t last_flags_delivered
struct sctp_nets * primary_destination
uint32_t stream_scheduling_module
uint8_t hb_random_values[4]
struct sctp_cc_functions cc_functions
unsigned int overall_error_count
struct sctp_nets * last_data_chunk_from
struct sctpchunk_listhead sent_queue
unsigned int pre_open_streams
sctp_auth_chklist_t * peer_auth_chunks
unsigned int size_on_reasm_queue
uint8_t stream_reset_outstanding
uint32_t initial_init_rto_max
struct sctp_ifa * asconf_addr_del_pending
uint16_t strm_pending_add_size
uint32_t advanced_peer_ack_point
struct sctp_stream_in * strmin
uint8_t local_strreset_support
struct timeval discontinuity_time
unsigned int sent_queue_cnt
void(* sctp_cwnd_update_after_packet_dropped)(struct sctp_tcb *stcb, struct sctp_nets *net, struct sctp_pktdrop_chunk *cp, uint32_t *bottle_bw, uint32_t *on_queue)
void(* sctp_cwnd_update_packet_transmitted)(struct sctp_tcb *stcb, struct sctp_nets *net)
void(* sctp_cwnd_new_transmission_begins)(struct sctp_tcb *stcb, struct sctp_nets *net)
void(* sctp_cwnd_update_tsn_acknowledged)(struct sctp_nets *net, struct sctp_tmit_chunk *)
void(* sctp_cwnd_update_after_sack)(struct sctp_tcb *stcb, struct sctp_association *asoc, int accum_moved, int reneged_all, int will_exit)
void(* sctp_rtt_calculated)(struct sctp_tcb *, struct sctp_nets *, struct timeval *)
void(* sctp_cwnd_update_exit_pf)(struct sctp_tcb *stcb, struct sctp_nets *net)
void(* sctp_set_initial_cc_param)(struct sctp_tcb *stcb, struct sctp_nets *net)
void(* sctp_cwnd_prepare_net_for_sack)(struct sctp_tcb *stcb, struct sctp_nets *net)
void(* sctp_cwnd_update_after_ecn_echo)(struct sctp_tcb *stcb, struct sctp_nets *net, int in_window, int num_pkt_lost)
void(* sctp_cwnd_update_after_timeout)(struct sctp_tcb *stcb, struct sctp_nets *net)
int(* sctp_cwnd_socket_option)(struct sctp_tcb *stcb, int set, struct sctp_cc_option *)
void(* sctp_cwnd_update_after_output)(struct sctp_tcb *stcb, struct sctp_nets *net, int burst_limit)
void(* sctp_cwnd_update_after_fr)(struct sctp_tcb *stcb, struct sctp_association *asoc)
struct sctp_sndrcvinfo sndrcv
struct timeval timetodrop
uint8_t doing_fast_retransmit
uint8_t chunk_was_revoked
TAILQ_ENTRY(sctp_iterator) sctp_nxt_itr
struct sctp_inpcb * next_inp
inp_func function_inp_end
struct nhop_object * ro_nh
union sctp_sockstore _l_addr
struct sctp_ifa * _s_addr
uint32_t marked_fastretrans
TAILQ_ENTRY(sctp_nets) sctp_next
uint16_t failure_threshold
uint32_t heartbeat_random1
uint8_t new_pseudo_cumack
uint8_t indx_of_eligible_next_to_use
uint32_t heartbeat_random2
uint32_t partial_bytes_acked
uint32_t rtx_pseudo_cumack
uint32_t this_sack_highest_newack
uint8_t find_pseudo_cumack
struct sctp_timer pmtu_timer
uint32_t heart_beat_delay
uint32_t fast_recovery_tsn
struct timeval last_sent_time
struct timeval start_time
union sctp_nets::cc_control_data cc_mod
struct sctp_timer hb_timer
uint8_t find_rtx_pseudo_cumack
uint8_t fast_retran_loss_recovery
struct sctp_timer rxt_timer
uint8_t will_exit_fast_recovery
uint8_t src_addr_selected
uint32_t sinfo_timetolive
sctp_assoc_t sinfo_assoc_id
uint16_t sinfo_keynumber_valid
TAILQ_ENTRY(sctp_queued_to_read) next
struct sctpchunk_listhead reasm
uint32_t sinfo_timetolive
sctp_assoc_t sinfo_assoc_id
struct sctp_nets * whoFrom
TAILQ_ENTRY(sctp_queued_to_read) next_instrm
void(* sctp_ss_packet_done)(struct sctp_tcb *stcb, struct sctp_nets *net, struct sctp_association *asoc)
void(* sctp_ss_clear)(struct sctp_tcb *stcb, struct sctp_association *asoc, bool clear_values)
int(* sctp_ss_get_value)(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, uint16_t *value)
bool(* sctp_ss_is_empty)(struct sctp_tcb *stcb, struct sctp_association *asoc)
void(* sctp_ss_remove_from_stream)(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp)
bool(* sctp_ss_is_user_msgs_incomplete)(struct sctp_tcb *stcb, struct sctp_association *asoc)
int(* sctp_ss_set_value)(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, uint16_t value)
void(* sctp_ss_scheduled)(struct sctp_tcb *stcb, struct sctp_nets *net, struct sctp_association *asoc, struct sctp_stream_out *strq, int moved_how_much)
void(* sctp_ss_add_to_stream)(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_out *strq, struct sctp_stream_queue_pending *sp)
void(* sctp_ss_init)(struct sctp_tcb *stcb, struct sctp_association *asoc)
void(* sctp_ss_init_stream)(struct sctp_tcb *stcb, struct sctp_stream_out *strq, struct sctp_stream_out *with_strq)
uint32_t last_mid_delivered
struct sctp_readhead inqueue
struct sctp_readhead uno_inqueue
uint8_t last_msg_incomplete
uint32_t chunks_on_queues
uint32_t next_mid_ordered
uint32_t abandoned_unsent[1]
struct scheduling_parameters ss_params
uint32_t next_mid_unordered
struct sctp_streamhead outqueue
uint32_t abandoned_sent[1]
TAILQ_ENTRY(sctp_stream_queue_pending) next
TAILQ_ENTRY(sctp_stream_queue_pending) ss_next
TAILQ_ENTRY(sctp_stream_reset_list) next_resp
uint16_t list_of_streams[]
union sctp_tmit_chunk::@34 rec
struct sctp_data_chunkrec data
TAILQ_ENTRY(sctp_tmit_chunk) sctp_next
struct timeval sent_rcv_time
struct sctp_association * asoc
TAILQ_ENTRY(sctp_stream_out) next_spoke
TAILQ_ENTRY(sctp_stream_out) next_spoke
TAILQ_ENTRY(sctp_stream_out) next_spoke
TAILQ_ENTRY(bbr_sendmap) r_next