1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #ifndef _IP_FW_H
50 #define _IP_FW_H
51
52 struct ip_fw
53 {
54 struct ip_fw *fw_next;
55 struct in_addr fw_src, fw_dst;
56 struct in_addr fw_smsk, fw_dmsk;
57 struct in_addr fw_via;
58 unsigned short fw_flg;
59 unsigned short fw_nsp, fw_ndp;
60
61
62
63 #define IP_FW_MAX_PORTS 10
64 unsigned short fw_pts[IP_FW_MAX_PORTS];
65 unsigned long fw_pcnt,fw_bcnt;
66 unsigned char fw_tosand, fw_tosxor;
67 };
68
69
70
71
72
73 #define IP_FW_F_ALL 0x000
74 #define IP_FW_F_TCP 0x001
75 #define IP_FW_F_UDP 0x002
76 #define IP_FW_F_ICMP 0x003
77 #define IP_FW_F_KIND 0x003
78 #define IP_FW_F_ACCEPT 0x004
79
80
81 #define IP_FW_F_SRNG 0x008
82
83
84
85 #define IP_FW_F_DRNG 0x010
86
87
88
89
90 #define IP_FW_F_PRN 0x020
91 #define IP_FW_F_BIDIR 0x040
92 #define IP_FW_F_TCPSYN 0x080
93 #define IP_FW_F_ICMPRPL 0x100
94 #define IP_FW_F_MASQ 0x200
95 #define IP_FW_F_TCPACK 0x400
96
97 #define IP_FW_F_MASK 0x7FF
98
99
100
101
102
103
104
105 #define IP_FW_BASE_CTL 64
106
107 #define IP_FW_COMMAND 0x00FF
108 #define IP_FW_TYPE 0x0300
109 #define IP_FW_SHIFT 8
110
111 #define IP_FW_FWD 0
112 #define IP_FW_IN 1
113 #define IP_FW_OUT 2
114 #define IP_FW_ACCT 3
115
116 #define IP_FW_INSERT (IP_FW_BASE_CTL)
117 #define IP_FW_APPEND (IP_FW_BASE_CTL+1)
118 #define IP_FW_DELETE (IP_FW_BASE_CTL+2)
119 #define IP_FW_FLUSH (IP_FW_BASE_CTL+3)
120 #define IP_FW_ZERO (IP_FW_BASE_CTL+4)
121 #define IP_FW_POLICY (IP_FW_BASE_CTL+5)
122 #define IP_FW_CHECK (IP_FW_BASE_CTL+6)
123
124 #define IP_FW_INSERT_FWD (IP_FW_INSERT | (IP_FW_FWD << IP_FW_SHIFT))
125 #define IP_FW_APPEND_FWD (IP_FW_APPEND | (IP_FW_FWD << IP_FW_SHIFT))
126 #define IP_FW_DELETE_FWD (IP_FW_DELETE | (IP_FW_FWD << IP_FW_SHIFT))
127 #define IP_FW_FLUSH_FWD (IP_FW_FLUSH | (IP_FW_FWD << IP_FW_SHIFT))
128 #define IP_FW_ZERO_FWD (IP_FW_ZERO | (IP_FW_FWD << IP_FW_SHIFT))
129 #define IP_FW_POLICY_FWD (IP_FW_POLICY | (IP_FW_FWD << IP_FW_SHIFT))
130 #define IP_FW_CHECK_FWD (IP_FW_CHECK | (IP_FW_FWD << IP_FW_SHIFT))
131
132 #define IP_FW_INSERT_IN (IP_FW_INSERT | (IP_FW_IN << IP_FW_SHIFT))
133 #define IP_FW_APPEND_IN (IP_FW_APPEND | (IP_FW_IN << IP_FW_SHIFT))
134 #define IP_FW_DELETE_IN (IP_FW_DELETE | (IP_FW_IN << IP_FW_SHIFT))
135 #define IP_FW_FLUSH_IN (IP_FW_FLUSH | (IP_FW_IN << IP_FW_SHIFT))
136 #define IP_FW_ZERO_IN (IP_FW_ZERO | (IP_FW_IN << IP_FW_SHIFT))
137 #define IP_FW_POLICY_IN (IP_FW_POLICY | (IP_FW_IN << IP_FW_SHIFT))
138 #define IP_FW_CHECK_IN (IP_FW_CHECK | (IP_FW_IN << IP_FW_SHIFT))
139
140 #define IP_FW_INSERT_OUT (IP_FW_INSERT | (IP_FW_OUT << IP_FW_SHIFT))
141 #define IP_FW_APPEND_OUT (IP_FW_APPEND | (IP_FW_OUT << IP_FW_SHIFT))
142 #define IP_FW_DELETE_OUT (IP_FW_DELETE | (IP_FW_OUT << IP_FW_SHIFT))
143 #define IP_FW_FLUSH_OUT (IP_FW_FLUSH | (IP_FW_OUT << IP_FW_SHIFT))
144 #define IP_FW_ZERO_OUT (IP_FW_ZERO | (IP_FW_OUT << IP_FW_SHIFT))
145 #define IP_FW_POLICY_OUT (IP_FW_POLICY | (IP_FW_OUT << IP_FW_SHIFT))
146 #define IP_FW_CHECK_OUT (IP_FW_CHECK | (IP_FW_OUT << IP_FW_SHIFT))
147
148 #define IP_ACCT_INSERT (IP_FW_INSERT | (IP_FW_ACCT << IP_FW_SHIFT))
149 #define IP_ACCT_APPEND (IP_FW_APPEND | (IP_FW_ACCT << IP_FW_SHIFT))
150 #define IP_ACCT_DELETE (IP_FW_DELETE | (IP_FW_ACCT << IP_FW_SHIFT))
151 #define IP_ACCT_FLUSH (IP_FW_FLUSH | (IP_FW_ACCT << IP_FW_SHIFT))
152 #define IP_ACCT_ZERO (IP_FW_ZERO | (IP_FW_ACCT << IP_FW_SHIFT))
153
154 struct ip_fwpkt
155 {
156 struct iphdr fwp_iph;
157 union {
158 struct tcphdr fwp_tcph;
159 struct udphdr fwp_udph;
160 struct icmphdr fwp_icmph;
161 } fwp_protoh;
162 struct in_addr fwp_via;
163 };
164
165
166
167
168
169 #ifdef __KERNEL__
170
171 #include <linux/config.h>
172
173 #ifdef CONFIG_IP_MASQUERADE
174 struct ip_masq {
175 struct ip_masq *next;
176 struct timer_list timer;
177 __u16 protocol;
178 __u32 src, dst;
179 __u16 sport,dport;
180 __u16 mport;
181 __u32 init_seq;
182 short delta;
183 short previous_delta;
184 char sawfin;
185 };
186 extern struct ip_masq *ip_msq_hosts;
187 extern void ip_fw_masquerade(struct sk_buff **, struct device *);
188 extern int ip_fw_demasquerade(struct sk_buff *);
189 #endif
190 #ifdef CONFIG_IP_FIREWALL
191 extern struct ip_fw *ip_fw_in_chain;
192 extern struct ip_fw *ip_fw_out_chain;
193 extern struct ip_fw *ip_fw_fwd_chain;
194 extern int ip_fw_in_policy;
195 extern int ip_fw_out_policy;
196 extern int ip_fw_fwd_policy;
197 extern int ip_fw_ctl(int, void *, int);
198 #endif
199 #ifdef CONFIG_IP_ACCT
200 extern struct ip_fw *ip_acct_chain;
201 extern void ip_acct_cnt(struct iphdr *, struct device *, struct ip_fw *);
202 extern int ip_acct_ctl(int, void *, int);
203 #endif
204
205
206 extern int ip_fw_chk(struct iphdr *, struct device *rif,struct ip_fw *, int, int);
207 extern void ip_fw_init(void);
208 #endif
209
210 #ifdef CONFIG_IP_MASQUERADE
211
212 #undef DEBUG_MASQ
213
214 #define MASQUERADE_EXPIRE_TCP 15*60*HZ
215 #define MASQUERADE_EXPIRE_TCP_FIN 2*60*HZ
216 #define MASQUERADE_EXPIRE_UDP 5*60*HZ
217
218
219
220
221
222 #define PORT_MASQ_BEGIN 60000
223 #define PORT_MASQ_END (PORT_MASQ_BEGIN+4096)
224 #define FTP_DPORT_TBD (PORT_MASQ_END+1)
225 #endif
226
227 #endif