This source file includes following definitions.
- net16
- net32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef _TCP_IP_H
23 #define _TCP_IP_H
24
25 #include "dev.h"
26 #include <linux/sock_ioctl.h>
27 #include <netinet/protocols.h>
28
29 struct rtable
30 {
31 unsigned long net;
32 unsigned long router;
33 struct device *dev;
34 struct rtable *next;
35 };
36
37 struct route
38 {
39 char route_size;
40 char pointer;
41 unsigned long route[MAX_ROUTE];
42 };
43
44 struct timestamp
45 {
46 unsigned char len;
47 unsigned char ptr;
48 union
49 {
50 unsigned char flags:4, overflow:4;
51 unsigned char full_char;
52 } x;
53 unsigned long data[9];
54 };
55
56 struct options
57 {
58 struct route record_route;
59 struct route loose_route;
60 struct route strict_route;
61 struct timestamp tstamp;
62 unsigned short security;
63 unsigned short compartment;
64 unsigned short handling;
65 unsigned short stream;
66 unsigned tcc;
67 };
68
69
70
71 struct ip_header
72 {
73 unsigned char ihl:4, version:4;
74 unsigned char tos;
75 unsigned short tot_len;
76 unsigned short id;
77 unsigned short frag_off;
78 unsigned char ttl;
79 unsigned char protocol;
80 unsigned short check;
81 unsigned long saddr;
82 unsigned long daddr;
83
84 };
85
86
87 #define IPOPT_END 0
88 #define IPOPT_NOOP 1
89 #define IPOPT_SEC 130
90 #define IPOPT_LSRR 131
91 #define IPOPT_SSRR 137
92 #define IPOPT_RR 7
93 #define IPOPT_SID 136
94 #define IPOPT_TIMESTAMP 68
95 #define IP_LOOPBACK_ADDR 0x0100007f
96
97 static inline unsigned short
98 net16(unsigned short x)
99 {
100 __asm__("xchgb %%cl,%%ch": "=c" (x) : "0" (x) : "cx");
101 return (x);
102 }
103
104 static inline unsigned long
105 net32(unsigned long x)
106 {
107 __asm__("xchgb %%cl,%%ch\n"
108 "\t roll $16,%%ecx\n"
109 "\t xchgb %%cl,%%ch":"=c" (x):"0"(x):"cx");
110 return (x);
111 }
112
113
114 #define MAX_IP_PROTOS 32
115
116
117 struct ip_protocol
118 {
119 int (*handler) (struct sk_buff *skb, struct device *dev,
120 struct options *opt, unsigned long daddr,
121 unsigned short len, unsigned long saddr,
122 int redo, struct ip_protocol *protocol);
123 void (*err_handler) (int err, unsigned char *buff, unsigned long daddr,
124 unsigned long saddr, struct ip_protocol *ipprot);
125 struct ip_protocol *next;
126 unsigned char protocol;
127 unsigned char copy:1;
128 void *data;
129 };
130
131 extern struct ip_protocol *ip_protocol_base;
132 extern struct ip_protocol *ip_protos[MAX_IP_PROTOS];
133
134 #define MAX_IP_ADDRES 5
135 extern unsigned long ip_addr[MAX_IP_ADDRES];
136 #define MY_IP_ADDR ip_addr[0];
137 int my_ip_addr(unsigned long);
138
139 #include "eth.h"
140
141 void
142 print_iph (struct ip_header *);
143
144 void
145 print_eth (struct enet_header *);
146
147 int ip_set_dev (struct ip_config *);
148
149 int ip_build_header(struct sk_buff *skb, unsigned long saddr,
150 unsigned long daddr, struct device **dev, int type,
151 struct options *opt, int len);
152 void ip_queue_xmit (volatile struct sock *sk, struct device *dev,
153 struct sk_buff *skb, int free);
154 void ip_retransmit(volatile struct sock *sk, int all);
155 int ip_rcv(struct sk_buff *buff, struct device *dev, struct packet_type *);
156 void add_ip_protocol (struct ip_protocol *);
157 int delete_ip_protocol (struct ip_protocol *);
158 int ip_handoff (volatile struct sock *sk);
159 unsigned short ip_compute_csum (unsigned char *buff, int len);
160 int ip_addr_match (unsigned long, unsigned long);
161 void add_route (struct rtable *rt);
162 void ip_route_check (unsigned long daddr);
163
164 #endif
165
166
167
168
169
170