1*4498Swnj /* ip.h 1.1 81/10/14 */ 2*4498Swnj struct ip { /* ip leader */ 3*4498Swnj unsigned char ip_hl:4, /* header length */ 4*4498Swnj ip_v:4; /* version */ 5*4498Swnj unsigned char ip_tos; /* type of service */ 6*4498Swnj #define ip_mff ip_tos /* more fragments flag (input) */ 7*4498Swnj unsigned short ip_len; /* total length */ 8*4498Swnj unsigned short ip_id; /* identification */ 9*4498Swnj unsigned short ip_off; /* fragment offset field */ 10*4498Swnj #define ip_df 0x4000 /* dont fragment flag */ 11*4498Swnj #define ip_mf 0x2000 /* more fragments flag (output) */ 12*4498Swnj unsigned char ip_ttl; /* time to live */ 13*4498Swnj unsigned char ip_p; /* protocol */ 14*4498Swnj unsigned short ip_sum; /* checksum */ 15*4498Swnj #define ip_end ip_sum /* fragment end */ 16*4498Swnj union { 17*4498Swnj struct socket ip_s; /* source address */ 18*4498Swnj struct ip *ip_nxt; /* ->next fragment */ 19*4498Swnj } I_sun; 20*4498Swnj #define ip_src I_sun.ip_s 21*4498Swnj #define ip_next I_sun.ip_nxt 22*4498Swnj union { 23*4498Swnj struct socket ip_d; /* destination address */ 24*4498Swnj struct ip *ip_prv; /* ->prev fragment */ 25*4498Swnj } I_dun; 26*4498Swnj #define ip_dst I_dun.ip_d 27*4498Swnj #define ip_prev I_dun.ip_prv 28*4498Swnj }; 29*4498Swnj 30*4498Swnj struct ipq { /* ip reass.q header */ 31*4498Swnj struct ip iqx; /* dummy ip element for top of list */ 32*4498Swnj struct ipq *iq_next; /* -> next chain on q */ 33*4498Swnj struct ipq *iq_prev; /* -> prev chain on q */ 34*4498Swnj struct ip iqh; /* fragment header */ 35*4498Swnj }; 36*4498Swnj 37*4498Swnj #define IPVERSION 4 /* internet protocol version number */ 38*4498Swnj #define IPLOLINK 155 /* internet link numbers */ 39*4498Swnj #define IPHILINK 158 40*4498Swnj #define IPLINK IPLOLINK 41*4498Swnj #define MAXTTL 255 /* maximum time to live (seconds) */ 42*4498Swnj 43