aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/zpu/lwip/lwip-1.3.1/src/netif/ppp/vjbsdhdr.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/zpu/lwip/lwip-1.3.1/src/netif/ppp/vjbsdhdr.h')
-rw-r--r--firmware/zpu/lwip/lwip-1.3.1/src/netif/ppp/vjbsdhdr.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/firmware/zpu/lwip/lwip-1.3.1/src/netif/ppp/vjbsdhdr.h b/firmware/zpu/lwip/lwip-1.3.1/src/netif/ppp/vjbsdhdr.h
new file mode 100644
index 000000000..f46267614
--- /dev/null
+++ b/firmware/zpu/lwip/lwip-1.3.1/src/netif/ppp/vjbsdhdr.h
@@ -0,0 +1,75 @@
+#ifndef VJBSDHDR_H
+#define VJBSDHDR_H
+
+#include "lwip/tcp.h"
+
+/*
+ * Structure of an internet header, naked of options.
+ *
+ * We declare ip_len and ip_off to be short, rather than u_short
+ * pragmatically since otherwise unsigned comparisons can result
+ * against negative integers quite easily, and fail in subtle ways.
+ */
+PACK_STRUCT_BEGIN
+struct ip
+{
+#if defined(NO_CHAR_BITFIELDS)
+ u_char ip_hl_v; /* bug in GCC for mips means the bitfield stuff will sometimes break - so we use a char for both and get round it with macro's instead... */
+#else
+#if BYTE_ORDER == LITTLE_ENDIAN
+ unsigned ip_hl:4, /* header length */
+ ip_v :4; /* version */
+#elif BYTE_ORDER == BIG_ENDIAN
+ unsigned ip_v :4, /* version */
+ ip_hl:4; /* header length */
+#else
+ COMPLAIN - NO BYTE ORDER SELECTED!
+#endif
+#endif
+ u_char ip_tos; /* type of service */
+ u_short ip_len; /* total length */
+ u_short ip_id; /* identification */
+ u_short ip_off; /* fragment offset field */
+#define IP_DF 0x4000 /* dont fragment flag */
+#define IP_MF 0x2000 /* more fragments flag */
+#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
+ u_char ip_ttl; /* time to live */
+ u_char ip_p; /* protocol */
+ u_short ip_sum; /* checksum */
+ struct in_addr ip_src,ip_dst; /* source and dest address */
+};
+PACK_STRUCT_END
+
+typedef u32_t tcp_seq;
+
+/*
+ * TCP header.
+ * Per RFC 793, September, 1981.
+ */
+PACK_STRUCT_BEGIN
+struct tcphdr
+{
+ u_short th_sport; /* source port */
+ u_short th_dport; /* destination port */
+ tcp_seq th_seq; /* sequence number */
+ tcp_seq th_ack; /* acknowledgement number */
+#if defined(NO_CHAR_BITFIELDS)
+ u_char th_x2_off;
+#else
+#if BYTE_ORDER == LITTLE_ENDIAN
+ unsigned th_x2 :4, /* (unused) */
+ th_off:4; /* data offset */
+#endif
+#if BYTE_ORDER == BIG_ENDIAN
+ unsigned th_off:4, /* data offset */
+ th_x2 :4; /* (unused) */
+#endif
+#endif
+ u_char th_flags;
+ u_short th_win; /* window */
+ u_short th_sum; /* checksum */
+ u_short th_urp; /* urgent pointer */
+};
+PACK_STRUCT_END
+
+#endif /* VJBSDHDR_H */