#ifndef _TCP_H_ #define _TCP_H_ #include #include //#define TCP_DEBUG_OPTION 1 #if defined(TCP_DEBUG_OPTION) #define TCP_DEBUG(x...) debug_printf("[tcp] " x); #else #define TCP_DEBUG(fmt, ...) ((void)0) #endif /** * TCP header */ #define TCP_FIN 0x0001 #define TCP_SYN 0x0002 #define TCP_RST 0x0004 #define TCP_PSH 0x0008 #define TCP_ACK 0x0010 #define TCP_URG 0x0020 #define TCP_OPTION_END 0 #define TCP_OPTION_NOOP 1 #define TCP_OPTION_MSS 2 struct tcp_hdr { struct uint16_net src; struct uint16_net dest; /* src/dest TCP ports */ struct uint32_net seq; struct uint32_net ack; struct uint16_net flags; struct uint16_net wnd; struct uint16_net chksum; struct uint16_net up; } __attribute__((__packed__)); #define TCP_HLEN_MIN 20 #define TCP_HLEN(hdr) ((uint16_rd((hdr)->flags) >> 12) * 4) #endif