#ifndef _LINUX_TCP_H
#define _LINUX_TCP_H
#include <linux/skbuff.h>
#include <linux/win_minmax.h>
#include <net/sock.h>
#include <net/inet_connection_sock.h>
#include <net/inet_timewait_sock.h>
#include <uapi/linux/tcp.h>
static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb)
{ … }
static inline unsigned int __tcp_hdrlen(const struct tcphdr *th)
{ … }
static inline unsigned int tcp_hdrlen(const struct sk_buff *skb)
{ … }
static inline struct tcphdr *inner_tcp_hdr(const struct sk_buff *skb)
{ … }
static inline unsigned int inner_tcp_hdrlen(const struct sk_buff *skb)
{ … }
static inline int skb_tcp_all_headers(const struct sk_buff *skb)
{ … }
static inline int skb_inner_tcp_all_headers(const struct sk_buff *skb)
{ … }
static inline unsigned int tcp_optlen(const struct sk_buff *skb)
{ … }
#define TCP_FASTOPEN_COOKIE_MIN …
#define TCP_FASTOPEN_COOKIE_MAX …
#define TCP_FASTOPEN_COOKIE_SIZE …
struct tcp_fastopen_cookie { … };
struct tcp_sack_block_wire { … };
struct tcp_sack_block { … };
#define TCP_SACK_SEEN …
#define TCP_DSACK_SEEN …
struct tcp_options_received { … };
static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
{ … }
#define TCP_NUM_SACKS …
struct tcp_request_sock_ops;
struct tcp_request_sock { … };
static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req)
{ … }
static inline bool tcp_rsk_used_ao(const struct request_sock *req)
{ … }
#define TCP_RMEM_TO_WIN_SCALE …
struct tcp_sock { … };
enum tsq_enum { … };
enum tsq_flags { … };
#define tcp_sk(ptr) …
#define tcp_sk_rw(ptr) …
struct tcp_timewait_sock { … };
static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk)
{ … }
static inline bool tcp_passive_fastopen(const struct sock *sk)
{ … }
static inline void fastopen_queue_tune(struct sock *sk, int backlog)
{ … }
static inline void tcp_move_syn(struct tcp_sock *tp,
struct request_sock *req)
{ … }
static inline void tcp_saved_syn_free(struct tcp_sock *tp)
{ … }
static inline u32 tcp_saved_syn_len(const struct saved_syn *saved_syn)
{ … }
struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk,
const struct sk_buff *orig_skb,
const struct sk_buff *ack_skb);
static inline u16 tcp_mss_clamp(const struct tcp_sock *tp, u16 mss)
{ … }
int tcp_skb_shift(struct sk_buff *to, struct sk_buff *from, int pcount,
int shiftlen);
void __tcp_sock_set_cork(struct sock *sk, bool on);
void tcp_sock_set_cork(struct sock *sk, bool on);
int tcp_sock_set_keepcnt(struct sock *sk, int val);
int tcp_sock_set_keepidle_locked(struct sock *sk, int val);
int tcp_sock_set_keepidle(struct sock *sk, int val);
int tcp_sock_set_keepintvl(struct sock *sk, int val);
void __tcp_sock_set_nodelay(struct sock *sk, bool on);
void tcp_sock_set_nodelay(struct sock *sk);
void tcp_sock_set_quickack(struct sock *sk, int val);
int tcp_sock_set_syncnt(struct sock *sk, int val);
int tcp_sock_set_user_timeout(struct sock *sk, int val);
static inline bool dst_tcp_usec_ts(const struct dst_entry *dst)
{ … }
#endif