about summary refs log tree commit diff
path: root/include/netinet
diff options
context:
space:
mode:
Diffstat (limited to 'include/netinet')
-rw-r--r--include/netinet/tcp.h45
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