Added log messages for LCP Identification, Time-Remaining, and other
[ppp.git] / pppd / lcp.h
index 68f4762a3e4c1d21286983c5153b4bc52e300844..d5f8aee04353a961b9c7709a3f75d50f6e9ebde6 100644 (file)
@@ -1,27 +1,51 @@
 /*
  * lcp.h - Link Control Protocol definitions.
  *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
+ * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
  *
- * $Id: lcp.h,v 1.3 1994/04/18 04:00:16 paulus Exp $
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The name "Carnegie Mellon University" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For permission or any legal
+ *    details, please contact
+ *      Office of Technology Transfer
+ *      Carnegie Mellon University
+ *      5000 Forbes Avenue
+ *      Pittsburgh, PA  15213-3890
+ *      (412) 268-4387, fax: (412) 268-7395
+ *      tech-transfer@andrew.cmu.edu
+ *
+ * 4. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by Computing Services
+ *     at Carnegie Mellon University (http://www.cmu.edu/computing/)."
+ *
+ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * $Id: lcp.h,v 1.20 2004/11/14 22:53:42 carlsonj Exp $
  */
 
 /*
  * Options.
  */
+#define CI_VENDOR      0       /* Vendor Specific */
 #define CI_MRU         1       /* Maximum Receive Unit */
 #define CI_ASYNCMAP    2       /* Async Control Character Map */
 #define CI_AUTHTYPE    3       /* Authentication Type */
 #define CI_MAGICNUMBER 5       /* Magic Number */
 #define CI_PCOMPRESSION        7       /* Protocol Field Compression */
 #define CI_ACCOMPRESSION 8     /* Address/Control Field Compression */
+#define CI_FCSALTERN   9       /* FCS-Alternatives */
+#define CI_SDP         10      /* Self-Describing-Pad */
+#define CI_NUMBERED    11      /* Numbered-Mode */
+#define CI_CALLBACK    13      /* callback */
+#define CI_MRRU                17      /* max reconstructed receive unit; multilink */
+#define CI_SSNHF       18      /* short sequence numbers for multilink */
+#define CI_EPDISC      19      /* endpoint discriminator */
+#define CI_MPPLUS      22      /* Multi-Link-Plus-Procedure */
+#define CI_LDISC       23      /* Link-Discriminator */
+#define CI_LCPAUTH     24      /* LCP Authentication */
+#define CI_COBS                25      /* Consistent Overhead Byte Stuffing */
+#define CI_PREFELIS    26      /* Prefix Elision */
+#define CI_MPHDRFMT    27      /* MP Header Format */
+#define CI_I18N                28      /* Internationalization */
+#define CI_SDL         29      /* Simple Data Link */
 
 /*
- * LCP-specific packet types.
+ * LCP-specific packet types (code numbers).
  */
 #define PROTREJ                8       /* Protocol Reject */
 #define ECHOREQ                9       /* Echo Request */
 #define ECHOREP                10      /* Echo Reply */
 #define DISCREQ                11      /* Discard Request */
+#define IDENTIF                12      /* Identification */
+#define TIMEREM                13      /* Time Remaining */
+
+/* Value used as data for CI_CALLBACK option */
+#define CBCP_OPT       6       /* Use callback control protocol */
 
 /*
  * The state of options is described by an lcp_options structure.
  */
 typedef struct lcp_options {
-    int passive : 1;           /* Don't die if we don't get a response */
-    int silent : 1;            /* Wait for the other end to start first */
-    int restart : 1;           /* Restart vs. exit after close */
-    int neg_mru : 1;           /* Negotiate the MRU? */
-    int neg_asyncmap : 1;      /* Negotiate the async map? */
-    int neg_upap : 1;          /* Ask for UPAP authentication? */
-    int neg_chap : 1;          /* Ask for CHAP authentication? */
-    int neg_magicnumber : 1;   /* Ask for magic number? */
-    int neg_pcompression : 1;  /* HDLC Protocol Field Compression? */
-    int neg_accompression : 1; /* HDLC Address/Control Field Compression? */
-    int neg_lqr : 1;           /* Negotiate use of Link Quality Reports */
-    u_short mru;               /* Value of MRU */
-    char chap_mdtype;          /* which MD type (hashing algorithm) */
-    u_long asyncmap;           /* Value of async map */
-    u_long magicnumber;
-    int numloops;              /* Number of loops during magic number neg. */
-    u_long lqr_period;         /* Reporting period for link quality */
+    bool passive;              /* Don't die if we don't get a response */
+    bool silent;               /* Wait for the other end to start first */
+    bool restart;              /* Restart vs. exit after close */
+    bool neg_mru;              /* Negotiate the MRU? */
+    bool neg_asyncmap;         /* Negotiate the async map? */
+    bool neg_upap;             /* Ask for UPAP authentication? */
+    bool neg_chap;             /* Ask for CHAP authentication? */
+    bool neg_eap;              /* Ask for EAP authentication? */
+    bool neg_magicnumber;      /* Ask for magic number? */
+    bool neg_pcompression;     /* HDLC Protocol Field Compression? */
+    bool neg_accompression;    /* HDLC Address/Control Field Compression? */
+    bool neg_lqr;              /* Negotiate use of Link Quality Reports */
+    bool neg_cbcp;             /* Negotiate use of CBCP */
+    bool neg_mrru;             /* negotiate multilink MRRU */
+    bool neg_ssnhf;            /* negotiate short sequence numbers */
+    bool neg_endpoint;         /* negotiate endpoint discriminator */
+    int  mru;                  /* Value of MRU */
+    int         mrru;                  /* Value of MRRU, and multilink enable */
+    u_char chap_mdtype;                /* which MD types (hashing algorithm) */
+    u_int32_t asyncmap;                /* Value of async map */
+    u_int32_t magicnumber;
+    int  numloops;             /* Number of loops during magic number neg. */
+    u_int32_t lqr_period;      /* Reporting period for LQR 1/100ths second */
+    struct epdisc endpoint;    /* endpoint discriminator */
 } lcp_options;
 
 extern fsm lcp_fsm[];
@@ -66,22 +117,19 @@ extern lcp_options lcp_wantoptions[];
 extern lcp_options lcp_gotoptions[];
 extern lcp_options lcp_allowoptions[];
 extern lcp_options lcp_hisoptions[];
-extern u_long xmit_accm[][8];
 
 #define DEFMRU 1500            /* Try for this */
 #define MINMRU 128             /* No MRUs below this */
 #define MAXMRU 16384           /* Normally limit MRU to this */
 
-void lcp_init __ARGS((int));
-void lcp_open __ARGS((int));
-void lcp_close __ARGS((int));
-void lcp_lowerup __ARGS((int));
-void lcp_lowerdown __ARGS((int));
-void lcp_input __ARGS((int, u_char *, int));
-void lcp_protrej __ARGS((int));
-void lcp_sprotrej __ARGS((int, u_char *, int));
-int  lcp_printpkt __ARGS((u_char *, int,
-                         void (*) __ARGS((void *, char *, ...)), void *));
+void lcp_open __P((int));
+void lcp_close __P((int, char *));
+void lcp_lowerup __P((int));
+void lcp_lowerdown __P((int));
+void lcp_sprotrej __P((int, u_char *, int));   /* send protocol reject */
+
+extern struct protent lcp_protent;
 
-extern int lcp_warnloops;      /* Warn about a loopback this often */
-#define DEFWARNLOOPS   10      /* Default value for above */
+/* Default number of times we receive our magic number from the peer
+   before deciding the link is looped-back. */
+#define DEFLOOPBACKFAIL        10