00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __PANALIX_TCP_HPP
00012 #define __PANALIX_TCP_HPP
00013
00014 #include "src/net/net.hpp"
00015
00016 namespace Net {
00017 namespace TCP {
00018
00019 struct socket {
00020 struct Net::ip_address ip;
00021 uint16 port;
00022 };
00023
00024 struct socket_pair {
00025 struct socket source;
00026 struct socket target;
00027 };
00028
00029 enum state_t { CLOSED, LISTEN, SYN_SENT, SYN_RECV, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, TIME_WAIT, CLOSE_WAIT, LAST_ACK, CLOSING };
00030
00031 struct tcb_t {
00032 struct socket_pair sockpair;
00033 enum state_t state;
00034
00035
00036 };
00037
00038
00039 struct tcp_header {
00040
00041 uint16 source_port_be;
00042 uint16 target_port_be;
00043 uint32 seq_no_be;
00044 uint32 ack_no_be;
00045
00046
00047 uint8 hdrlen:4;
00048 uint8 resrv:6;
00049 uint8 flags:6;
00050
00051 #if 0
00052 uint8 hdrlen;
00053 uint8 flags;
00054 #endif
00055 uint16 win_be;
00056 uint16 checksum;
00057 uint16 urgptr_be;
00058 uint8 options[0];
00059 };
00060
00061 }
00062 }
00063
00064
00065 #endif
00066