#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 */
