35#ifndef _NETINET_TCP_VAR_H_
36#define _NETINET_TCP_VAR_H_
42#include "opt_kern_tls.h"
48#define TCP_END_BYTE_INFO 8
50#define TCP_EI_EMPTY_SLOT 0
51#define TCP_EI_STATUS_CLIENT_FIN 0x1
52#define TCP_EI_STATUS_CLIENT_RST 0x2
53#define TCP_EI_STATUS_SERVER_FIN 0x3
54#define TCP_EI_STATUS_SERVER_RST 0x4
55#define TCP_EI_STATUS_RETRAN 0x5
56#define TCP_EI_STATUS_PROGRESS 0x6
57#define TCP_EI_STATUS_PERSIST_MAX 0x7
58#define TCP_EI_STATUS_KEEP_MAX 0x8
59#define TCP_EI_STATUS_DATA_A_CLOSE 0x9
60#define TCP_EI_STATUS_RST_IN_FRONT 0xa
61#define TCP_EI_STATUS_2MSL 0xb
62#define TCP_EI_STATUS_MAX_VALUE 0xb
71#define TCP_EI_BITS_CLIENT_FIN 0x001
72#define TCP_EI_BITS_CLIENT_RST 0x002
73#define TCP_EI_BITS_SERVER_FIN 0x004
74#define TCP_EI_BITS_SERVER_RST 0x008
75#define TCP_EI_BITS_RETRAN 0x010
76#define TCP_EI_BITS_PROGRESS 0x020
77#define TCP_EI_BITS_PRESIST_MAX 0x040
78#define TCP_EI_BITS_KEEP_MAX 0x080
79#define TCP_EI_BITS_DATA_A_CLO 0x100
80#define TCP_EI_BITS_RST_IN_FR 0x200
81#define TCP_EI_BITS_2MS_TIMER 0x400
83#if defined(_KERNEL) || defined(_WANT_TCPCB)
123#define SEGQ_EMPTY(tp) TAILQ_EMPTY(&(tp)->t_segq)
286 struct mbufq t_inpkts;
287 struct mbufq t_outpkts;
299#define TCP_TUNNELING_PORT_MIN 0
300#define TCP_TUNNELING_PORT_MAX 65535
301#define TCP_TUNNELING_PORT_DEFAULT 0
304#define TCP_TUNNELING_OVERHEAD_MIN sizeof(struct udphdr)
305#define TCP_TUNNELING_OVERHEAD_MAX 1024
306#define TCP_TUNNELING_OVERHEAD_DEFAULT TCP_TUNNELING_OVERHEAD_MIN
309#define TCP_MIN_MAP_ENTRIES_LIMIT 128
321#define TCP_FUNC_BEING_REMOVED 0x01
322#define TCP_FUNC_OUTPUT_CANDROP 0x02
352 struct socket *,
struct tcpcb *,
356 struct socket *,
struct tcpcb *,
358 int,
struct timeval *);
360 struct socket *,
struct tcpcb *,
362 int,
struct timeval *);
393#ifdef _NETINET_IN_PCB_H_
401tcp_output(
struct tcpcb *tp)
410 (
"TCP stack %s requested tcp_drop(%p)",
426tcp_output_unlock(
struct tcpcb *tp)
435 (
"TCP stack %s requested tcp_drop(%p)",
458tcp_output_nodrop(
struct tcpcb *tp)
466 (
"TCP stack %s requested tcp_drop(%p)",
477tcp_unlock_or_drop(
struct tcpcb *tp,
int tcp_output_retval)
482 if (tcp_output_retval < 0) {
483 tcp_output_retval = -tcp_output_retval;
484 if (
tcp_drop(tp, tcp_output_retval) != NULL)
489 return (tcp_output_retval);
497#define TF_ACKNOW 0x00000001
498#define TF_DELACK 0x00000002
499#define TF_NODELAY 0x00000004
500#define TF_NOOPT 0x00000008
501#define TF_SENTFIN 0x00000010
502#define TF_REQ_SCALE 0x00000020
503#define TF_RCVD_SCALE 0x00000040
504#define TF_REQ_TSTMP 0x00000080
505#define TF_RCVD_TSTMP 0x00000100
506#define TF_SACK_PERMIT 0x00000200
507#define TF_NEEDSYN 0x00000400
508#define TF_NEEDFIN 0x00000800
509#define TF_NOPUSH 0x00001000
510#define TF_PREVVALID 0x00002000
515#define TF_WAKESOR 0x00004000
516#define TF_GPUTINPROG 0x00008000
517#define TF_MORETOCOME 0x00010000
518#define TF_LQ_OVERFLOW 0x00020000
519#define TF_LASTIDLE 0x00040000
520#define TF_RXWIN0SENT 0x00080000
521#define TF_FASTRECOVERY 0x00100000
522#define TF_WASFRECOVERY 0x00200000
523#define TF_SIGNATURE 0x00400000
524#define TF_FORCEDATA 0x00800000
525#define TF_TSO 0x01000000
526#define TF_TOE 0x02000000
527#define TF_UNUSED0 0x04000000
528#define TF_UNUSED1 0x08000000
529#define TF_LRD 0x10000000
530#define TF_CONGRECOVERY 0x20000000
531#define TF_WASCRECOVERY 0x40000000
532#define TF_FASTOPEN 0x80000000
534#define IN_FASTRECOVERY(t_flags) (t_flags & TF_FASTRECOVERY)
535#define ENTER_FASTRECOVERY(t_flags) t_flags |= TF_FASTRECOVERY
536#define EXIT_FASTRECOVERY(t_flags) t_flags &= ~TF_FASTRECOVERY
538#define IN_CONGRECOVERY(t_flags) (t_flags & TF_CONGRECOVERY)
539#define ENTER_CONGRECOVERY(t_flags) t_flags |= TF_CONGRECOVERY
540#define EXIT_CONGRECOVERY(t_flags) t_flags &= ~TF_CONGRECOVERY
542#define IN_RECOVERY(t_flags) (t_flags & (TF_CONGRECOVERY | TF_FASTRECOVERY))
543#define ENTER_RECOVERY(t_flags) t_flags |= (TF_CONGRECOVERY | TF_FASTRECOVERY)
544#define EXIT_RECOVERY(t_flags) t_flags &= ~(TF_CONGRECOVERY | TF_FASTRECOVERY)
546#if defined(_KERNEL) && !defined(TCP_RFC7413)
547#define IS_FASTOPEN(t_flags) (false)
549#define IS_FASTOPEN(t_flags) (t_flags & TF_FASTOPEN)
552#define BYTES_THIS_ACK(tp, th) (th->th_ack - tp->snd_una)
557#define TCPOOB_HAVEDATA 0x01
558#define TCPOOB_HADDATA 0x02
563#define TF2_PLPMTU_BLACKHOLE 0x00000001
564#define TF2_PLPMTU_PMTUD 0x00000002
565#define TF2_PLPMTU_MAXSEGSNT 0x00000004
566#define TF2_LOG_AUTO 0x00000008
567#define TF2_DROP_AF_DATA 0x00000010
568#define TF2_ECN_PERMIT 0x00000020
569#define TF2_ECN_SND_CWR 0x00000040
570#define TF2_ECN_SND_ECE 0x00000080
571#define TF2_ACE_PERMIT 0x00000100
572#define TF2_FBYTES_COMPLETE 0x00000400
583#define TOF_MSS 0x0001
584#define TOF_SCALE 0x0002
585#define TOF_SACKPERM 0x0004
587#define TOF_SIGNATURE 0x0040
588#define TOF_SACK 0x0080
589#define TOF_FASTOPEN 0x0100
590#define TOF_MAXOPT 0x0200
629#ifndef _NETINET_IN_PCB_H_
649#define intotcpcb(ip) ((struct tcpcb *)(ip)->inp_ppcb)
650#define intotw(ip) ((struct tcptw *)(ip)->inp_ppcb)
651#define sototcpcb(so) (intotcpcb(sotoinpcb(so)))
662#define TCP_RTT_SCALE 32
663#define TCP_RTT_SHIFT 5
664#define TCP_RTTVAR_SCALE 16
665#define TCP_RTTVAR_SHIFT 4
666#define TCP_DELTA_SHIFT 2
684#define TCP_REXMTVAL(tp) \
685 max((tp)->t_rttmin, (((tp)->t_srtt >> (TCP_RTT_SHIFT - TCP_DELTA_SHIFT)) \
686 + (tp)->t_rttvar) >> TCP_DELTA_SHIFT)
832#define tcps_rcvmemdrop tcps_rcvreassfull
837#include <sys/counter.h>
844#define TCPSTAT_ADD(name, val) \
845 VNET_PCPUSTAT_ADD(struct tcpstat, tcpstat, name, (val))
846#define TCPSTAT_INC(name) TCPSTAT_ADD(name, 1)
852#define KMOD_TCPSTAT_ADD(name, val) \
853 kmod_tcpstat_add(offsetof(struct tcpstat, name) / sizeof(uint64_t), val)
854#define KMOD_TCPSTAT_INC(name) KMOD_TCPSTAT_ADD(name, 1)
860#define V_tcps_states VNET(tcps_states)
861#define TCPSTATES_INC(state) counter_u64_add(V_tcps_states[state], 1)
862#define TCPSTATES_DEC(state) counter_u64_add(V_tcps_states[state], -1)
867#define HHOOK_TCP_EST_IN 0
868#define HHOOK_TCP_EST_OUT 1
869#define HHOOK_TCP_LAST HHOOK_TCP_EST_OUT
880void hhook_run_tcp_est_out(
struct tcpcb *tp,
881 struct tcphdr *th,
struct tcpopt *to,
901#if defined(_NETINET_IN_PCB_H_) && defined(_SYS_SOCKETVAR_H_)
904 struct xinpcb xt_inp;
906 char xt_logid[TCP_LOG_ID_LEN];
907 char xt_cc[TCP_CA_NAME_MAX];
911 int32_t t_sndzerowin;
912 int32_t t_sndrexmitpack;
954#define TCPCTL_DO_RFC1323 1
955#define TCPCTL_MSSDFLT 3
956#define TCPCTL_STATS 4
957#define TCPCTL_RTTDFLT 5
958#define TCPCTL_KEEPIDLE 6
959#define TCPCTL_KEEPINTVL 7
960#define TCPCTL_SENDSPACE 8
961#define TCPCTL_RECVSPACE 9
962#define TCPCTL_KEEPINIT 10
963#define TCPCTL_PCBLIST 11
964#define TCPCTL_DELACKTIME 12
965#define TCPCTL_V6MSSDFLT 13
966#define TCPCTL_SACK 14
967#define TCPCTL_DROP 15
968#define TCPCTL_STATES 16
978#define V_tcp_log_in_vain VNET(tcp_log_in_vain)
1028#define V_tcp_do_lrd VNET(tcp_do_lrd)
1029#define V_tcp_do_prr VNET(tcp_do_prr)
1030#define V_tcp_do_prr_conservative VNET(tcp_do_prr_conservative)
1031#define V_tcp_do_newcwv VNET(tcp_do_newcwv)
1032#define V_drop_synfin VNET(drop_synfin)
1033#define V_path_mtu_discovery VNET(path_mtu_discovery)
1034#define V_tcbinfo VNET(tcbinfo)
1035#define V_tcp_abc_l_var VNET(tcp_abc_l_var)
1036#define V_tcp_autorcvbuf_max VNET(tcp_autorcvbuf_max)
1037#define V_tcp_autosndbuf_inc VNET(tcp_autosndbuf_inc)
1038#define V_tcp_autosndbuf_max VNET(tcp_autosndbuf_max)
1039#define V_tcp_delack_enabled VNET(tcp_delack_enabled)
1040#define V_tcp_do_autorcvbuf VNET(tcp_do_autorcvbuf)
1041#define V_tcp_do_autosndbuf VNET(tcp_do_autosndbuf)
1042#define V_tcp_do_ecn VNET(tcp_do_ecn)
1043#define V_tcp_do_rfc1323 VNET(tcp_do_rfc1323)
1044#define V_tcp_tolerate_missing_ts VNET(tcp_tolerate_missing_ts)
1045#define V_tcp_ts_offset_per_conn VNET(tcp_ts_offset_per_conn)
1046#define V_tcp_do_rfc3042 VNET(tcp_do_rfc3042)
1047#define V_tcp_do_rfc3390 VNET(tcp_do_rfc3390)
1048#define V_tcp_do_rfc3465 VNET(tcp_do_rfc3465)
1049#define V_tcp_do_newsack VNET(tcp_do_newsack)
1050#define V_tcp_do_sack VNET(tcp_do_sack)
1051#define V_tcp_do_tso VNET(tcp_do_tso)
1052#define V_tcp_ecn_maxretries VNET(tcp_ecn_maxretries)
1053#define V_tcp_initcwnd_segments VNET(tcp_initcwnd_segments)
1054#define V_tcp_insecure_rst VNET(tcp_insecure_rst)
1055#define V_tcp_insecure_syn VNET(tcp_insecure_syn)
1056#define V_tcp_map_entries_limit VNET(tcp_map_entries_limit)
1057#define V_tcp_map_split_limit VNET(tcp_map_split_limit)
1058#define V_tcp_minmss VNET(tcp_minmss)
1059#define V_tcp_mssdflt VNET(tcp_mssdflt)
1061#define V_tcp_perconn_stats_dflt_tpl VNET(tcp_perconn_stats_dflt_tpl)
1062#define V_tcp_perconn_stats_enable VNET(tcp_perconn_stats_enable)
1064#define V_tcp_recvspace VNET(tcp_recvspace)
1065#define V_tcp_sack_globalholes VNET(tcp_sack_globalholes)
1066#define V_tcp_sack_globalmaxholes VNET(tcp_sack_globalmaxholes)
1067#define V_tcp_sack_maxholes VNET(tcp_sack_maxholes)
1068#define V_tcp_sc_rst_sock_fail VNET(tcp_sc_rst_sock_fail)
1069#define V_tcp_sendspace VNET(tcp_sendspace)
1070#define V_tcp_udp_tunneling_overhead VNET(tcp_udp_tunneling_overhead)
1071#define V_tcp_udp_tunneling_port VNET(tcp_udp_tunneling_port)
1075#define V_tcp_hhh VNET(tcp_hhh)
1100 struct tcpcb *,
int,
int);
1102 struct tcphdr *,
struct mbuf *,
int);
1113void hhook_run_tcp_est_in(
struct tcpcb *tp,
1114 struct tcphdr *th,
struct tcpopt *to);
1117int tcp_input(
struct mbuf **,
int *,
int);
1118int tcp_autorcvbuf(
struct mbuf *,
struct tcphdr *,
struct socket *,
1119 struct tcpcb *,
int);
1127 int wait,
const char *names[],
int *num_names);
1129 const char *name,
int wait);
1150#ifdef NETFLIX_EXP_DETECTION
1152extern int32_t tcp_force_detection;
1153extern int32_t tcp_sack_to_ack_thresh;
1154extern int32_t tcp_sack_to_move_thresh;
1155extern int32_t tcp_restoral_thresh;
1156extern int32_t tcp_sad_decay_val;
1157extern int32_t tcp_sad_pacing_interval;
1158extern int32_t tcp_sad_low_pps;
1159extern int32_t tcp_map_minimum;
1160extern int32_t tcp_attack_on_turns_on_logging;
1181 struct tcphdr *,
struct mbuf *, tcp_seq, tcp_seq,
int);
1184void tcp_tw_destroy(
void);
1188 struct mbuf *,
int);
1200void tcp_trace(
short,
short,
struct tcpcb *,
void *,
struct tcphdr *,
int);
1207void tcp_hc_destroy(
void);
1242 tcp_m_copym(
struct mbuf *m, int32_t off0, int32_t *plen,
1243 int32_t seglimit, int32_t segsize,
struct sockbuf *sb,
bool hw_tls);
1252 th->th_seq = ntohl(th->th_seq);
1253 th->th_ack = ntohl(th->th_ack);
1254 th->th_win = ntohs(th->th_win);
1255 th->th_urp = ntohs(th->th_urp);
1262 th->th_seq = htonl(th->th_seq);
1263 th->th_ack = htonl(th->th_ack);
1264 th->th_win = htons(th->th_win);
1265 th->th_urp = htons(th->th_urp);
1277 th->th_x2 = (flags >> 8) & 0x0f;
1278 th->th_flags = flags & 0xff;
1296 if (hw_tls && is_rxt && len != 0) {
1298 if (rexmit_percent > ktls_ifnet_max_rexmit_pct)
1299 ktls_disable_ifnet(tp);
SYSCTL_DECL(_net_inet_tcp_cc)
#define INP_WLOCK_ASSERT(inp)
struct ip_timestamp __aligned
int32_t sack_bytes_rexmit
struct sackhole * nexthole
TAILQ_ENTRY(sackhole) scblink
void(* tfb_hwtls_change)(struct tcpcb *, int)
int(* tfb_tcp_output)(struct tcpcb *)
char tfb_tcp_block_name[TCP_FUNCTION_NAME_LEN_MAX]
int(* tfb_tcp_ctloutput)(struct inpcb *inp, struct sockopt *sopt)
int(* tfb_do_segment_nounlock)(struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, int, int, uint8_t, int, struct timeval *)
void(* tfb_tcp_timer_stop)(struct tcpcb *, uint32_t)
int(* tfb_tcp_output_wtime)(struct tcpcb *, const struct timeval *)
int(* tfb_do_queued_segments)(struct socket *, struct tcpcb *, int)
int(* tfb_pru_options)(struct tcpcb *, int)
int(* tfb_tcp_timer_active)(struct tcpcb *, uint32_t)
volatile uint32_t tfb_refcnt
void(* tfb_tcp_fb_fini)(struct tcpcb *, int)
int(* tfb_tcp_handoff_ok)(struct tcpcb *)
void(* tfb_tcp_mtu_chg)(struct tcpcb *)
int(* tfb_tcp_fb_init)(struct tcpcb *)
void(* tfb_tcp_do_segment)(struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, int, int, uint8_t)
void(* tfb_tcp_hpts_do_segment)(struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, int, int, uint8_t, int, struct timeval *)
void(* tfb_tcp_rexmit_tmr)(struct tcpcb *)
int(* tfb_tcp_timer_stop_all)(struct tcpcb *)
void(* tfb_tcp_timer_activate)(struct tcpcb *, uint32_t, u_int)
char tfi_name[TCP_FUNCTION_NAME_LEN_MAX]
char tfi_alias[TCP_FUNCTION_NAME_LEN_MAX]
char tf_name[TCP_FUNCTION_NAME_LEN_MAX]
struct tcp_function_block * tf_fb
TAILQ_ENTRY(tcp_function) tf_next
struct tsegqe_head t_segq
unsigned int * t_tfo_pending
struct sackblk sackblks[MAX_SACK_BLKS]
uint8_t t_end_info_bytes[TCP_END_BYTE_INFO]
const char * t_output_caller
struct tcp_timer * t_timers
struct tcp_log_stailq t_logs
union tcpcb::@55 t_tfo_cookie
int32_t t_stats_gput_prev
struct tcp_log_id_bucket * t_lib
uint32_t t_end_info_status
u_int t_pmtud_saved_maxseg
struct statsblob * t_stats
uint8_t t_tfo_client_cookie_len
uint32_t snd_ssthresh_prev
struct tcp_log_id_node * t_lin
uint32_t t_dsack_tlp_bytes
TAILQ_HEAD(sackhole_head, sackhole) snd_holes
uint8_t client[TCP_FASTOPEN_MAX_COOKIE_LEN]
struct tcp_function_block * t_fb
uint64_t tcps_rcvpartduppack
uint64_t tcps_pcbcachemiss
uint64_t tcps_pmtud_blackhole_activated_min_mss
uint64_t tcps_dsack_bytes
uint64_t tcps_timeoutdrop
uint64_t tcps_rcvpartdupbyte
uint64_t tcps_cachedssthresh
uint64_t tcps_sndrexmitbyte
uint64_t tcps_cachedrttvar
uint64_t tcps_dsack_tlp_bytes
uint64_t tcps_sack_rexmit_bytes
uint64_t tcps_persisttimeo
uint64_t tcps_sc_bucketoverflow
uint64_t tcps_rcvpackafterwin
uint64_t tcps_sack_recovery_episode
uint64_t tcps_sc_recvcookie
uint64_t tcps_sig_rcvbadsig
uint64_t tcps_rcvreassfull
uint64_t tcps_sack_sboverflow
uint64_t tcps_sig_err_sigopt
uint64_t tcps_sc_cacheoverflow
uint64_t tcps_sack_lostrexmt
uint64_t tcps_rcvbyteafterwin
uint64_t tcps_dsack_count
uint64_t tcps_sig_err_nosigopt
uint64_t tcps_sig_err_buildsig
uint64_t tcps_sack_rcv_blocks
uint64_t tcps_sc_sendcookie
uint64_t tcps_pmtud_blackhole_failed
uint64_t tcps_sc_completed
uint64_t tcps_tw_recycles
uint64_t tcps_sc_zonefail
uint64_t tcps_tw_responds
uint64_t tcps_rcvafterclose
uint64_t tcps_persistdrop
uint64_t tcps_sc_retransmitted
uint64_t tcps_sndrexmitpack
uint64_t tcps_minmssdrops
uint64_t tcps_finwait2_drops
uint64_t tcps_tunneled_pkts
uint64_t tcps_sack_rexmits
uint64_t tcps_usedssthresh
uint64_t tcps_rcvacktoomuch
uint64_t tcps_sndrexmitbad
uint64_t tcps_tunneled_errs
uint64_t tcps_sig_rcvgoodsig
uint64_t tcps_hc_bucketoverflow
uint64_t tcps_pmtud_blackhole_activated
uint64_t tcps_connattempt
uint64_t tcps_sack_send_blocks
uint64_t tcps_rcvwinprobe
TAILQ_ENTRY(tcptw) tw_2msl
TAILQ_ENTRY(tseg_qent) tqe_q
#define TCP_FUNCTION_NAME_LEN_MAX
void tcp_inptoxtp(const struct inpcb *inp, struct xtcpcb *xt)
struct tcpcb * tcp_newtcpcb(struct inpcb *)
struct tcptemp * tcpip_maketemplate(struct inpcb *)
void tcp_handle_wakeup(struct tcpcb *, struct socket *)
int register_tcp_functions_as_name(struct tcp_function_block *blk, const char *name, int wait)
VNET_DECLARE(counter_u64_t, tcps_states[TCP_NSTATES])
struct tcp_function_block * find_and_ref_tcp_fb(struct tcp_function_block *fs)
void tcp_hc_update(struct in_conninfo *, struct hc_metrics_lite *)
uint32_t tcp_maxmtu6(struct in_conninfo *, struct tcp_ifcap *)
struct tcp_function_block * find_and_ref_tcp_functions(struct tcp_function_set *fs)
void tcp_timer_stop(struct tcpcb *, uint32_t)
void tcp_decrement_paced_conn(void)
int tcp_stats_sample_rollthedice(struct tcpcb *tp, void *seed_bytes, size_t seed_len)
void tcp_update_dsack_list(struct tcpcb *, tcp_seq, tcp_seq)
int register_tcp_functions(struct tcp_function_block *blk, int wait)
int tcp_autorcvbuf(struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, int)
int tcp_can_enable_pacing(void)
static uint16_t tcp_get_flags(const struct tcphdr *th)
void tcp_mss_update(struct tcpcb *, int, int, struct hc_metrics_lite *, struct tcp_ifcap *)
void tcp_sack_partialack(struct tcpcb *, struct tcphdr *)
void tcp_lost_retransmission(struct tcpcb *, struct tcphdr *)
void tcp_clean_sackreport(struct tcpcb *tp)
u_int tcp_fixed_maxseg(const struct tcpcb *)
void tcp_newreno_partial_ack(struct tcpcb *, struct tcphdr *)
void tcp_hc_get(struct in_conninfo *, struct hc_metrics_lite *)
counter_u64_t tcp_inp_lro_compressed
void tcp_sack_lost_retransmission(struct tcpcb *, struct tcphdr *)
counter_u64_t tcp_inp_lro_locks_taken
counter_u64_t tcp_uncomp_total
static void tcp_set_flags(struct tcphdr *th, uint16_t flags)
void tcp_reass_global_init(void)
#define TCP_FUNC_OUTPUT_CANDROP
void tcp_setpersist(struct tcpcb *)
void tcp_do_segment(struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, int, int, uint8_t)
void cc_ecnpkt_handler(struct tcpcb *tp, struct tcphdr *th, uint8_t iptos)
void tcp_twstart(struct tcpcb *)
void cc_ecnpkt_handler_flags(struct tcpcb *tp, uint16_t flags, uint8_t iptos)
int deregister_tcp_functions(struct tcp_function_block *blk, bool quiesce, bool force)
int register_tcp_functions_as_names(struct tcp_function_block *blk, int wait, const char *names[], int *num_names)
int tcp_ctloutput(struct socket *, struct sockopt *)
int tcp_input_with_port(struct mbuf **, int *, int, uint16_t)
u_int tcp_maxseg(const struct tcpcb *)
int tcp_timer_suspend(struct tcpcb *, uint32_t)
int tcp_ctloutput_set(struct inpcb *inp, struct sockopt *sopt)
struct inpcb * tcp_drop_syn_sent(struct inpcb *, int)
int tcp_input(struct mbuf **, int *, int)
void tcp_free_sackholes(struct tcpcb *tp)
int tcp_sack_doack(struct tcpcb *, struct tcpopt *, tcp_seq)
static void tcp_fields_to_net(struct tcphdr *th)
VNET_PCPUSTAT_DECLARE(struct tcpstat, tcpstat)
void cc_post_recovery(struct tcpcb *tp, struct tcphdr *th)
void tcp_trace(short, short, struct tcpcb *, void *, struct tcphdr *, int)
tcp_seq tcp_new_isn(struct in_conninfo *)
void tcp_switch_back_to_default(struct tcpcb *tp)
int tcp_twcheck(struct inpcb *, struct tcpopt *, struct tcphdr *, struct mbuf *, int)
void tcp_respond(struct tcpcb *, void *, struct tcphdr *, struct mbuf *, tcp_seq, tcp_seq, int)
uint32_t tcp_hc_getmtu(struct in_conninfo *)
void tcp_reass_flush(struct tcpcb *)
int tcp_reass(struct tcpcb *, struct tcphdr *, tcp_seq *, int *, struct mbuf *)
void tcp_discardcb(struct tcpcb *)
bool tcp_freecb(struct tcpcb *)
void tcp_timer_activate(struct tcpcb *, uint32_t, u_int)
struct sackhole * tcp_sack_output(struct tcpcb *tp, int *sack_bytes_rexmt)
void tcp6_use_min_mtu(struct tcpcb *)
void tcp_hc_updatemtu(struct in_conninfo *, uint32_t)
void tcp_tw_zone_change(void)
uint32_t tcp_compute_initwnd(uint32_t)
struct tcpcb * tcp_drop(struct tcpcb *, int)
static void tcp_fields_to_host(struct tcphdr *th)
counter_u64_t tcp_inp_lro_wokeup_queue
void tcp_sndbuf_autoscale(struct tcpcb *, struct socket *, uint32_t)
int tcp_dsack_block_exists(struct tcpcb *)
counter_u64_t tcp_bad_csums
void tcp_update_sack_list(struct tcpcb *tp, tcp_seq rcv_laststart, tcp_seq rcv_lastend)
struct mbuf * tcp_m_copym(struct mbuf *m, int32_t off0, int32_t *plen, int32_t seglimit, int32_t segsize, struct sockbuf *sb, bool hw_tls)
counter_u64_t tcp_would_have_but
counter_u64_t tcp_comp_total
void tcp_ctlinput_viaudp(int, struct sockaddr *, void *, void *)
void cc_cong_signal(struct tcpcb *tp, struct tcphdr *th, uint32_t type)
void cc_conn_init(struct tcpcb *tp)
void tcp_dooptions(struct tcpopt *, u_char *, int, int)
uint32_t tcp_maxmtu(struct in_conninfo *, struct tcp_ifcap *)
void tcp_mss(struct tcpcb *, int)
int inp_to_cpuid(struct inpcb *inp)
void tcp_ctlinput(int, struct sockaddr *, void *)
counter_u64_t tcp_extra_mbuf
TAILQ_HEAD(tsegqe_head, tseg_qent)
void tcp_log_end_status(struct tcpcb *tp, uint8_t status)
void tcp_xmit_timer(struct tcpcb *, int)
uint32_t tcp_ack_war_time_window
int tcp_addoptions(struct tcpopt *, u_char *)
void tcp_do_prr_ack(struct tcpcb *, struct tcphdr *, struct tcpopt *)
void tcp_timers_unsuspend(struct tcpcb *, uint32_t)
void tcpip_fillheaders(struct inpcb *, uint16_t, void *, void *)
void tcp_dropwithreset(struct mbuf *, struct tcphdr *, struct tcpcb *, int, int)
int tcp_mssopt(struct in_conninfo *)
#define TCP_END_BYTE_INFO
void tcp_state_change(struct tcpcb *, int)
struct pr_usrreqs tcp_usrreqs
void tcp_pulloutofband(struct socket *, struct tcphdr *, struct mbuf *, int)
int tcp_default_output(struct tcpcb *)
char * tcp_log_addrs(struct in_conninfo *, struct tcphdr *, void *, const void *)
counter_u64_t tcp_inp_lro_direct_queue
int tcp_newreno(struct tcpcb *, struct tcphdr *)
int tcp_default_ctloutput(struct inpcb *inp, struct sockopt *sopt)
void tcp_record_dsack(struct tcpcb *tp, tcp_seq start, tcp_seq end, int tlp)
struct tcpcb * tcp_close(struct tcpcb *)
int tcp_compute_pipe(struct tcpcb *)
void tcp_sack_adjust(struct tcpcb *tp)
int find_tcp_function_alias(struct tcp_function_block *blk, struct tcp_function_set *fs)
void kmod_tcpstat_add(int statnum, int val)
STAILQ_HEAD(tcp_log_stailq, tcp_log_mem)
void tcp_twclose(struct tcptw *, int)
int tcp_timer_active(struct tcpcb *, uint32_t)
void cc_ack_received(struct tcpcb *tp, struct tcphdr *th, uint16_t nsegs, uint16_t type)
static void tcp_account_for_send(struct tcpcb *tp, uint32_t len, uint8_t is_rxt, uint8_t is_tlp, int hw_tls)
void tcp_clean_dsack_blocks(struct tcpcb *tp)
char * tcp_log_vain(struct in_conninfo *, struct tcphdr *, void *, const void *)
uint32_t tcp_new_ts_offset(struct in_conninfo *)