1 /* 2 * lcp.h - Link Control Protocol definitions. 3 * 4 * Copyright (c) 1989 Carnegie Mellon University. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms are permitted 8 * provided that the above copyright notice and this paragraph are 9 * duplicated in all such forms and that any documentation, 10 * advertising materials, and other materials related to such 11 * distribution and use acknowledge that the software was developed 12 * by Carnegie Mellon University. The name of the 13 * University may not be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 17 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 18 * 19 * $Id: lcp.h,v 1.1.1.1 1995/10/18 08:47:59 deraadt Exp $ 20 */ 21 22 /* 23 * Options. 24 */ 25 #define CI_MRU 1 /* Maximum Receive Unit */ 26 #define CI_ASYNCMAP 2 /* Async Control Character Map */ 27 #define CI_AUTHTYPE 3 /* Authentication Type */ 28 #define CI_QUALITY 4 /* Quality Protocol */ 29 #define CI_MAGICNUMBER 5 /* Magic Number */ 30 #define CI_PCOMPRESSION 7 /* Protocol Field Compression */ 31 #define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */ 32 33 /* 34 * LCP-specific packet types. 35 */ 36 #define PROTREJ 8 /* Protocol Reject */ 37 #define ECHOREQ 9 /* Echo Request */ 38 #define ECHOREP 10 /* Echo Reply */ 39 #define DISCREQ 11 /* Discard Request */ 40 41 /* 42 * The state of options is described by an lcp_options structure. 43 */ 44 typedef struct lcp_options { 45 int passive : 1; /* Don't die if we don't get a response */ 46 int silent : 1; /* Wait for the other end to start first */ 47 int restart : 1; /* Restart vs. exit after close */ 48 int neg_mru : 1; /* Negotiate the MRU? */ 49 int neg_asyncmap : 1; /* Negotiate the async map? */ 50 int neg_upap : 1; /* Ask for UPAP authentication? */ 51 int neg_chap : 1; /* Ask for CHAP authentication? */ 52 int neg_magicnumber : 1; /* Ask for magic number? */ 53 int neg_pcompression : 1; /* HDLC Protocol Field Compression? */ 54 int neg_accompression : 1; /* HDLC Address/Control Field Compression? */ 55 int neg_lqr : 1; /* Negotiate use of Link Quality Reports */ 56 u_short mru; /* Value of MRU */ 57 u_char chap_mdtype; /* which MD type (hashing algorithm) */ 58 u_int32_t asyncmap; /* Value of async map */ 59 u_int32_t magicnumber; 60 int numloops; /* Number of loops during magic number neg. */ 61 u_int32_t lqr_period; /* Reporting period for LQR 1/100ths second */ 62 } lcp_options; 63 64 extern fsm lcp_fsm[]; 65 extern lcp_options lcp_wantoptions[]; 66 extern lcp_options lcp_gotoptions[]; 67 extern lcp_options lcp_allowoptions[]; 68 extern lcp_options lcp_hisoptions[]; 69 extern u_int32_t xmit_accm[][8]; 70 71 #define DEFMRU 1500 /* Try for this */ 72 #define MINMRU 128 /* No MRUs below this */ 73 #define MAXMRU 16384 /* Normally limit MRU to this */ 74 75 void lcp_init __P((int)); 76 void lcp_open __P((int)); 77 void lcp_close __P((int)); 78 void lcp_lowerup __P((int)); 79 void lcp_lowerdown __P((int)); 80 void lcp_input __P((int, u_char *, int)); 81 void lcp_protrej __P((int)); 82 void lcp_sprotrej __P((int, u_char *, int)); 83 int lcp_printpkt __P((u_char *, int, 84 void (*) __P((void *, char *, ...)), void *)); 85 86 /* Default number of times we receive our magic number from the peer 87 before deciding the link is looped-back. */ 88 #define DEFLOOPBACKFAIL 5 89