#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
#if (defined(__MWERKS__)  || defined(__CWCC__))
	#pragma options align= packed
#endif
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
#if (defined(__MWERKS__)  || defined(__CWCC__))
	#pragma options align= packed
#endif
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 */
