Commit | Line | Data |
---|---|---|
b11be056 | 1 | /* ip_var.h 6.1 83/07/29 */ |
77e50f35 BJ |
2 | |
3 | /* | |
4 | * Overlay for ip header used by other protocols (tcp, udp). | |
5 | */ | |
6 | struct ipovly { | |
eb44bfb2 BJ |
7 | caddr_t ih_next, ih_prev; /* for protocol sequence q's */ |
8 | u_char ih_x1; /* (unused) */ | |
9 | u_char ih_pr; /* protocol */ | |
2b4b57cd BJ |
10 | short ih_len; /* protocol length */ |
11 | struct in_addr ih_src; /* source internet address */ | |
12 | struct in_addr ih_dst; /* destination internet address */ | |
77e50f35 BJ |
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 */ | |
2b4b57cd | 28 | struct in_addr ipq_src,ipq_dst; |
77e50f35 BJ |
29 | }; |
30 | ||
31 | /* | |
32 | * Ip header, when holding a fragment. | |
af8f6a21 SL |
33 | * |
34 | * Note: ipf_next must be at same offset as ipq_next above | |
77e50f35 BJ |
35 | */ |
36 | struct ipasfrag { | |
498aff44 | 37 | #ifdef vax |
77e50f35 BJ |
38 | u_char ip_hl:4, |
39 | ip_v:4; | |
498aff44 | 40 | #endif |
77e50f35 BJ |
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; | |
eb44bfb2 BJ |
48 | struct ipasfrag *ipf_next; /* next fragment */ |
49 | struct ipasfrag *ipf_prev; /* previous fragment */ | |
77e50f35 BJ |
50 | }; |
51 | ||
2b4b57cd | 52 | struct ipstat { |
405c9168 BJ |
53 | int ips_badsum; /* checksum bad */ |
54 | int ips_tooshort; /* packet too short */ | |
84257e80 SL |
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 */ | |
2b4b57cd BJ |
58 | }; |
59 | ||
77e50f35 | 60 | #ifdef KERNEL |
0e3f761f SL |
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 | ||
2b4b57cd | 66 | struct ipstat ipstat; |
77e50f35 | 67 | struct ipq ipq; /* ip reass. queue */ |
77e50f35 BJ |
68 | u_short ip_id; /* ip packet ctr, for ids */ |
69 | #endif |