Annotation of embedaddon/libpdel/ppp/ppp_pptp_ctrl_defs.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (c) 1995-1999 Whistle Communications, Inc.
4: * All rights reserved.
5: *
6: * Subject to the following obligations and disclaimer of warranty,
7: * use and redistribution of this software, in source or object code
8: * forms, with or without modifications are expressly permitted by
9: * Whistle Communications; provided, however, that: (i) any and
10: * all reproductions of the source or object code must include the
11: * copyright notice above and the following disclaimer of warranties;
12: * and (ii) no rights are granted, in any manner or form, to use
13: * Whistle Communications, Inc. trademarks, including the mark "WHISTLE
14: * COMMUNICATIONS" on advertising, endorsements, or otherwise except
15: * as such appears in the above copyright notice or in the software.
16: *
17: * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS",
18: * AND TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS
19: * MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
20: * REGARDING THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND
21: * ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
22: * PURPOSE, OR NON-INFRINGEMENT. WHISTLE COMMUNICATIONS DOES NOT
23: * WARRANT, GUARANTEE, OR MAKE ANY REPRESENTATIONS REGARDING THE USE
24: * OF, OR THE RESULTS OF THE USE OF THIS SOFTWARE IN TERMS OF ITS
25: * CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. IN NO EVENT
26: * SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES RESULTING
27: * FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING WITHOUT
28: * LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
29: * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE
30: * GOODS OR SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED
31: * AND UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33: * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS
34: * IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35: *
36: * Author: <archie@freebsd.org>
37: */
38:
39: #ifndef _WANT_PPTP_FIELDS
40:
41: /*
42: * DEFINITIONS
43: */
44:
45: /* Definitions per the spec */
46: #define PPTP_PORT 1723
47: #define PPTP_MTU 1532
48: #define PPTP_PROTO_VERS 0x0100
49: #define PPTP_MAGIC 0x1a2b3c4d
50: #define PPTP_IDLE_TIMEOUT 60
51:
52: #define PPTP_HOSTNAME_LEN 64
53: #define PPTP_VENDOR_LEN 64
54: #define PPTP_PHONE_LEN 64
55: #define PPTP_SUBADDR_LEN 64
56: #define PPTP_STATS_LEN 128
57:
58: /* Control message header type */
59: #define PPTP_CTRL_MSG_TYPE 1
60:
61: /* Control messages */
62: enum {
63: PPTP_StartCtrlConnRequest = 1,
64: PPTP_StartCtrlConnReply = 2,
65: PPTP_StopCtrlConnRequest = 3,
66: PPTP_StopCtrlConnReply = 4,
67: PPTP_EchoRequest = 5,
68: PPTP_EchoReply = 6,
69: PPTP_OutCallRequest = 7,
70: PPTP_OutCallReply = 8,
71: PPTP_InCallRequest = 9,
72: PPTP_InCallReply = 10,
73: PPTP_InCallConn = 11,
74: PPTP_CallClearRequest = 12,
75: PPTP_CallDiscNotify = 13,
76: PPTP_WanErrorNotify = 14,
77: PPTP_SetLinkInfo = 15,
78: };
79:
80: #define PPTP_MIN_CTRL_TYPE 1
81: #define PPTP_MAX_CTRL_TYPE 16
82:
83: #define PPTP_VALID_CTRL_TYPE(x) \
84: ((x) >= PPTP_MIN_CTRL_TYPE && (x) < PPTP_MAX_CTRL_TYPE)
85:
86: /* Framing capabilities */
87: #define PPTP_FRAMECAP_ASYNC 0x01
88: #define PPTP_FRAMECAP_SYNC 0x02
89: #define PPTP_FRAMECAP_ANY 0x03
90:
91: /* Bearer capabilities */
92: #define PPTP_BEARCAP_ANALOG 0x01
93: #define PPTP_BEARCAP_DIGITAL 0x02
94: #define PPTP_BEARCAP_ANY 0x03
95:
96: /* General error codes */
97: #define PPTP_ERROR_NONE 0
98: #define PPTP_ERROR_NOT_CONNECTED 1
99: #define PPTP_ERROR_BAD_FORMAT 2
100: #define PPTP_ERROR_BAD_VALUE 3
101: #define PPTP_ERROR_NO_RESOURCE 4
102: #define PPTP_ERROR_BAD_CALL_ID 5
103: #define PPTP_ERROR_PAC_ERROR 6
104:
105: /* All reserved fields have this prefix */
106: #define PPTP_RESV_PREF "resv"
107:
108: /* Message structures */
109: struct pptpMsgHead {
110: u_int16_t length; /* total length */
111: u_int16_t msgType; /* pptp message type */
112: u_int32_t magic; /* magic cookie */
113: u_int16_t type; /* control message type */
114: u_int16_t resv0; /* reserved */
115: };
116: typedef struct pptpMsgHead *PptpMsgHead;
117:
118: #else
119: { { "len", 2 }, { "msgType", 2 }, { "magic", 4 }, { "type", 2 },
120: { PPTP_RESV_PREF "0", 2 }, { NULL, 0 } },
121: #endif
122: #ifndef _WANT_PPTP_FIELDS
123:
124: struct pptpStartCtrlConnRequest {
125: u_int16_t vers; /* protocol version */
126: u_int16_t resv0; /* reserved */
127: u_int32_t frameCap; /* framing capabilities */
128: u_int32_t bearCap; /* bearer capabilities */
129: u_int16_t maxChan; /* maximum # channels */
130: u_int16_t firmware; /* firmware revision */
131: char host[PPTP_HOSTNAME_LEN]; /* host name */
132: char vendor[PPTP_VENDOR_LEN]; /* vendor name */
133: };
134:
135: #else
136: { { "vers", 2 }, { PPTP_RESV_PREF "0", 2 }, { "frameCap", 4 },
137: { "bearCap", 4 }, { "maxChan", 2 }, { "firm", 2 },
138: { "host", PPTP_HOSTNAME_LEN }, { "vend", PPTP_VENDOR_LEN }, { NULL, 0 } },
139: #endif
140: #ifndef _WANT_PPTP_FIELDS
141:
142: struct pptpStartCtrlConnReply {
143: u_int16_t vers; /* protocol version */
144: u_int8_t result; /* result code */
145: u_int8_t err; /* error code */
146: u_int32_t frameCap; /* framing capabilities */
147: u_int32_t bearCap; /* bearer capabilities */
148: u_int16_t maxChan; /* maximum # channels */
149: u_int16_t firmware; /* firmware revision */
150: char host[PPTP_HOSTNAME_LEN]; /* host name */
151: char vendor[PPTP_VENDOR_LEN]; /* vendor name */
152: };
153:
154: #else
155: { { "vers", 2 }, { "result", 1 }, { "err", 1 }, { "frameCap", 4 },
156: { "bearCap", 4 }, { "maxChan", 2 }, { "firm", 2 },
157: { "host", PPTP_HOSTNAME_LEN }, { "vend", PPTP_VENDOR_LEN }, { NULL, 0 } },
158: #endif
159: #ifndef _WANT_PPTP_FIELDS
160:
161: #define PPTP_SCCR_RESL_OK 1 /* channel established */
162: #define PPTP_SCCR_RESL_ERR 2 /* general error; see code */
163: #define PPTP_SCCR_RESL_EXISTS 3 /* command channel exists */
164: #define PPTP_SCCR_RESL_AUTH 4 /* not authorized */
165: #define PPTP_SCCR_RESL_VERS 5 /* incompatible version */
166:
167: struct pptpStopCtrlConnRequest {
168: u_int8_t reason; /* reason */
169: u_int8_t resv0; /* reserved */
170: u_int16_t resv1; /* reserved */
171: };
172:
173: #else
174: { { "reason", 1 }, { PPTP_RESV_PREF "0", 1 }, { PPTP_RESV_PREF "1", 2 },
175: { NULL, 0 } },
176: #endif
177: #ifndef _WANT_PPTP_FIELDS
178:
179: #define PPTP_SCCR_REAS_NONE 1 /* general */
180: #define PPTP_SCCR_REAS_PROTO 2 /* incompatible version */
181: #define PPTP_SCCR_REAS_LOCAL 3 /* local shutdown */
182:
183: struct pptpStopCtrlConnReply {
184: u_int8_t result; /* result code */
185: u_int8_t err; /* error code */
186: u_int16_t resv0; /* reserved */
187: };
188:
189: #else
190: { { "result", 1 }, { "err", 1 }, { PPTP_RESV_PREF "0", 2 }, { NULL, 0 } },
191: #endif
192: #ifndef _WANT_PPTP_FIELDS
193:
194: struct pptpEchoRequest {
195: u_int32_t id; /* identifier */
196: };
197:
198: #else
199: { { "id", 4 }, { NULL, 0 } },
200: #endif
201: #ifndef _WANT_PPTP_FIELDS
202:
203: struct pptpEchoReply {
204: u_int32_t id; /* identifier */
205: u_int8_t result; /* result code */
206: u_int8_t err; /* error code */
207: u_int16_t resv0; /* reserved */
208: };
209:
210: #else
211: { { "id", 4 }, { "result", 1 }, { "err", 1 },
212: { "ignore", 2 }, { NULL, 0 } },
213: #endif
214: #ifndef _WANT_PPTP_FIELDS
215:
216: #define PPTP_ECHO_RESL_OK 1 /* echo reply is valid */
217: #define PPTP_ECHO_RESL_ERR 2 /* general error; see code */
218:
219: struct pptpOutCallRequest {
220: u_int16_t cid; /* call id */
221: u_int16_t serno; /* call serial # */
222: u_int32_t minBps; /* minimum BPS */
223: u_int32_t maxBps; /* maximum BPS */
224: u_int32_t frameType; /* framing type */
225: u_int32_t bearType; /* bearer type */
226: u_int16_t recvWin; /* pkt receive window size */
227: u_int16_t ppd; /* pkt processing delay */
228: u_int16_t numLen; /* phone number length */
229: u_int16_t resv0; /* reserved */
230: char phone[PPTP_PHONE_LEN]; /* phone number */
231: char subaddr[PPTP_SUBADDR_LEN]; /* sub-address */
232: };
233:
234: #else
235: { { "cid", 2 }, { "serno", 2 }, { "minBPS", 4 }, { "maxBPS", 4 },
236: { "frameType", 4 }, { "bearType", 4 }, { "recvWin", 2 }, { "ppd", 2 },
237: { "numLen", 2 }, { PPTP_RESV_PREF "0", 2 },
238: { "phone", PPTP_PHONE_LEN }, { "subaddr", PPTP_SUBADDR_LEN },
239: { NULL, 0 } },
240: #endif
241: #ifndef _WANT_PPTP_FIELDS
242:
243: struct pptpOutCallReply {
244: u_int16_t cid; /* call id */
245: u_int16_t peerCid; /* peer call id */
246: u_int8_t result; /* result code */
247: u_int8_t err; /* error code */
248: u_int16_t cause; /* cause code */
249: u_int32_t speed; /* cause code */
250: u_int16_t recvWin; /* pkt receive window size */
251: u_int16_t ppd; /* pkt processing delay */
252: u_int32_t channel; /* physical channel id */
253: };
254:
255: #else
256: { { "cid", 2 }, { "peerCid", 2 }, { "result", 1 }, { "err", 1 },
257: { "cause", 2 }, { "speed", 4 }, { "recvWin", 2 }, { "ppd", 2 },
258: { "channel", 4 }, { NULL, 0 } },
259: #endif
260: #ifndef _WANT_PPTP_FIELDS
261:
262: #define PPTP_OCR_RESL_OK 1 /* call established OK */
263: #define PPTP_OCR_RESL_ERR 2 /* general error; see code */
264: #define PPTP_OCR_RESL_NOCARR 3 /* no carrier */
265: #define PPTP_OCR_RESL_BUSY 4 /* busy */
266: #define PPTP_OCR_RESL_NODIAL 5 /* no dialtone */
267: #define PPTP_OCR_RESL_TIMED 6 /* timed out */
268: #define PPTP_OCR_RESL_ADMIN 7 /* administratvely prohibited */
269:
270: struct pptpInCallRequest {
271: u_int16_t cid; /* call id */
272: u_int16_t serno; /* call serial # */
273: u_int32_t bearType; /* bearer type */
274: u_int32_t channel; /* physical channel id */
275: u_int16_t dialedLen; /* dialed number len */
276: u_int16_t dialingLen; /* dialing number len */
277: char dialed[PPTP_PHONE_LEN]; /* dialed number */
278: char dialing[PPTP_PHONE_LEN]; /* dialing number */
279: char subaddr[PPTP_SUBADDR_LEN]; /* sub-address */
280: };
281:
282: #else
283: { { "cid", 2 }, { "serno", 2 }, { "bearType", 4 }, { "channel", 4 },
284: { "dialedLen", 2 }, { "dialingLen", 2 }, { "dialed", PPTP_PHONE_LEN },
285: { "dialing", PPTP_PHONE_LEN }, { "subaddr", PPTP_SUBADDR_LEN },
286: { NULL, 0 } },
287: #endif
288: #ifndef _WANT_PPTP_FIELDS
289:
290: struct pptpInCallReply {
291: u_int16_t cid; /* call id */
292: u_int16_t peerCid; /* peer call id */
293: u_int8_t result; /* result code */
294: u_int8_t err; /* error code */
295: u_int16_t recvWin; /* pkt receive window size */
296: u_int16_t ppd; /* pkt processing delay */
297: u_int16_t resv0; /* reserved */
298: };
299:
300: #else
301: { { "cid", 2 }, { "peerCid", 2 }, { "result", 1 }, { "err", 1 },
302: { "recvWin", 2 }, { "ppd", 2 }, { PPTP_RESV_PREF "0", 2 },
303: { NULL, 0 } },
304: #endif
305: #ifndef _WANT_PPTP_FIELDS
306:
307: #define PPTP_ICR_RESL_OK 1 /* call established OK */
308: #define PPTP_ICR_RESL_ERR 2 /* general error; see code */
309: #define PPTP_ICR_RESL_NAK 3 /* do not accept */
310:
311: struct pptpInCallConn {
312: u_int16_t peerCid; /* peer call id */
313: u_int16_t resv0; /* reserved */
314: u_int32_t speed; /* connect speed */
315: u_int16_t recvWin; /* pkt receive window size */
316: u_int16_t ppd; /* pkt processing delay */
317: u_int32_t frameType; /* framing type */
318: };
319:
320: #else
321: { { "peerCid", 2 }, { PPTP_RESV_PREF "0", 2 }, { "speed", 4 },
322: { "recvWin", 2 }, { "ppd", 2 }, { "frameType", 4 }, { NULL, 0 } },
323: #endif
324: #ifndef _WANT_PPTP_FIELDS
325:
326: struct pptpCallClearRequest {
327: u_int16_t cid; /* pns assigned call id */
328: u_int16_t resv0; /* reserved */
329: };
330:
331: #else
332: { { "cid", 2 }, { PPTP_RESV_PREF "0", 2 }, { NULL, 0 } },
333: #endif
334: #ifndef _WANT_PPTP_FIELDS
335:
336: struct pptpCallDiscNotify {
337: u_int16_t cid; /* pac assigned call id */
338: u_int8_t result; /* result code */
339: u_int8_t err; /* error code */
340: u_int16_t cause; /* cause code */
341: u_int16_t resv0; /* reserved */
342: char stats[PPTP_STATS_LEN]; /* call stats */
343: };
344:
345: #else
346: { { "cid", 2 }, { "result", 1 }, { "err", 1 }, { "cause", 2 },
347: { PPTP_RESV_PREF "0", 2 }, { "stats", PPTP_STATS_LEN },
348: { NULL, 0 } },
349: #endif
350: #ifndef _WANT_PPTP_FIELDS
351:
352: #define PPTP_CDN_RESL_CARR 1 /* lost carrier */
353: #define PPTP_CDN_RESL_ERR 2 /* general error; see code */
354: #define PPTP_CDN_RESL_ADMIN 3 /* administrative reason */
355: #define PPTP_CDN_RESL_REQ 4 /* received disconnect req. */
356:
357: struct pptpWanErrorNotify {
358: u_int16_t cid; /* pns assigned call id */
359: u_int16_t resv0; /* reserved */
360: u_int32_t crc; /* crc errors */
361: u_int32_t frame; /* framing errors */
362: u_int32_t hdw; /* hardware errors */
363: u_int32_t ovfl; /* buffer overrun errors */
364: u_int32_t timeout; /* timeout errors */
365: u_int32_t align; /* alignment errors */
366: };
367:
368: #else
369: { { "cid", 2 }, { PPTP_RESV_PREF "0", 2 }, { "crc", 4 },
370: { "frame", 4 }, { "hdw", 4 }, { "ovfl", 4 }, { "timeout", 4 },
371: { "align", 4 }, { NULL, 0 } },
372: #endif
373: #ifndef _WANT_PPTP_FIELDS
374:
375: struct pptpSetLinkInfo {
376: u_int16_t cid; /* call id */
377: u_int16_t resv0; /* reserved */
378: u_int32_t sendAccm; /* send accm */
379: u_int32_t recvAccm; /* receive accm */
380: };
381:
382: #else
383: { { "cid", 2 }, { PPTP_RESV_PREF "0", 2 }, { "sendAccm", 4 },
384: { "recvAccm", 4 }, { NULL, 0 } },
385: #endif
386: #ifndef _WANT_PPTP_FIELDS
387:
388: #define PPTP_CTRL_MAX_FRAME \
389: (sizeof(struct pptpMsgHead) + sizeof(struct pptpInCallRequest))
390: #define PPTP_CTRL_MAX_FIELDS 14
391:
392: /* Describes one field of a PPTP control message structure */
393: struct pptpfield {
394: const char *name;
395: u_short length;
396: };
397: typedef const struct pptpfield *PptpField;
398:
399: #endif
400:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>