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

📄 tcp_int.h

📁 操作系统源代码
💻 H
字号:
/*tcp_int.h*/#ifndef TCP_INT_H#define TCP_INT_Htypedef struct tcp_port{	int tp_minor;	int tp_ipdev;	int tp_flags;	int tp_state;	int tp_ipfd;	acc_t *tp_pack;	ipaddr_t tp_ipaddr;#if DEBUG	timer_t tp_delay_tim;#endif} tcp_port_t;#define TPF_EMPTY	0x0#define TPF_SUSPEND	0x1#define TPF_READ_IP	0x2#define TPF_READ_SP	0x4#define TPF_WRITE_IP	0x8#define TPF_WRITE_SP	0x10#define TPF_MORE2WRITE	0x20#define TPF_DELAY_TCP	0x40#define TPS_EMPTY	0#define TPS_SETPROTO	1#define TPS_GETCONF	2#define TPS_MAIN	3#define TPS_ERROR	4typedef struct tcp_fd{	int tf_flags;	tcp_port_t *tf_port;	int tf_srfd;	int tf_ioreq;	nwio_tcpconf_t tf_tcpconf;	get_userdata_t tf_get_userdata;	put_userdata_t tf_put_userdata;	struct tcp_conn *tf_conn;	size_t tf_write_offset;	size_t tf_write_count;	size_t tf_read_offset;	size_t tf_read_count;} tcp_fd_t;#define TFF_EMPTY	0x0#define TFF_INUSE	0x1#define TFF_IOCTL_IP	0x2#define TFF_OPTSET	0x4#define TFF_IOC_INIT_SP	0x8#define TFF_CONNECT	0x20#define TFF_WRITE_IP	0x80#define TFF_WR_URG	0x100#define TFF_PUSH_DATA	0x200#define TFF_READ_IP	0x400#define TFF_RECV_URG	0x800#define TFF_CONNECTED	0x1000typedef struct tcp_conn{	int tc_flags;	tcpport_t tc_locport;	ipaddr_t tc_locaddr;	tcpport_t tc_remport;	ipaddr_t tc_remaddr;	int tc_state;	tcp_fd_t *tc_mainuser;	tcp_fd_t *tc_readuser;	tcp_fd_t *tc_writeuser;	tcp_fd_t *tc_connuser;	int tc_orglisten;	time_t tc_senddis;	u32_t tc_SND_UNA;	/* least unacknowledged sequence number */	u32_t tc_SND_TRM;	/* next sequence number to be transmitted */	u32_t tc_SND_NXT;	/* next sequence number for new data */	u32_t tc_SND_UP;	/* urgent pointer, first sequence number not 				 * urgent */	u32_t tc_SND_PSH;	/* push pointer, data should be pushed until the				 * push pointer is reached */	u32_t tc_SND_WL1;	u32_t tc_SND_WL2;	u32_t tc_ISS;		/* initial sequence number */	u32_t tc_RCV_LO;	u32_t tc_RCV_NXT;	u32_t tc_RCV_HI;	u32_t tc_RCV_UP;	u32_t tc_IRS;	tcp_port_t *tc_port;	acc_t *tc_rcvd_data;	acc_t *tc_rcv_queue;	acc_t *tc_send_data;	acc_t *tc_remipopt;	acc_t *tc_remtcpopt;	acc_t *tc_frag2send;	u8_t tc_tos;	u8_t tc_ttl;	u16_t tc_rcv_wnd;	u16_t tc_urg_wnd;	int tc_no_retrans;	int tc_max_no_retrans;	time_t tc_0wnd_to;	time_t tc_rtt;	time_t tc_ett;	struct timer tc_major_timer;	struct timer tc_minor_timer;	struct timer tc_ack_timer;	struct timer tc_time_wait_timer;	u16_t tc_mss;	u32_t tc_snd_cwnd;	/* highest sequence number to be sent */	u32_t tc_snd_cthresh;	/* threshold for send window */	u32_t tc_snd_cinc;	/* increment for send window threshold */	u16_t tc_snd_wnd;	/* max send queue size */	int tc_error;} tcp_conn_t;#define TCF_EMPTY		0x0#define TCF_INUSE		0x1#define TCF_FIN_RECV		0x2#define TCF_RCV_PUSH		0x4#define TCF_MORE2WRITE		0x8#define TCF_SEND_ACK		0x10#define TCF_FIN_SENT		0x20#define TCF_ACK_TIMER_SET	0x40#define TCS_CLOSED		0#define TCS_LISTEN		1#define TCS_SYN_RECEIVED	2#define TCS_SYN_SENT		3#define TCS_ESTABLISHED		4#define TCS_FIN_WAIT_1		5#define TCS_FIN_WAIT_2		6#define TCS_CLOSE_WAIT		7#define TCS_CLOSING		8#define TCS_LAST_ACK		9#define TCS_TIME_WAIT		10/* tcp_recv.c */void tcp_frag2conn ARGS(( tcp_conn_t *tcp_conn,	acc_t *ip_pack, acc_t *tcp_pack ));void tcp_restart_fd_read ARGS(( tcp_conn_t *tcp_conn ));/* tcp_send.c */void tcp_restart_write ARGS(( tcp_conn_t *tcp_conn ));void tcp_set_ack_timer ARGS(( tcp_conn_t *tcp_conn ));void tcp_release_retrans ARGS(( tcp_conn_t *tcp_conn, u32_t seg_ack,	U16_t new_win ));void tcp_set_time_wait_timer ARGS(( tcp_conn_t *tcp_conn ));void tcp_restart_fd_write ARGS(( tcp_conn_t *tcp_conn ));void tcp_close_connection ARGS(( tcp_conn_t *tcp_conn,	int error ));void tcp_restart_write_port ARGS(( tcp_port_t *tcp_port ));void tcp_zero_wnd_to ARGS(( int conn, struct timer *timer ));void tcp_shutdown ARGS(( tcp_conn_t *tcp_conn ));/* tcp_lib.c */int tcp_LEmod4G ARGS(( u32_t n1, u32_t n2 ));int tcp_Lmod4G ARGS(( u32_t n1, u32_t n2 ));int tcp_GEmod4G ARGS(( u32_t n1, u32_t n2 ));int tcp_Gmod4G ARGS(( u32_t n1, u32_t n2 ));void tcp_write_state ARGS(( tcp_conn_t *tcp_conn ));void tcp_extract_ipopt ARGS(( tcp_conn_t *tcp_conn,	ip_hdr_t *ip_hdr ));void tcp_extract_tcpopt ARGS(( tcp_conn_t *tcp_conn,	tcp_hdr_t *tcp_hdr ));void tcp_get_ipopt ARGS(( tcp_conn_t *tcp_conn, ip_hdropt_t	*ip_hdropt ));void tcp_get_tcpopt ARGS(( tcp_conn_t *tcp_conn, tcp_hdropt_t	*tcp_hdropt ));acc_t *tcp_make_header ARGS(( tcp_conn_t *tcp_conn,	ip_hdr_t **ref_ip_hdr, tcp_hdr_t **ref_tcp_hdr, acc_t *data ));u16_t tcp_pack_oneCsum ARGS(( acc_t *pack,	size_t pack_length ));int tcp_check_conn ARGS(( tcp_conn_t *tcp_conn ));void tcp_print_pack ARGS(( ip_hdr_t *ip_hdr, tcp_hdr_t *tcp_hdr ));void tcp_print_conn ARGS(( tcp_conn_t *tcp_conn ));/* tcp.c */void tcp_restart_connect ARGS(( tcp_fd_t *tcp_fd ));int tcp_su4listen ARGS(( tcp_fd_t *tcp_fd ));void tcp_reply_ioctl ARGS(( tcp_fd_t *tcp_fd, int reply ));void tcp_reply_write ARGS(( tcp_fd_t *tcp_fd, size_t reply ));void tcp_reply_read ARGS(( tcp_fd_t *tcp_fd, size_t reply ));#define TCP_PORT_NR	1#define TCP_FD_NR	20#define TCP_CONN_NR	20EXTERN tcp_port_t tcp_port_table[TCP_PORT_NR];EXTERN tcp_conn_t tcp_conn_table[TCP_CONN_NR];EXTERN tcp_fd_t tcp_fd_table[TCP_FD_NR];#endif /* TCP_INT_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -