⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp.h

📁 LINUX1.0内核源代码,学习LINUX编程的一定要看。
💻 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 + -