Annotation of embedaddon/mpd/src/lcp.h, revision 1.1
1.1 ! misho 1:
! 2: /*
! 3: * lcp.h
! 4: *
! 5: * Written by Toshiharu OHNO <tony-o@iij.ad.jp>
! 6: * Copyright (c) 1993, Internet Initiative Japan, Inc. All rights reserved.
! 7: * See ``COPYRIGHT.iij''
! 8: *
! 9: * Rewritten by Archie Cobbs <archie@freebsd.org>
! 10: * Copyright (c) 1995-1999 Whistle Communications, Inc. All rights reserved.
! 11: * See ``COPYRIGHT.whistle''
! 12: */
! 13:
! 14: #ifndef _LCP_H_
! 15: #define _LCP_H_
! 16:
! 17: #include "fsm.h"
! 18: #include "timer.h"
! 19: #include "auth.h"
! 20:
! 21: /*
! 22: * DEFINITIONS
! 23: */
! 24:
! 25: /* MRU defs */
! 26: #define LCP_DEFAULT_MRU 1500 /* Per RFC 1661 */
! 27: #define LCP_MIN_MRU 296
! 28:
! 29: #define LCP_NUM_AUTH_PROTOS 5
! 30:
! 31: struct lcpauthproto {
! 32: ushort proto;
! 33: u_char alg;
! 34: u_char conf;
! 35: };
! 36: typedef struct lcpauthproto *LcpAuthProto;
! 37:
! 38: enum lcp_phase {
! 39: PHASE_DEAD = 0,
! 40: PHASE_ESTABLISH,
! 41: PHASE_AUTHENTICATE,
! 42: PHASE_NETWORK,
! 43: PHASE_TERMINATE
! 44: };
! 45:
! 46: /* Link state */
! 47: struct lcpstate {
! 48:
! 49: /* LCP phase of this link */
! 50: enum lcp_phase phase; /* PPP phase */
! 51:
! 52: /* Authorization info */
! 53: struct auth auth; /* Used during authorization phase */
! 54:
! 55: /* Peers negotiated parameters */
! 56: LcpAuthProto peer_protos[LCP_NUM_AUTH_PROTOS]; /* list of acceptable auth-protos */
! 57: u_int32_t peer_accmap; /* Characters peer needs escaped */
! 58: u_int32_t peer_magic; /* Peer's magic number */
! 59: u_int16_t peer_mru; /* Peer's max reception packet size */
! 60: u_int16_t peer_auth; /* Auth requested by peer, or zero */
! 61: u_int16_t peer_mrru; /* MRRU set by peer, or zero */
! 62: u_char peer_alg; /* Peer's CHAP algorithm */
! 63:
! 64: /* My negotiated parameters */
! 65: u_char want_alg; /* My CHAP algorithm */
! 66: LcpAuthProto want_protos[LCP_NUM_AUTH_PROTOS]; /* list of requestable auth-protos */
! 67: u_int32_t want_accmap; /* Control chars I want escaped */
! 68: u_int32_t want_magic; /* My magic number */
! 69: u_int16_t want_mru; /* My MRU */
! 70: u_int16_t want_auth; /* Auth I require of peer, or zero */
! 71: u_int16_t want_mrru; /* My MRRU, or zero if no MP */
! 72:
! 73: /* More params */
! 74: u_char want_protocomp:1; /* I want protocol compression */
! 75: u_char want_acfcomp:1; /* I want a&c field compression */
! 76: u_char want_shortseq:1; /* I want short seq numbers */
! 77: u_char want_callback:1; /* I want to be called back */
! 78:
! 79: u_char peer_protocomp:1; /* Peer wants protocol field comp */
! 80: u_char peer_acfcomp:1; /* Peer wants addr & ctrl field comp */
! 81: u_char peer_shortseq:1; /* Peer gets ML short seq numbers */
! 82:
! 83: /* Misc */
! 84: struct discrim peer_discrim; /* Peer's discriminator */
! 85: char peer_ident[64]; /* Peer's LCP ident string */
! 86: uint32_t peer_reject; /* Request codes rejected by peer */
! 87: struct fsm fsm; /* Finite state machine */
! 88: };
! 89: typedef struct lcpstate *LcpState;
! 90:
! 91: #define TY_VENDOR 0 /* Vendor specific */
! 92: #define TY_MRU 1 /* Maximum-Receive-Unit */
! 93: #define TY_ACCMAP 2 /* Async-Control-Character-Map */
! 94: #define TY_AUTHPROTO 3 /* Authentication-Protocol */
! 95: #define TY_QUALPROTO 4 /* Quality-Protocol */
! 96: #define TY_MAGICNUM 5 /* Magic-Number */
! 97: #define TY_RESERVED 6 /* RESERVED */
! 98: #define TY_PROTOCOMP 7 /* Protocol-Field-Compression */
! 99: #define TY_ACFCOMP 8 /* Address+Control-Field-Compression */
! 100: #define TY_FCSALT 9 /* FCS-Alternatives */
! 101: #define TY_SDP 10 /* Self-Dscribing-Padding */
! 102: #define TY_NUMMODE 11 /* Numbered-Mode */
! 103: #define TY_MULTILINK 12 /* Multi-link procedure (?) */
! 104: #define TY_CALLBACK 13 /* Callback */
! 105: #define TY_CONNECTTIME 14 /* Connect time */
! 106: #define TY_COMPFRAME 15 /* Compound-Frames */
! 107: #define TY_NDS 16 /* Nominal-Data-Encapsulation */
! 108: #define TY_MRRU 17 /* Multi-link MRRU size */
! 109: #define TY_SHORTSEQNUM 18 /* Short seq number header format */
! 110: #define TY_ENDPOINTDISC 19 /* Unique endpoint discrimiator */
! 111: #define TY_PROPRIETARY 20 /* Proprietary */
! 112: #define TY_DCEIDENTIFIER 21 /* DCE-Identifier */
! 113: #define TY_MULTILINKPLUS 22 /* Multi-Link-Plus-Procedure */
! 114: #define TY_BACP 23 /* Link Discriminator for BACP RFC2125 */
! 115: #define TY_LCPAUTHOPT 24 /* LCP-Authentication-Option */
! 116: #define TY_COBS 25 /* Consistent Overhead Byte Stuffing (COBS) */
! 117: #define TY_PREFIXELISION 26 /* Prefix elision */
! 118: #define TY_MULTILINKHEADERFMT 27 /* Multilink header format */
! 119: #define TY_INTERNAT 28 /* Internationalization */
! 120: #define TY_SDATALINKSONET 29 /* Simple Data Link on SONET/SDH */
! 121:
! 122: /*
! 123: * FUNCTIONS
! 124: */
! 125:
! 126: extern void LcpInit(Link l);
! 127: extern void LcpInst(Link l, Link lt);
! 128: extern void LcpShutdown(Link l);
! 129: extern void LcpInput(Link l, Mbuf bp);
! 130: extern void LcpUp(Link l);
! 131: extern void LcpOpen(Link l);
! 132: extern void LcpClose(Link l);
! 133: extern void LcpDown(Link l);
! 134: extern int LcpStat(Context ctx, int ac, char *av[], void *arg);
! 135: extern void LcpAuthResult(Link l, int success);
! 136:
! 137: #endif
! 138:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>