18ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* 28ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * lcp.h - Link Control Protocol definitions. 38ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 48ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. 58ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 68ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Redistribution and use in source and binary forms, with or without 78ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * modification, are permitted provided that the following conditions 88ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * are met: 98ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * notice, this list of conditions and the following disclaimer. 128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * notice, this list of conditions and the following disclaimer in 158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * the documentation and/or other materials provided with the 168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * distribution. 178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 3. The name "Carnegie Mellon University" must not be used to 198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * endorse or promote products derived from this software without 208ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * prior written permission. For permission or any legal 218ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * details, please contact 228ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Office of Technology Transfer 238ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Carnegie Mellon University 248ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 5000 Forbes Avenue 258ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Pittsburgh, PA 15213-3890 268ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * (412) 268-4387, fax: (412) 268-7395 278ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * tech-transfer@andrew.cmu.edu 288ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 298ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 4. Redistributions of any form whatsoever must retain the following 308ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * acknowledgment: 318ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * "This product includes software developed by Computing Services 328ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * at Carnegie Mellon University (http://www.cmu.edu/computing/)." 338ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 348ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO 358ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 368ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE 378ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 388ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 398ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 408ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 418ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * 421286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley * $Id: lcp.h,v 1.20 2004/11/14 22:53:42 carlsonj Exp $ 438ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */ 448ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 458ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* 468ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Options. 478ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */ 481286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_VENDOR 0 /* Vendor Specific */ 498ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_MRU 1 /* Maximum Receive Unit */ 508ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_ASYNCMAP 2 /* Async Control Character Map */ 518ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_AUTHTYPE 3 /* Authentication Type */ 528ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_QUALITY 4 /* Quality Protocol */ 538ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_MAGICNUMBER 5 /* Magic Number */ 548ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_PCOMPRESSION 7 /* Protocol Field Compression */ 558ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */ 561286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_FCSALTERN 9 /* FCS-Alternatives */ 571286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_SDP 10 /* Self-Describing-Pad */ 581286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_NUMBERED 11 /* Numbered-Mode */ 598ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_CALLBACK 13 /* callback */ 608ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_MRRU 17 /* max reconstructed receive unit; multilink */ 618ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_SSNHF 18 /* short sequence numbers for multilink */ 628ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_EPDISC 19 /* endpoint discriminator */ 631286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_MPPLUS 22 /* Multi-Link-Plus-Procedure */ 641286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_LDISC 23 /* Link-Discriminator */ 651286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_LCPAUTH 24 /* LCP Authentication */ 661286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_COBS 25 /* Consistent Overhead Byte Stuffing */ 671286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_PREFELIS 26 /* Prefix Elision */ 681286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_MPHDRFMT 27 /* MP Header Format */ 691286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_I18N 28 /* Internationalization */ 701286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define CI_SDL 29 /* Simple Data Link */ 718ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 728ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* 731286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley * LCP-specific packet types (code numbers). 748ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */ 758ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define PROTREJ 8 /* Protocol Reject */ 768ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define ECHOREQ 9 /* Echo Request */ 778ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define ECHOREP 10 /* Echo Reply */ 788ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define DISCREQ 11 /* Discard Request */ 791286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define IDENTIF 12 /* Identification */ 801286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley#define TIMEREM 13 /* Time Remaining */ 811286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley 821286c078a4b93695b3812e8c7fe7918c28ea18b4Adam Langley/* Value used as data for CI_CALLBACK option */ 838ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CBCP_OPT 6 /* Use callback control protocol */ 848ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 858ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* 868ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * The state of options is described by an lcp_options structure. 878ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */ 888ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef struct lcp_options { 898ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool passive; /* Don't die if we don't get a response */ 908ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool silent; /* Wait for the other end to start first */ 918ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool restart; /* Restart vs. exit after close */ 928ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_mru; /* Negotiate the MRU? */ 938ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_asyncmap; /* Negotiate the async map? */ 948ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_upap; /* Ask for UPAP authentication? */ 958ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_chap; /* Ask for CHAP authentication? */ 968ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_eap; /* Ask for EAP authentication? */ 978ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_magicnumber; /* Ask for magic number? */ 988ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_pcompression; /* HDLC Protocol Field Compression? */ 998ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_accompression; /* HDLC Address/Control Field Compression? */ 1008ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_lqr; /* Negotiate use of Link Quality Reports */ 1018ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_cbcp; /* Negotiate use of CBCP */ 1028ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_mrru; /* negotiate multilink MRRU */ 1038ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_ssnhf; /* negotiate short sequence numbers */ 1048ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project bool neg_endpoint; /* negotiate endpoint discriminator */ 1058ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project int mru; /* Value of MRU */ 1068ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project int mrru; /* Value of MRRU, and multilink enable */ 1078ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project u_char chap_mdtype; /* which MD types (hashing algorithm) */ 1088ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project u_int32_t asyncmap; /* Value of async map */ 1098ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project u_int32_t magicnumber; 1108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project int numloops; /* Number of loops during magic number neg. */ 1118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project u_int32_t lqr_period; /* Reporting period for LQR 1/100ths second */ 1128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project struct epdisc endpoint; /* endpoint discriminator */ 1138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project} lcp_options; 1148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 1158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern fsm lcp_fsm[]; 1168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_wantoptions[]; 1178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_gotoptions[]; 1188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_allowoptions[]; 1198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_hisoptions[]; 1208ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 1218ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define DEFMRU 1500 /* Try for this */ 1228ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MINMRU 128 /* No MRUs below this */ 1238ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MAXMRU 16384 /* Normally limit MRU to this */ 1248ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 1258ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_open __P((int)); 1268ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_close __P((int, char *)); 1278ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_lowerup __P((int)); 1288ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_lowerdown __P((int)); 1298ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_sprotrej __P((int, u_char *, int)); /* send protocol reject */ 1308ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 1318ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern struct protent lcp_protent; 1328ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project 1338ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* Default number of times we receive our magic number from the peer 1348ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project before deciding the link is looped-back. */ 1358ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define DEFLOOPBACKFAIL 10 136