1 /* ip_var.h 6.1 83/07/29 */ 2 3 /* 4 * Overlay for ip header used by other protocols (tcp, udp). 5 */ 6 struct ipovly { 7 caddr_t ih_next, ih_prev; /* for protocol sequence q's */ 8 u_char ih_x1; /* (unused) */ 9 u_char ih_pr; /* protocol */ 10 short ih_len; /* protocol length */ 11 struct in_addr ih_src; /* source internet address */ 12 struct in_addr ih_dst; /* destination internet address */ 13 }; 14 15 /* 16 * Ip reassembly queue structure. Each fragment 17 * being reassembled is attached to one of these structures. 18 * They are timed out after ipq_ttl drops to 0, and may also 19 * be reclaimed if memory becomes tight. 20 */ 21 struct ipq { 22 struct ipq *next,*prev; /* to other reass headers */ 23 u_char ipq_ttl; /* time for reass q to live */ 24 u_char ipq_p; /* protocol of this fragment */ 25 u_short ipq_id; /* sequence id for reassembly */ 26 struct ipasfrag *ipq_next,*ipq_prev; 27 /* to ip headers of fragments */ 28 struct in_addr ipq_src,ipq_dst; 29 }; 30 31 /* 32 * Ip header, when holding a fragment. 33 * 34 * Note: ipf_next must be at same offset as ipq_next above 35 */ 36 struct ipasfrag { 37 #ifdef vax 38 u_char ip_hl:4, 39 ip_v:4; 40 #endif 41 u_char ipf_mff; /* copied from (ip_off&IP_MF) */ 42 short ip_len; 43 u_short ip_id; 44 short ip_off; 45 u_char ip_ttl; 46 u_char ip_p; 47 u_short ip_sum; 48 struct ipasfrag *ipf_next; /* next fragment */ 49 struct ipasfrag *ipf_prev; /* previous fragment */ 50 }; 51 52 struct ipstat { 53 int ips_badsum; /* checksum bad */ 54 int ips_tooshort; /* packet too short */ 55 int ips_toosmall; /* not enough data */ 56 int ips_badhlen; /* ip header length < data size */ 57 int ips_badlen; /* ip length < ip header length */ 58 }; 59 60 #ifdef KERNEL 61 /* flags passed to ip_output as last parameter */ 62 #define IP_FORWARDING 0x1 /* most of ip header exists */ 63 #define IP_ROUTETOIF 0x10 /* same as SO_DONTROUTE */ 64 #define IP_ALLOWBROADCAST SS_PRIV /* can send broadcast packets */ 65 66 struct ipstat ipstat; 67 struct ipq ipq; /* ip reass. queue */ 68 u_short ip_id; /* ip packet ctr, for ids */ 69 #endif 70