📄 tcp_int.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 + -