lcp.h revision 8ad0dd2a5c5f23cd210aedba72a43e48026e7436
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 *
428ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * $Id: lcp.h,v 1.19 2002/12/04 23:03:32 paulus 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 */
488ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_MRU		1	/* Maximum Receive Unit */
498ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_ASYNCMAP	2	/* Async Control Character Map */
508ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_AUTHTYPE	3	/* Authentication Type */
518ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_QUALITY	4	/* Quality Protocol */
528ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_MAGICNUMBER	5	/* Magic Number */
538ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_PCOMPRESSION	7	/* Protocol Field Compression */
548ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_ACCOMPRESSION 8	/* Address/Control Field Compression */
558ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_CALLBACK	13	/* callback */
568ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_MRRU		17	/* max reconstructed receive unit; multilink */
578ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_SSNHF	18	/* short sequence numbers for multilink */
588ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CI_EPDISC	19	/* endpoint discriminator */
598ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
608ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
618ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * LCP-specific packet types.
628ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
638ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define PROTREJ		8	/* Protocol Reject */
648ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define ECHOREQ		9	/* Echo Request */
658ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define ECHOREP		10	/* Echo Reply */
668ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define DISCREQ		11	/* Discard Request */
678ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define CBCP_OPT	6	/* Use callback control protocol */
688ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
698ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
708ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * The state of options is described by an lcp_options structure.
718ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
728ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projecttypedef struct lcp_options {
738ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool passive;		/* Don't die if we don't get a response */
748ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool silent;		/* Wait for the other end to start first */
758ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool restart;		/* Restart vs. exit after close */
768ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_mru;		/* Negotiate the MRU? */
778ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_asyncmap;		/* Negotiate the async map? */
788ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_upap;		/* Ask for UPAP authentication? */
798ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_chap;		/* Ask for CHAP authentication? */
808ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_eap;		/* Ask for EAP authentication? */
818ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_magicnumber;	/* Ask for magic number? */
828ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_pcompression;	/* HDLC Protocol Field Compression? */
838ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_accompression;	/* HDLC Address/Control Field Compression? */
848ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_lqr;		/* Negotiate use of Link Quality Reports */
858ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_cbcp;		/* Negotiate use of CBCP */
868ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_mrru;		/* negotiate multilink MRRU */
878ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_ssnhf;		/* negotiate short sequence numbers */
888ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    bool neg_endpoint;		/* negotiate endpoint discriminator */
898ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    int  mru;			/* Value of MRU */
908ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    int	 mrru;			/* Value of MRRU, and multilink enable */
918ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    u_char chap_mdtype;		/* which MD types (hashing algorithm) */
928ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    u_int32_t asyncmap;		/* Value of async map */
938ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    u_int32_t magicnumber;
948ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    int  numloops;		/* Number of loops during magic number neg. */
958ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    u_int32_t lqr_period;	/* Reporting period for LQR 1/100ths second */
968ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project    struct epdisc endpoint;	/* endpoint discriminator */
978ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project} lcp_options;
988ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
998ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern fsm lcp_fsm[];
1008ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_wantoptions[];
1018ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_gotoptions[];
1028ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_allowoptions[];
1038ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern lcp_options lcp_hisoptions[];
1048ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1058ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define DEFMRU	1500		/* Try for this */
1068ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MINMRU	128		/* No MRUs below this */
1078ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define MAXMRU	16384		/* Normally limit MRU to this */
1088ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1098ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_open __P((int));
1108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_close __P((int, char *));
1118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_lowerup __P((int));
1128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_lowerdown __P((int));
1138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid lcp_sprotrej __P((int, u_char *, int));	/* send protocol reject */
1148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectextern struct protent lcp_protent;
1168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
1178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/* Default number of times we receive our magic number from the peer
1188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project   before deciding the link is looped-back. */
1198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#define DEFLOOPBACKFAIL	10
120