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>