BBN-Vax-TCP/bbnnet/ip.h
struct ip { /* ip leader */
#ifdef mbb
unchar ip_x1:2, /* (unused) */
ip_v:4, /* version */
ip_hl:4; /* header length */
#else /* vax */
unchar ip_hl:4, /* header length */
ip_v:4; /* version */
#endif
unchar ip_tos; /* type of service */
#define ip_mff ip_tos /* more fragments flag (input) */
unsigned short ip_len; /* total length */
unsigned short ip_id; /* identification */
unsigned short ip_off; /* fragment offset field */
#define ip_df 0x4000 /* dont fragment flag */
#define ip_mf 0x2000 /* more fragments flag (output) */
unchar ip_ttl; /* time to live */
unchar ip_p; /* protocol */
unsigned short ip_sum; /* checksum */
#define ip_end ip_sum /* fragment end */
union {
struct socket ip_s; /* source address */
struct ip *ip_nxt; /* ->next fragment */
} I_sun;
#define ip_src I_sun.ip_s
#define ip_next I_sun.ip_nxt
union {
struct socket ip_d; /* destination address */
struct ip *ip_prv; /* ->prev fragment */
} I_dun;
#define ip_dst I_dun.ip_d
#define ip_prev I_dun.ip_prv
};
struct ipq { /* ip reass.q header */
struct ip iqx; /* dummy ip element for top of list */
struct ipq *iq_next; /* -> next chain on q */
struct ipq *iq_prev; /* -> prev chain on q */
struct ip iqh; /* fragment header */
};
#define IPVERSION 4 /* internet protocol version number */
#define IPLOLINK 155 /* internet link numbers */
#define IPHILINK 158
#define IPLINK IPLOLINK
#define MAXTTL 255 /* maximum time to live (seconds) */