📄 tcp.h
字号:
/* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket * interface as the means of communication with the user level. * * Definitions for the TCP module. * * Version: @(#)tcp.h 1.0.5 05/23/93 * * Authors: Ross Biro, <bir7@leland.Stanford.Edu> * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */#ifndef _TCP_H#define _TCP_H#include <linux/tcp.h>#define MAX_SYN_SIZE 44 + sizeof (struct sk_buff) + MAX_HEADER#define MAX_FIN_SIZE 40 + sizeof (struct sk_buff) + MAX_HEADER#define MAX_ACK_SIZE 40 + sizeof (struct sk_buff) + MAX_HEADER#define MAX_RESET_SIZE 40 + sizeof (struct sk_buff) + MAX_HEADER#define MAX_WINDOW 4096#define MIN_WINDOW 2048#define MAX_ACK_BACKLOG 2#define MIN_WRITE_SPACE 2048#define TCP_WINDOW_DIFF 2048/* urg_data states */#define URG_VALID 0x0100#define URG_NOTYET 0x0200#define URG_READ 0x0400#define TCP_RETR1 7 /* * This is howmany retries it does before it * tries to figure out if the gateway is * down. */#define TCP_RETR2 15 /* * This should take at least * 90 minutes to time out. */#define TCP_TIMEOUT_LEN (15*60*HZ) /* should be about 15 mins */#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to sucessfully * close the socket, about 60 seconds */#define TCP_ACK_TIME 3000 /* time to delay before sending an ACK */#define TCP_DONE_TIME 250 /* maximum time to wait before actually * destroying a socket */#define TCP_WRITE_TIME 3000 /* initial time to wait for an ACK, * after last transmit */#define TCP_CONNECT_TIME 2000 /* time to retransmit first SYN */#define TCP_SYN_RETRIES 5 /* number of times to retry openning a * connection */#define TCP_PROBEWAIT_LEN 100 /* time to wait between probes when * I've got something to write and * there is no window */#define TCP_NO_CHECK 0 /* turn to one if you want the default * to be no checksum */#define TCP_WRITE_QUEUE_MAGIC 0xa5f23477/* * TCP option */ #define TCPOPT_NOP 1#define TCPOPT_EOL 0#define TCPOPT_MSS 2/* * The next routines deal with comparing 32 bit unsigned ints * and worry about wraparound (automatic with unsigned arithmetic). */static inline int before(unsigned long seq1, unsigned long seq2){ return (long)(seq1-seq2) < 0;}static inline int after(unsigned long seq1, unsigned long seq2){ return (long)(seq1-seq2) > 0;}/* is s2<=s1<=s3 ? */static inline int between(unsigned long seq1, unsigned long seq2, unsigned long seq3){ return (after(seq1+1, seq2) && before(seq1, seq3+1));}/* * List all states of a TCP socket that can be viewed as a "connected" * state. This now includes TCP_SYN_RECV, although I am not yet fully * convinced that this is the solution for the 'getpeername(2)' * problem. Thanks to Stephen A. Wood <saw@cebaf.gov> -FvK */static inline const inttcp_connected(const int state){ return(state == TCP_ESTABLISHED || state == TCP_CLOSE_WAIT || state == TCP_FIN_WAIT1 || state == TCP_FIN_WAIT2 || state == TCP_SYN_RECV);}extern struct proto tcp_prot;extern void tcp_err(int err, unsigned char *header, unsigned long daddr, unsigned long saddr, struct inet_protocol *protocol);extern void tcp_shutdown (struct sock *sk, int how);extern int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt, unsigned long daddr, unsigned short len, unsigned long saddr, int redo, struct inet_protocol *protocol);extern int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg);extern void tcp_send_probe0(struct sock *sk);extern void tcp_enqueue_partial(struct sk_buff *, struct sock *);extern struct sk_buff * tcp_dequeue_partial(struct sock *);#endif /* _TCP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -