kbuild: use in-kernel unifdef
[linux-2.6/verdex.git] / include / linux / netfilter_ipv4 / ip_conntrack_pptp.h
blob2644b1faddd6bd05db416b038a82b62db8bd42c8
1 /* PPTP constants and structs */
2 #ifndef _CONNTRACK_PPTP_H
3 #define _CONNTRACK_PPTP_H
5 /* state of the control session */
6 enum pptp_ctrlsess_state {
7 PPTP_SESSION_NONE, /* no session present */
8 PPTP_SESSION_ERROR, /* some session error */
9 PPTP_SESSION_STOPREQ, /* stop_sess request seen */
10 PPTP_SESSION_REQUESTED, /* start_sess request seen */
11 PPTP_SESSION_CONFIRMED, /* session established */
14 /* state of the call inside the control session */
15 enum pptp_ctrlcall_state {
16 PPTP_CALL_NONE,
17 PPTP_CALL_ERROR,
18 PPTP_CALL_OUT_REQ,
19 PPTP_CALL_OUT_CONF,
20 PPTP_CALL_IN_REQ,
21 PPTP_CALL_IN_REP,
22 PPTP_CALL_IN_CONF,
23 PPTP_CALL_CLEAR_REQ,
27 /* conntrack private data */
28 struct ip_ct_pptp_master {
29 enum pptp_ctrlsess_state sstate; /* session state */
31 /* everything below is going to be per-expectation in newnat,
32 * since there could be more than one call within one session */
33 enum pptp_ctrlcall_state cstate; /* call state */
34 __be16 pac_call_id; /* call id of PAC, host byte order */
35 __be16 pns_call_id; /* call id of PNS, host byte order */
37 /* in pre-2.6.11 this used to be per-expect. Now it is per-conntrack
38 * and therefore imposes a fixed limit on the number of maps */
39 struct ip_ct_gre_keymap *keymap_orig, *keymap_reply;
42 /* conntrack_expect private member */
43 struct ip_ct_pptp_expect {
44 enum pptp_ctrlcall_state cstate; /* call state */
45 __be16 pac_call_id; /* call id of PAC */
46 __be16 pns_call_id; /* call id of PNS */
50 #ifdef __KERNEL__
52 #define IP_CONNTR_PPTP PPTP_CONTROL_PORT
54 #define PPTP_CONTROL_PORT 1723
56 #define PPTP_PACKET_CONTROL 1
57 #define PPTP_PACKET_MGMT 2
59 #define PPTP_MAGIC_COOKIE 0x1a2b3c4d
61 struct pptp_pkt_hdr {
62 __u16 packetLength;
63 __be16 packetType;
64 __be32 magicCookie;
67 /* PptpControlMessageType values */
68 #define PPTP_START_SESSION_REQUEST 1
69 #define PPTP_START_SESSION_REPLY 2
70 #define PPTP_STOP_SESSION_REQUEST 3
71 #define PPTP_STOP_SESSION_REPLY 4
72 #define PPTP_ECHO_REQUEST 5
73 #define PPTP_ECHO_REPLY 6
74 #define PPTP_OUT_CALL_REQUEST 7
75 #define PPTP_OUT_CALL_REPLY 8
76 #define PPTP_IN_CALL_REQUEST 9
77 #define PPTP_IN_CALL_REPLY 10
78 #define PPTP_IN_CALL_CONNECT 11
79 #define PPTP_CALL_CLEAR_REQUEST 12
80 #define PPTP_CALL_DISCONNECT_NOTIFY 13
81 #define PPTP_WAN_ERROR_NOTIFY 14
82 #define PPTP_SET_LINK_INFO 15
84 #define PPTP_MSG_MAX 15
86 /* PptpGeneralError values */
87 #define PPTP_ERROR_CODE_NONE 0
88 #define PPTP_NOT_CONNECTED 1
89 #define PPTP_BAD_FORMAT 2
90 #define PPTP_BAD_VALUE 3
91 #define PPTP_NO_RESOURCE 4
92 #define PPTP_BAD_CALLID 5
93 #define PPTP_REMOVE_DEVICE_ERROR 6
95 struct PptpControlHeader {
96 __be16 messageType;
97 __u16 reserved;
100 /* FramingCapability Bitmap Values */
101 #define PPTP_FRAME_CAP_ASYNC 0x1
102 #define PPTP_FRAME_CAP_SYNC 0x2
104 /* BearerCapability Bitmap Values */
105 #define PPTP_BEARER_CAP_ANALOG 0x1
106 #define PPTP_BEARER_CAP_DIGITAL 0x2
108 struct PptpStartSessionRequest {
109 __be16 protocolVersion;
110 __u16 reserved1;
111 __be32 framingCapability;
112 __be32 bearerCapability;
113 __be16 maxChannels;
114 __be16 firmwareRevision;
115 __u8 hostName[64];
116 __u8 vendorString[64];
119 /* PptpStartSessionResultCode Values */
120 #define PPTP_START_OK 1
121 #define PPTP_START_GENERAL_ERROR 2
122 #define PPTP_START_ALREADY_CONNECTED 3
123 #define PPTP_START_NOT_AUTHORIZED 4
124 #define PPTP_START_UNKNOWN_PROTOCOL 5
126 struct PptpStartSessionReply {
127 __be16 protocolVersion;
128 __u8 resultCode;
129 __u8 generalErrorCode;
130 __be32 framingCapability;
131 __be32 bearerCapability;
132 __be16 maxChannels;
133 __be16 firmwareRevision;
134 __u8 hostName[64];
135 __u8 vendorString[64];
138 /* PptpStopReasons */
139 #define PPTP_STOP_NONE 1
140 #define PPTP_STOP_PROTOCOL 2
141 #define PPTP_STOP_LOCAL_SHUTDOWN 3
143 struct PptpStopSessionRequest {
144 __u8 reason;
145 __u8 reserved1;
146 __u16 reserved2;
149 /* PptpStopSessionResultCode */
150 #define PPTP_STOP_OK 1
151 #define PPTP_STOP_GENERAL_ERROR 2
153 struct PptpStopSessionReply {
154 __u8 resultCode;
155 __u8 generalErrorCode;
156 __u16 reserved1;
159 struct PptpEchoRequest {
160 __be32 identNumber;
163 /* PptpEchoReplyResultCode */
164 #define PPTP_ECHO_OK 1
165 #define PPTP_ECHO_GENERAL_ERROR 2
167 struct PptpEchoReply {
168 __be32 identNumber;
169 __u8 resultCode;
170 __u8 generalErrorCode;
171 __u16 reserved;
174 /* PptpFramingType */
175 #define PPTP_ASYNC_FRAMING 1
176 #define PPTP_SYNC_FRAMING 2
177 #define PPTP_DONT_CARE_FRAMING 3
179 /* PptpCallBearerType */
180 #define PPTP_ANALOG_TYPE 1
181 #define PPTP_DIGITAL_TYPE 2
182 #define PPTP_DONT_CARE_BEARER_TYPE 3
184 struct PptpOutCallRequest {
185 __be16 callID;
186 __be16 callSerialNumber;
187 __be32 minBPS;
188 __be32 maxBPS;
189 __be32 bearerType;
190 __be32 framingType;
191 __be16 packetWindow;
192 __be16 packetProcDelay;
193 __be16 phoneNumberLength;
194 __u16 reserved1;
195 __u8 phoneNumber[64];
196 __u8 subAddress[64];
199 /* PptpCallResultCode */
200 #define PPTP_OUTCALL_CONNECT 1
201 #define PPTP_OUTCALL_GENERAL_ERROR 2
202 #define PPTP_OUTCALL_NO_CARRIER 3
203 #define PPTP_OUTCALL_BUSY 4
204 #define PPTP_OUTCALL_NO_DIAL_TONE 5
205 #define PPTP_OUTCALL_TIMEOUT 6
206 #define PPTP_OUTCALL_DONT_ACCEPT 7
208 struct PptpOutCallReply {
209 __be16 callID;
210 __be16 peersCallID;
211 __u8 resultCode;
212 __u8 generalErrorCode;
213 __be16 causeCode;
214 __be32 connectSpeed;
215 __be16 packetWindow;
216 __be16 packetProcDelay;
217 __be32 physChannelID;
220 struct PptpInCallRequest {
221 __be16 callID;
222 __be16 callSerialNumber;
223 __be32 callBearerType;
224 __be32 physChannelID;
225 __be16 dialedNumberLength;
226 __be16 dialingNumberLength;
227 __u8 dialedNumber[64];
228 __u8 dialingNumber[64];
229 __u8 subAddress[64];
232 /* PptpInCallResultCode */
233 #define PPTP_INCALL_ACCEPT 1
234 #define PPTP_INCALL_GENERAL_ERROR 2
235 #define PPTP_INCALL_DONT_ACCEPT 3
237 struct PptpInCallReply {
238 __be16 callID;
239 __be16 peersCallID;
240 __u8 resultCode;
241 __u8 generalErrorCode;
242 __be16 packetWindow;
243 __be16 packetProcDelay;
244 __u16 reserved;
247 struct PptpInCallConnected {
248 __be16 peersCallID;
249 __u16 reserved;
250 __be32 connectSpeed;
251 __be16 packetWindow;
252 __be16 packetProcDelay;
253 __be32 callFramingType;
256 struct PptpClearCallRequest {
257 __be16 callID;
258 __u16 reserved;
261 struct PptpCallDisconnectNotify {
262 __be16 callID;
263 __u8 resultCode;
264 __u8 generalErrorCode;
265 __be16 causeCode;
266 __u16 reserved;
267 __u8 callStatistics[128];
270 struct PptpWanErrorNotify {
271 __be16 peersCallID;
272 __u16 reserved;
273 __be32 crcErrors;
274 __be32 framingErrors;
275 __be32 hardwareOverRuns;
276 __be32 bufferOverRuns;
277 __be32 timeoutErrors;
278 __be32 alignmentErrors;
281 struct PptpSetLinkInfo {
282 __be16 peersCallID;
283 __u16 reserved;
284 __be32 sendAccm;
285 __be32 recvAccm;
288 union pptp_ctrl_union {
289 struct PptpStartSessionRequest sreq;
290 struct PptpStartSessionReply srep;
291 struct PptpStopSessionRequest streq;
292 struct PptpStopSessionReply strep;
293 struct PptpOutCallRequest ocreq;
294 struct PptpOutCallReply ocack;
295 struct PptpInCallRequest icreq;
296 struct PptpInCallReply icack;
297 struct PptpInCallConnected iccon;
298 struct PptpClearCallRequest clrreq;
299 struct PptpCallDisconnectNotify disc;
300 struct PptpWanErrorNotify wanerr;
301 struct PptpSetLinkInfo setlink;
304 extern int
305 (*ip_nat_pptp_hook_outbound)(struct sk_buff **pskb,
306 struct ip_conntrack *ct,
307 enum ip_conntrack_info ctinfo,
308 struct PptpControlHeader *ctlh,
309 union pptp_ctrl_union *pptpReq);
311 extern int
312 (*ip_nat_pptp_hook_inbound)(struct sk_buff **pskb,
313 struct ip_conntrack *ct,
314 enum ip_conntrack_info ctinfo,
315 struct PptpControlHeader *ctlh,
316 union pptp_ctrl_union *pptpReq);
318 extern void
319 (*ip_nat_pptp_hook_exp_gre)(struct ip_conntrack_expect *exp_orig,
320 struct ip_conntrack_expect *exp_reply);
322 extern void
323 (*ip_nat_pptp_hook_expectfn)(struct ip_conntrack *ct,
324 struct ip_conntrack_expect *exp);
325 #endif /* __KERNEL__ */
326 #endif /* _CONNTRACK_PPTP_H */