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$ 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#define CI_CALLBACK 13 /* callback */ 33#define CI_MRRU 17 /* max reconstructed receive unit; multilink */ 34#define CI_SSNHF 18 /* short sequence numbers for multilink */ 35#define CI_EPDISC 19 /* endpoint discriminator */ 36 37/* 38 * LCP-specific packet types. 39 */ 40#define PROTREJ 8 /* Protocol Reject */ 41#define ECHOREQ 9 /* Echo Request */ 42#define ECHOREP 10 /* Echo Reply */ 43#define DISCREQ 11 /* Discard Request */ 44#define CBCP_OPT 6 /* Use callback control protocol */ 45 46/* 47 * The state of options is described by an lcp_options structure. 48 */ 49typedef struct lcp_options { 50 bool passive; /* Don't die if we don't get a response */ 51 bool silent; /* Wait for the other end to start first */ 52 bool restart; /* Restart vs. exit after close */ 53 bool neg_mru; /* Negotiate the MRU? */ 54 bool neg_asyncmap; /* Negotiate the async map? */ 55 bool neg_upap; /* Ask for UPAP authentication? */ 56 bool neg_chap; /* Ask for CHAP authentication? */ 57 bool neg_magicnumber; /* Ask for magic number? */ 58 bool neg_pcompression; /* HDLC Protocol Field Compression? */ 59 bool neg_accompression; /* HDLC Address/Control Field Compression? */ 60 bool neg_lqr; /* Negotiate use of Link Quality Reports */ 61 bool neg_cbcp; /* Negotiate use of CBCP */ 62 bool neg_mrru; /* negotiate multilink MRRU */ 63 bool neg_ssnhf; /* negotiate short sequence numbers */ 64 bool neg_endpoint; /* negotiate endpoint discriminator */ 65 int mru; /* Value of MRU */ 66 int mrru; /* Value of MRRU, and multilink enable */ 67 u_char chap_mdtype; /* which MD type (hashing algorithm) */ 68 u_int32_t asyncmap; /* Value of async map */ 69 u_int32_t magicnumber; 70 int numloops; /* Number of loops during magic number neg. */ 71 u_int32_t lqr_period; /* Reporting period for LQR 1/100ths second */ 72 struct epdisc endpoint; /* endpoint discriminator */ 73} lcp_options; 74 75extern fsm lcp_fsm[]; 76extern lcp_options lcp_wantoptions[]; 77extern lcp_options lcp_gotoptions[]; 78extern lcp_options lcp_allowoptions[]; 79extern lcp_options lcp_hisoptions[]; 80 81#define DEFMRU 1500 /* Try for this */ 82#define MINMRU 128 /* No MRUs below this */ 83#define MAXMRU 16384 /* Normally limit MRU to this */ 84 85void lcp_open __P((int)); 86void lcp_close __P((int, char *)); 87void lcp_lowerup __P((int)); 88void lcp_lowerdown __P((int)); 89void lcp_sprotrej __P((int, u_char *, int)); /* send protocol reject */ 90 91extern struct protent lcp_protent; 92 93/* Default number of times we receive our magic number from the peer 94 before deciding the link is looped-back. */ 95#define DEFLOOPBACKFAIL 10 96