|
|
1.1 root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.