Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /* PPTP constants and structs */
  2 #ifndef _NF_CONNTRACK_PPTP_H
  3 #define _NF_CONNTRACK_PPTP_H
  4 
  5 #include <linux/netfilter/nf_conntrack_common.h>
  6 
  7 extern const char *const pptp_msg_name[];
  8 
  9 /* state of the control session */
 10 enum pptp_ctrlsess_state {
 11         PPTP_SESSION_NONE,                      /* no session present */
 12         PPTP_SESSION_ERROR,                     /* some session error */
 13         PPTP_SESSION_STOPREQ,                   /* stop_sess request seen */
 14         PPTP_SESSION_REQUESTED,                 /* start_sess request seen */
 15         PPTP_SESSION_CONFIRMED,                 /* session established */
 16 };
 17 
 18 /* state of the call inside the control session */
 19 enum pptp_ctrlcall_state {
 20         PPTP_CALL_NONE,
 21         PPTP_CALL_ERROR,
 22         PPTP_CALL_OUT_REQ,
 23         PPTP_CALL_OUT_CONF,
 24         PPTP_CALL_IN_REQ,
 25         PPTP_CALL_IN_REP,
 26         PPTP_CALL_IN_CONF,
 27         PPTP_CALL_CLEAR_REQ,
 28 };
 29 
 30 /* conntrack private data */
 31 struct nf_ct_pptp_master {
 32         enum pptp_ctrlsess_state sstate;        /* session state */
 33         enum pptp_ctrlcall_state cstate;        /* call state */
 34         __be16 pac_call_id;                     /* call id of PAC */
 35         __be16 pns_call_id;                     /* call id of PNS */
 36 
 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 nf_ct_gre_keymap *keymap[IP_CT_DIR_MAX];
 40 };
 41 
 42 struct nf_nat_pptp {
 43         __be16 pns_call_id;                     /* NAT'ed PNS call id */
 44         __be16 pac_call_id;                     /* NAT'ed PAC call id */
 45 };
 46 
 47 #ifdef __KERNEL__
 48 
 49 #define PPTP_CONTROL_PORT       1723
 50 
 51 #define PPTP_PACKET_CONTROL     1
 52 #define PPTP_PACKET_MGMT        2
 53 
 54 #define PPTP_MAGIC_COOKIE       0x1a2b3c4d
 55 
 56 struct pptp_pkt_hdr {
 57         __u16   packetLength;
 58         __be16  packetType;
 59         __be32  magicCookie;
 60 };
 61 
 62 /* PptpControlMessageType values */
 63 #define PPTP_START_SESSION_REQUEST      1
 64 #define PPTP_START_SESSION_REPLY        2
 65 #define PPTP_STOP_SESSION_REQUEST       3
 66 #define PPTP_STOP_SESSION_REPLY         4
 67 #define PPTP_ECHO_REQUEST               5
 68 #define PPTP_ECHO_REPLY                 6
 69 #define PPTP_OUT_CALL_REQUEST           7
 70 #define PPTP_OUT_CALL_REPLY             8
 71 #define PPTP_IN_CALL_REQUEST            9
 72 #define PPTP_IN_CALL_REPLY              10
 73 #define PPTP_IN_CALL_CONNECT            11
 74 #define PPTP_CALL_CLEAR_REQUEST         12
 75 #define PPTP_CALL_DISCONNECT_NOTIFY     13
 76 #define PPTP_WAN_ERROR_NOTIFY           14
 77 #define PPTP_SET_LINK_INFO              15
 78 
 79 #define PPTP_MSG_MAX                    15
 80 
 81 /* PptpGeneralError values */
 82 #define PPTP_ERROR_CODE_NONE            0
 83 #define PPTP_NOT_CONNECTED              1
 84 #define PPTP_BAD_FORMAT                 2
 85 #define PPTP_BAD_VALUE                  3
 86 #define PPTP_NO_RESOURCE                4
 87 #define PPTP_BAD_CALLID                 5
 88 #define PPTP_REMOVE_DEVICE_ERROR        6
 89 
 90 struct PptpControlHeader {
 91         __be16  messageType;
 92         __u16   reserved;
 93 };
 94 
 95 /* FramingCapability Bitmap Values */
 96 #define PPTP_FRAME_CAP_ASYNC            0x1
 97 #define PPTP_FRAME_CAP_SYNC             0x2
 98 
 99 /* BearerCapability Bitmap Values */
100 #define PPTP_BEARER_CAP_ANALOG          0x1
101 #define PPTP_BEARER_CAP_DIGITAL         0x2
102 
103 struct PptpStartSessionRequest {
104         __be16  protocolVersion;
105         __u16   reserved1;
106         __be32  framingCapability;
107         __be32  bearerCapability;
108         __be16  maxChannels;
109         __be16  firmwareRevision;
110         __u8    hostName[64];
111         __u8    vendorString[64];
112 };
113 
114 /* PptpStartSessionResultCode Values */
115 #define PPTP_START_OK                   1
116 #define PPTP_START_GENERAL_ERROR        2
117 #define PPTP_START_ALREADY_CONNECTED    3
118 #define PPTP_START_NOT_AUTHORIZED       4
119 #define PPTP_START_UNKNOWN_PROTOCOL     5
120 
121 struct PptpStartSessionReply {
122         __be16  protocolVersion;
123         __u8    resultCode;
124         __u8    generalErrorCode;
125         __be32  framingCapability;
126         __be32  bearerCapability;
127         __be16  maxChannels;
128         __be16  firmwareRevision;
129         __u8    hostName[64];
130         __u8    vendorString[64];
131 };
132 
133 /* PptpStopReasons */
134 #define PPTP_STOP_NONE                  1
135 #define PPTP_STOP_PROTOCOL              2
136 #define PPTP_STOP_LOCAL_SHUTDOWN        3
137 
138 struct PptpStopSessionRequest {
139         __u8    reason;
140         __u8    reserved1;
141         __u16   reserved2;
142 };
143 
144 /* PptpStopSessionResultCode */
145 #define PPTP_STOP_OK                    1
146 #define PPTP_STOP_GENERAL_ERROR         2
147 
148 struct PptpStopSessionReply {
149         __u8    resultCode;
150         __u8    generalErrorCode;
151         __u16   reserved1;
152 };
153 
154 struct PptpEchoRequest {
155         __be32 identNumber;
156 };
157 
158 /* PptpEchoReplyResultCode */
159 #define PPTP_ECHO_OK                    1
160 #define PPTP_ECHO_GENERAL_ERROR         2
161 
162 struct PptpEchoReply {
163         __be32  identNumber;
164         __u8    resultCode;
165         __u8    generalErrorCode;
166         __u16   reserved;
167 };
168 
169 /* PptpFramingType */
170 #define PPTP_ASYNC_FRAMING              1
171 #define PPTP_SYNC_FRAMING               2
172 #define PPTP_DONT_CARE_FRAMING          3
173 
174 /* PptpCallBearerType */
175 #define PPTP_ANALOG_TYPE                1
176 #define PPTP_DIGITAL_TYPE               2
177 #define PPTP_DONT_CARE_BEARER_TYPE      3
178 
179 struct PptpOutCallRequest {
180         __be16  callID;
181         __be16  callSerialNumber;
182         __be32  minBPS;
183         __be32  maxBPS;
184         __be32  bearerType;
185         __be32  framingType;
186         __be16  packetWindow;
187         __be16  packetProcDelay;
188         __be16  phoneNumberLength;
189         __u16   reserved1;
190         __u8    phoneNumber[64];
191         __u8    subAddress[64];
192 };
193 
194 /* PptpCallResultCode */
195 #define PPTP_OUTCALL_CONNECT            1
196 #define PPTP_OUTCALL_GENERAL_ERROR      2
197 #define PPTP_OUTCALL_NO_CARRIER         3
198 #define PPTP_OUTCALL_BUSY               4
199 #define PPTP_OUTCALL_NO_DIAL_TONE       5
200 #define PPTP_OUTCALL_TIMEOUT            6
201 #define PPTP_OUTCALL_DONT_ACCEPT        7
202 
203 struct PptpOutCallReply {
204         __be16  callID;
205         __be16  peersCallID;
206         __u8    resultCode;
207         __u8    generalErrorCode;
208         __be16  causeCode;
209         __be32  connectSpeed;
210         __be16  packetWindow;
211         __be16  packetProcDelay;
212         __be32  physChannelID;
213 };
214 
215 struct PptpInCallRequest {
216         __be16  callID;
217         __be16  callSerialNumber;
218         __be32  callBearerType;
219         __be32  physChannelID;
220         __be16  dialedNumberLength;
221         __be16  dialingNumberLength;
222         __u8    dialedNumber[64];
223         __u8    dialingNumber[64];
224         __u8    subAddress[64];
225 };
226 
227 /* PptpInCallResultCode */
228 #define PPTP_INCALL_ACCEPT              1
229 #define PPTP_INCALL_GENERAL_ERROR       2
230 #define PPTP_INCALL_DONT_ACCEPT         3
231 
232 struct PptpInCallReply {
233         __be16  callID;
234         __be16  peersCallID;
235         __u8    resultCode;
236         __u8    generalErrorCode;
237         __be16  packetWindow;
238         __be16  packetProcDelay;
239         __u16   reserved;
240 };
241 
242 struct PptpInCallConnected {
243         __be16  peersCallID;
244         __u16   reserved;
245         __be32  connectSpeed;
246         __be16  packetWindow;
247         __be16  packetProcDelay;
248         __be32  callFramingType;
249 };
250 
251 struct PptpClearCallRequest {
252         __be16  callID;
253         __u16   reserved;
254 };
255 
256 struct PptpCallDisconnectNotify {
257         __be16  callID;
258         __u8    resultCode;
259         __u8    generalErrorCode;
260         __be16  causeCode;
261         __u16   reserved;
262         __u8    callStatistics[128];
263 };
264 
265 struct PptpWanErrorNotify {
266         __be16  peersCallID;
267         __u16   reserved;
268         __be32  crcErrors;
269         __be32  framingErrors;
270         __be32  hardwareOverRuns;
271         __be32  bufferOverRuns;
272         __be32  timeoutErrors;
273         __be32  alignmentErrors;
274 };
275 
276 struct PptpSetLinkInfo {
277         __be16  peersCallID;
278         __u16   reserved;
279         __be32  sendAccm;
280         __be32  recvAccm;
281 };
282 
283 union pptp_ctrl_union {
284         struct PptpStartSessionRequest  sreq;
285         struct PptpStartSessionReply    srep;
286         struct PptpStopSessionRequest   streq;
287         struct PptpStopSessionReply     strep;
288         struct PptpOutCallRequest       ocreq;
289         struct PptpOutCallReply         ocack;
290         struct PptpInCallRequest        icreq;
291         struct PptpInCallReply          icack;
292         struct PptpInCallConnected      iccon;
293         struct PptpClearCallRequest     clrreq;
294         struct PptpCallDisconnectNotify disc;
295         struct PptpWanErrorNotify       wanerr;
296         struct PptpSetLinkInfo          setlink;
297 };
298 
299 /* crap needed for nf_conntrack_compat.h */
300 struct nf_conn;
301 struct nf_conntrack_expect;
302 
303 extern int
304 (*nf_nat_pptp_hook_outbound)(struct sk_buff *skb,
305                              struct nf_conn *ct, enum ip_conntrack_info ctinfo,
306                              struct PptpControlHeader *ctlh,
307                              union pptp_ctrl_union *pptpReq);
308 
309 extern int
310 (*nf_nat_pptp_hook_inbound)(struct sk_buff *skb,
311                             struct nf_conn *ct, enum ip_conntrack_info ctinfo,
312                             struct PptpControlHeader *ctlh,
313                             union pptp_ctrl_union *pptpReq);
314 
315 extern void
316 (*nf_nat_pptp_hook_exp_gre)(struct nf_conntrack_expect *exp_orig,
317                             struct nf_conntrack_expect *exp_reply);
318 
319 extern void
320 (*nf_nat_pptp_hook_expectfn)(struct nf_conn *ct,
321                              struct nf_conntrack_expect *exp);
322 
323 #endif /* __KERNEL__ */
324 #endif /* _NF_CONNTRACK_PPTP_H */
325 
  This page was automatically generated by the LXR engine.