u_charip_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
unsignedip_hl:4,/* header length */
ip_v:4;/* version */
#elif BYTE_ORDER == BIG_ENDIAN
unsignedip_v:4,/* version */
ip_hl:4;/* header length */
#else
COMPLAIN-NOBYTEORDERSELECTED!
#endif
#endif
u_charip_tos;/* type of service */
u_shortip_len;/* total length */
u_shortip_id;/* identification */
u_shortip_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_charip_ttl;/* time to live */
u_charip_p;/* protocol */
u_shortip_sum;/* checksum */
structin_addrip_src,ip_dst;/* source and dest address */