diff options
Diffstat (limited to 'include/netinet')
-rw-r--r-- | include/netinet/tcp.h | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/include/netinet/tcp.h b/include/netinet/tcp.h index 5639b89a..9be2b940 100644 --- a/include/netinet/tcp.h +++ b/include/netinet/tcp.h @@ -44,12 +44,24 @@ #define SOL_TCP 6 #include <sys/types.h> #include <sys/socket.h> -#endif +#include <endian.h> + +typedef u_int32_t tcp_seq; +#define TH_FIN 0x01 +#define TH_SYN 0x02 +#define TH_RST 0x04 +#define TH_PUSH 0x08 +#define TH_ACK 0x10 +#define TH_URG 0x20 + +struct tcphdr { #ifdef _GNU_SOURCE -#include <endian.h> -struct tcphdr -{ +#ifdef __GNUC__ + __extension__ +#endif + union { struct { + u_int16_t source; u_int16_t dest; u_int32_t seq; @@ -78,8 +90,33 @@ struct tcphdr u_int16_t window; u_int16_t check; u_int16_t urg_ptr; + + }; struct { +#endif + + u_int16_t th_sport; + u_int16_t th_dport; + u_int32_t th_seq; + u_int32_t th_ack; +#if __BYTE_ORDER == __LITTLE_ENDIAN + u_int8_t th_x2:4; + u_int8_t th_off:4; +#else + u_int8_t th_off:4; + u_int8_t th_x2:4; +#endif + u_int8_t th_flags; + u_int16_t th_win; + u_int16_t th_sum; + u_int16_t th_urp; + +#ifdef _GNU_SOURCE + }; }; +#endif }; +#endif +#ifdef _GNU_SOURCE #define TCPI_OPT_TIMESTAMPS 1 #define TCPI_OPT_SACK 2 #define TCPI_OPT_WSCALE 4 |