]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
ip-packet: Define our own structs to handle TCP/UDP headers
authorTobias Brunner <tobias@strongswan.org>
Thu, 24 Jul 2014 12:12:50 +0000 (14:12 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 9 Sep 2014 08:56:15 +0000 (10:56 +0200)
src/libipsec/ip_packet.c

index f6e08c0cb4f37e4c0ed12b15cf1a11ec55957d93..8065262927c5b2043ebd517c01c8e9f42f56a888 100644 (file)
 #include <sys/types.h>
 #include <netinet/in.h>
 #include <netinet/ip.h>
-#include <netinet/udp.h>
-#include <netinet/tcp.h>
 #ifdef HAVE_NETINET_IP6_H
 #include <netinet/ip6.h>
 #endif
 
+/**
+ * TCP header, defined here because platforms disagree regarding member names
+ * and unfortunately Android does not define a variant with BSD names.
+ */
+struct tcphdr {
+       u_int16_t source;
+       u_int16_t dest;
+       u_int32_t seq;
+       u_int32_t ack_seq;
+       u_int16_t flags;
+       u_int16_t window;
+       u_int16_t check;
+       u_int16_t urg_ptr;
+} __attribute__((packed));
+
+/**
+ * UDP header, similar to the TCP header the system headers disagree on member
+ * names.  Linux uses a union and on Android we could define __FAVOR_BSD to get
+ * the BSD member names, but this is simpler and more consistent with the above.
+ */
+struct udphdr {
+       u_int16_t source;
+       u_int16_t dest;
+       u_int16_t len;
+       u_int16_t check;
+} __attribute__((packed));
+
 typedef struct private_ip_packet_t private_ip_packet_t;
 
 /**