FreeCalypso > hg > fc-magnetite
diff src/g23m-fad/ppp/ppp.h @ 174:90eb61ecd093
src/g23m-fad: initial import from TCS3.2/LoCosto
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 12 Oct 2016 05:40:46 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-fad/ppp/ppp.h Wed Oct 12 05:40:46 2016 +0000 @@ -0,0 +1,854 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ++----------------------------------------------------------------------------- +| Copyright 2002 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : Definitions for the Protocol Stack Entity +| Point-to-Point Protocol (PPP) ++----------------------------------------------------------------------------- +*/ + +#ifndef PPP_H +#define PPP_H + +/*==== MACROS ======================================================*/ + +/* + * defines the user of the vsi interface + */ +#define VSI_CALLER PPP_handle, +#define VSI_CALLER_SINGLE PPP_handle + +/* + * VERSION + * + * Description : The constants define the type and the value + * of a version identification. The version + * is part of the monitor struct. + */ +#define VERSION_PPP "PPP 1.0" + +/* + * This is just a TEMPORARY define until the issues with OPTION_MULTITHREAD + * are settled. This define SHOULD be contained in GSM.H. + */ +#undef _ENTITY_PREFIXED +#define _ENTITY_PREFIXED(N) ppp_##N + +/* + * these macros might be defined more globally!!! + */ +#ifdef FRAME_OFFSET_ZERO + +#define GET_PD(s,p) p=s.buf[3] & 0x0F +#define GET_TI(s,t) t=(s.buf[3] & 0xF0)>>4 + +#else /* FRAME_OFFSET_ZERO */ + +#define GET_PD(s,p) ccd_decodeByte(s.buf, (USHORT)(s.o_buf+4), 4, &p) +#define GET_TI(s,t) ccd_decodeByte(s.buf, s.o_buf, 4, &t) + +#endif /* FRAME_OFFSET_ZERO */ + + +/*==== CONSTANTS ======================================================*/ + +/* + * Bitoffset for encoding/decoding + */ +#define ENCODE_OFFSET 0 + + +/* + * Service definitions. Used to access service data with GET/SET_STATE. + * + * Services with multiple incarnation have to be defined as xxx-> + * Services with only one incarnation have to be defined as xxx. + * + */ +#define PPP_SERVICE_RT rt. +#define PPP_SERVICE_PRX prx. +#define PPP_SERVICE_PTX ptx. +#define PPP_SERVICE_FRX frx. +#define PPP_SERVICE_FTX ftx. +#define PPP_SERVICE_ARB arb. +#define PPP_SERVICE_LCP lcp. +#define PPP_SERVICE_ONA ona-> +#define PPP_SERVICE_NCP ncp. +#define PPP_SERVICE_PAP pap. +#define PPP_SERVICE_CHAP chap. + + +/* + * Service name definitions for trace purposes. + */ +#ifndef NTRACE + +#define SERVICE_NAME_PPP_SERVICE_RT "RT" +#define SERVICE_NAME_PPP_SERVICE_PRX "PRX" +#define SERVICE_NAME_PPP_SERVICE_PTX "PTX" +#define SERVICE_NAME_PPP_SERVICE_FRX "FRX" +#define SERVICE_NAME_PPP_SERVICE_FTX "FTX" +#define SERVICE_NAME_PPP_SERVICE_ARB "ARB" +#define SERVICE_NAME_PPP_SERVICE_LCP "LCP" +#define SERVICE_NAME_PPP_SERVICE_ONA "ONA" +#define SERVICE_NAME_PPP_SERVICE_NCP "NCP" +#define SERVICE_NAME_PPP_SERVICE_PAP "PAP" +#define SERVICE_NAME_PPP_SERVICE_CHAP "CHAP" + +#endif /* !NTRACE */ + + +/* + * State definitions for each service. + */ + +#define RT_STOPPED 1 +#define RT_STARTED 2 + +#define PRX_NDTI 3 +#define PRX_NDTI_START_FLOW 4 +#define PRX_READY 5 +#define PRX_DEAD 6 +#define PRX_DEAD_DTI 7 + +#define PTX_READY 8 +#define PTX_BLOCKED 9 +#define PTX_DEAD 10 + +#define FRX_READY_NDTI 11 +#define FRX_TRANSPARENT_NDTI 12 +#define FRX_READY 13 +#define FRX_DEAD 14 +#define FRX_DEAD_DTI 15 +#define FRX_TRANSPARENT 16 + +#define FTX_READY 17 +#define FTX_BLOCKED 18 +#define FTX_READY_DTI_FULL 19 +#define FTX_BLOCKED_DTI_FULL 20 +#define FTX_DEAD 21 +#define FTX_DEAD_START_FLOW 22 +#define FTX_TRANSPARENT 23 +#define FTX_TRANSPARENT_DTI_FULL 24 + +#define ARB_DEAD 25 +#define ARB_LCP_ESTABLISH 26 +#define ARB_LCP_PDP 27 +#define ARB_LCP_NCP 28 +#define ARB_LCP_RECONF 29 +#define ARB_LCP_MOD 30 +#define ARB_PAP_ESTABLISH 31 +#define ARB_PAP_RECONF 32 +#define ARB_CHAP_ESTABLISH 33 +#define ARB_CHAP_RECONF 34 +#define ARB_PDP_WAIT 35 +#define ARB_PDP_SENT 36 +#define ARB_NCP_ESTABLISH 37 +#define ARB_NCP_RECONF 38 +#define ARB_NCP_MOD 39 +#define ARB_IP 40 +#define ARB_TRANSPARENT 41 + +#define LCP_STATE 42 + +#define ONA_CLOSED 43 +#define ONA_CLOSING 44 +#define ONA_REQ_SENT 45 +#define ONA_ACK_RCVD 46 +#define ONA_ACK_SENT 47 +#define ONA_OPENED 48 + +#define NCP_STATE 49 + +#define PAP_DOWN 50 +#define PAP_UP 51 + +#define CHAP_DOWN 52 +#define CHAP_UP 53 + +/* + * state definitions for PTX TX buffer + */ + +#define PTX_BUFFER_FULL 70 /* a state of PTX TX buffer */ +#define PTX_BUFFER_READY 71 /* a state of PTX TX buffer */ + +/* + * state definitions for FTX TX buffer + */ +#define PTX_FTX_BUFFER_READY 72 /* a state of FTX TX buffer */ +#define PTX_FTX_BUFFER_FULL 73 /* a state of FTX TX buffer */ + +/* + * state definitions for uplink data flow + */ + +#define FRX_DATA_FLOW_DEAD 74 /* a state of PTX TX buffer */ +#define FRX_DATA_FLOW_READY 75 /* a state of PTX TX buffer */ + + +/* + * PPP spicific defines + */ +#define DTI_PID_IPCP 0x8021 +#define DTI_PID_LCP 0xc021 +#define DTI_PID_PAP 0xc023 +#define DTI_PID_CHAP 0xc223 + +#define CODE_CONF_REQ 1 +#define CODE_CONF_ACK 2 +#define CODE_CONF_NAK 3 +#define CODE_CONF_REJ 4 +#define CODE_TERM_REQ 5 +#define CODE_TERM_ACK 6 +#define CODE_CODE_REJ 7 +#define CODE_PROT_REJ 8 +#define CODE_ECHO_REQ 9 +#define CODE_ECHO_REP 10 +#define CODE_DISC_REQ 11 + +#define CODE_AUTH_REQ 1 +#define CODE_AUTH_ACK 2 +#define CODE_AUTH_NAK 3 + +#define CODE_CHALLENGE 1 +#define CODE_RESPONSE 2 +#define CODE_SUCCESS 3 +#define CODE_FAILURE 4 + +#define FORWARD_RCRP 1 +#define FORWARD_RCRN 2 +#define FORWARD_RCA 3 +#define FORWARD_RCN 4 +#define FORWARD_RTR 5 +#define FORWARD_RTA 6 +#define FORWARD_RUC 7 +#define FORWARD_RXJN 8 +#define FORWARD_RER 9 +#define FORWARD_RPJ_LCP 10 +#define FORWARD_RPJ_PAP 12 +#define FORWARD_RPJ_CHAP 13 +#define FORWARD_RPJ_IPCP 14 +#define FORWARD_RPJ_IP 15 +#define FORWARD_RPJ_CTCP 16 +#define FORWARD_RPJ_UTCP 17 +#define FORWARD_DISCARD 18 +#define FORWARD_RARP 19 +#define FORWARD_RARN 20 +#define FORWARD_RAA 21 +#define FORWARD_RAN 22 +#define FORWARD_RC 23 +#define FORWARD_RRP 24 +#define FORWARD_RRN 25 +#define FORWARD_RS 26 +#define FORWARD_RF 27 + +#define PROTOCOL_LCP_MSB 0xc0 +#define PROTOCOL_LCP_LSB 0x21 +#define PROTOCOL_PAP_MSB 0xc0 +#define PROTOCOL_PAP_LSB 0x23 +#define PROTOCOL_CHAP_MSB 0xc2 +#define PROTOCOL_CHAP_LSB 0x23 +#define PROTOCOL_VJ_MSB 0x00 +#define PROTOCOL_VJ_LSB 0x2d +#define PROTOCOL_IPCP_MSB 0x80 +#define PROTOCOL_IPCP_LSB 0x21 + +#define PPP_INITFCS 0xffff +#define PPP_GOODFCS 0xf0b8 + +#define PPP_HDLC_ESCAPE 0x7d +#define PPP_HDLC_FLAG 0x7e +#define PPP_ASCII_DEL 0x7f + +#define PPP_AP_DEFAULT PPP_AP_NO +#define PPP_ACFC_DEFAULT FALSE +#define PPP_PFC_DEFAULT FALSE +#define PPP_HC_DEFAULT PPP_HC_OFF +#define PPP_MSID_DEFAULT 0 +#define PPP_IP_DEFAULT PPP_IP_DYNAMIC +#define PPP_PDNS_DEFAULT PPP_DNS1_DYNAMIC +#define PPP_SDNS_DEFAULT PPP_DNS2_DYNAMIC +#define PPP_GATEWAY_DEFAULT PPP_IP_DYNAMIC + +#define PPP_MRU_MIN 1500 + +#define CHAP_MSG_DIGEST_LEN 16 + +#define FTX_QUEUE_SIZE 1 +#define PTX_QUEUE_SIZE 1 + + +#define PPP_PCO_MASK_LCP_MRU 0x00000001 /* MRU value */ +#define PPP_PCO_MASK_LCP_AP 0x00000002 /* LCP authentication protocol */ +#define PPP_PCO_MASK_LCP_TWO 0x00000004 /* two LCP packets */ +#define PPP_PCO_MASK_AUTH_PROT 0x00000008 /* authentification packets (PAP/CHAP) */ +#define PPP_PCO_MASK_IPCP_HC 0x00000010 /* VJ header compression */ +#define PPP_PCO_MASK_IPCP_IP 0x00000020 /* IP address */ +#define PPP_PCO_MASK_IPCP_PDNS 0x00000040 /* primary DNS address */ +#define PPP_PCO_MASK_IPCP_SDNS 0x00000080 /* secondary DNS address */ +#define PPP_PCO_MASK_IPCP_GATEWAY 0x00000100 /* gateway address */ +#ifdef _SIMULATION_ +#define PPP_PCO_MASK_DEFAULT (PPP_PCO_MASK_LCP_MRU | \ + PPP_PCO_MASK_LCP_AP | \ + PPP_PCO_MASK_LCP_TWO | \ + PPP_PCO_MASK_AUTH_PROT | \ + PPP_PCO_MASK_IPCP_HC | \ + PPP_PCO_MASK_IPCP_IP | \ + PPP_PCO_MASK_IPCP_PDNS | \ + PPP_PCO_MASK_IPCP_SDNS) +#else /* _SIMULATION_ */ +#define PPP_PCO_MASK_DEFAULT (PPP_PCO_MASK_AUTH_PROT | \ + PPP_PCO_MASK_IPCP_PDNS | \ + PPP_PCO_MASK_IPCP_SDNS) +#endif /* _SIMULATION_ */ +/* + * size of a descriptor which includes the frame + */ +#define FTX_GET_DESC_SIZE (400 - (UBYTE)sizeof(T_desc2)) + +/* + * frx_add_desc states + */ +#define FRX_ADD_HDLC_BEGIN 1 +#define FRX_ADD_ADDRESS 2 +#define FRX_ADD_CONTROL 3 +#define FRX_ADD_PROTOCOL1 4 +#define FRX_ADD_PROTOCOL2 5 +#define FRX_ADD_INFORMATION 6 +#define FRX_ADD_FCS1 7 +#define FRX_ADD_FCS2 8 +#define FRX_ADD_HDLC_END 9 +#define FRX_ADD_ERROR 10 + +/* + * Definitions for DTILIB + */ + +#define PROT_LAYER 0 +#define PEER_LAYER 1 +#define PROT_CHANNEL 0 +#if defined(_SIMULATION_) +#define PEER_CHANNEL 0 +#else +#define PEER_CHANNEL 1 +#endif +#define MAX_TRIES_OPEN_VSI_CHAN 5 +#define PPP_INSTANCE 0 +#define MAX_PPP_LINKS 2 + +/* + * packet size for normal PPP packets + * this value is just used to reduce the allocated memory + */ +#define FRX_ADD_SMALL_PACKET_SIZE (100 - (UBYTE)(sizeof(T_desc2))) + +/* + * number of ONA incarnations: LCP and NCP + */ +#define ONA_NUM_INC 2 + +#ifdef FF_STATUS_TE +/* + * driver handle for wakeup driver + */ +#define STE_HANDLE 0x0001 +#endif /* FF_STATUS_TE */ + +/* + * Timer handle definitions. + */ + +#define RT_INDEX 0 +#define TIMER_MAX (RT_INDEX + 1) + +/*==== TYPES ======================================================*/ + +#ifdef OPTION_TIMER +/* + * timer configuration table + */ +typedef struct +{ + UBYTE t_mode; + ULONG t_val; +} T_TIMER_CONFIG; +#endif /* OPTION_TIMER */ + +/* + * Test environment (simulator) vs. Implementation environment. + */ +typedef enum +{ + TEST_ENV, + IMPL_ENV +} T_ENVIRONMENT; + +typedef enum +{ + SERVICE_PTX, + SERVICE_PRX, + SERVICE_FRX, + SERVICE_FTX, + SERVICE_RT, + SERVICE_ARB, + SERVICE_PAP, + SERVICE_CHAP, + SERVICE_LCP, + SERVICE_NCP, + SERVICE_ONA, + NO_SERVICE +} T_SERVICE; + +/* + * dat structure for each service + */ +typedef struct /* T_RT_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /*ab hier service spezif. + * timeout value + */ + T_TIME time; + +} T_RT_DATA; + + +typedef struct /* T_PRX_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ +#ifdef FF_STATUS_TE + UBYTE TE_data_buffered; /* Status of TE-data-buffer asleep/awake */ + UBYTE TE_data_buffer_p_id; /* When TE asleep here the p_id is buffered */ + T_desc2* TE_data_buffer_desc_list_first; /* When TE asleep here the desc-list is buffered */ +#endif /* FF_STATUS_TE */ + +} T_PRX_DATA; + + +typedef struct /* T_PTX_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + /* + * service specific members + */ + USHORT ftx_buffer_state; /* state of FTX TX buffer */ + USHORT ptx_buffer_state; /* state of PTX TX buffer */ + +} T_PTX_DATA; + + +typedef struct /* T_FRX_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + T_desc2* received_data; /* last received data stream */ + USHORT proceed_data; /* number of octets already proceeded */ + UBYTE frame_complete; /* indicates whether a complete frame is + received or not */ + USHORT stored_ptype; /* stored packet type */ + T_desc2* stored_packet; /* stored packet */ + USHORT stored_len; /* stored packet length */ + USHORT calc_fcs; /* calculated fcs */ + UBYTE escape; /* indicates HDLC Control Escape detection */ + T_desc2* cur_desc; /* current descriptor for storing */ + USHORT cur_desc_size; /* size of the current descriptor buffer */ + UBYTE store_state; /* state of frame decoding */ + USHORT data_flow_state; /* state of FRX->PTX data flow */ + +#ifdef PPP_HDLC_TRACE + T_desc2* hdlc_frame; /* complete HDLC frame stored for traces */ +#endif /* PPP_HDLC_TRACE */ + +} T_FRX_DATA; + + +typedef struct /* T_FTX_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* + * from here on service specific + */ + + UBYTE* accmtab; /* Async-Control-Character-Map Table */ + + UBYTE acfc; /* Address and Control Field Compression */ + UBYTE pfc; /* Protocol Field Compression */ + +} T_FTX_DATA; + + +typedef struct /* T_ARB_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + UBYTE pri; /* Protocol Reject Identifier */ + UBYTE to_counter; /* Time Out Counter */ + T_desc2* last_ipcp; /* Last sent IPCP packet */ + +UBYTE dti_connect_state_prot; /* DTI Connect State for the Protocol Layer */ +UBYTE dti_connect_state_peer; /* DTI Connect State for the Peer Layer */ + +} T_ARB_DATA; + + +typedef struct /* T_LCP_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + USHORT req_mru; /* requested maximum receive unit */ + ULONG req_accm; /* requested async control character map */ + UBYTE req_ap; /* requested authetication protocol */ + + USHORT s_mru; /* to send maximum receive unit */ + ULONG s_accm; /* to send async control character map */ + UBYTE s_pfc; /* to send protocol field compression */ + UBYTE s_acfc; /* to send address and control field compression */ + USHORT s_rejected; /* indicator of rejection of sent configuration entity_options */ + + USHORT r_mru; /* received maximum receive unit */ + ULONG r_accm; /* received async control character map */ + UBYTE r_pfc; /* received protocol field compression */ + UBYTE r_acfc; /* received address and control field compression */ + + UBYTE n_ap; /* negotiated authentication protocol */ + + UBYTE scr; /* indicator whether configure request was sent */ + UBYTE str; /* indicator whether terminate request was sent */ + + UBYTE rcr; /* indicator whether configure request was received */ + + UBYTE nscri; /* new send configure request identifier */ + UBYTE nstri; /* new send terminate request identifier */ + UBYTE nscji; /* new send code reject identifier */ + + UBYTE lrcri; /* last received configure request identifier */ + +} T_LCP_DATA; + + +typedef struct /* T_ONA_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + UBYTE restarts; /* counter for Configure-Request and Terminate-Request sent */ + UBYTE failures; /* counter for Configure-Nak and Configure-Reject sent */ + UBYTE loops; /* counter for Configure-Ack received */ + +} T_ONA_DATA; + + +typedef struct /* T_NCP_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + UBYTE req_hc; /* requested header compression protocol */ + UBYTE req_msid; /* requested max slot identifier */ + ULONG req_ip; /* requested IP address */ + ULONG req_pdns; /* requested primary DNS server address */ + ULONG req_sdns; /* requested secondary DNS server address */ + ULONG req_gateway; /* requested Gateway address */ + + UBYTE s_hc; /* sent header compression */ + UBYTE s_msid; /* sent max slot identifier */ + USHORT s_rejected; /* indicator of rejection of sent configuration entity_options */ + + UBYTE r_hc; /* received header compression */ + UBYTE r_msid; /* received max slot identifier */ + + ULONG n_ip; /* negotiated IP address */ + ULONG n_pdns; /* negotiated primary DNS server address */ + ULONG n_sdns; /* negotiated secondary DNS server address */ + ULONG n_gateway; /* negotiated Gateway address */ + + UBYTE scr; /* indicator whether configure request was sent */ + UBYTE str; /* indicator whether terminate request was sent */ + + UBYTE rcr; /* indicator whether configure request was received */ + + UBYTE nscri; /* new send configure request identifier */ + UBYTE nstri; /* new send terminate request identifier */ + UBYTE nscji; /* new send code reject identifier */ + + UBYTE lrcri; /* last received configure request identifier */ + +} T_NCP_DATA; + + +typedef struct /* T_PAP_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + T_login login; /* PAP authentication values (client mode) */ + T_desc2* ar_packet; /* PAP Authentication Request packet (server mode) */ + UBYTE counter; /* counter for timer restart */ + UBYTE nari; /* new authenticate request identifier */ + +} T_PAP_DATA; + + +typedef struct /* T_CHAP_DATA */ +{ + UBYTE state; + /* + * Required for state traces. + */ +#ifndef NTRACE + char *name; + char *state_name; +#endif /* !NTRACE */ + + /* ab hier service spezif. + * + */ + T_desc2* c_packet; /* CHAP Challenge packet (server mode) */ + T_desc2* r_packet; /* CHAP Response packet (server mode) */ + UBYTE counter; /* counter for timer restart */ + UBYTE fails; /* counter for failed authentication */ + UBYTE nci; /* new challenge identifier */ + UBYTE sc; /* indicator whether Challenge packet was sent */ + UBYTE rc; /* indicator whether Challenge packet was received */ + UBYTE sr; /* indicator whether Respons packet was sent */ + UBYTE rs; /* indicator whether Success packet was received */ + +} T_CHAP_DATA; + + +/* + * summery of all service + */ + +typedef struct /* T_PPP_DATA */ +{ + + /* + * PPP layer parameters + */ + UBYTE version; + + /* + * Service data structures + * + * Services with multiple incarnations require an array of structures + * named xxx_base[] with xxx = service abbrevation, and additionally a + * pointer named *xxx, which will be accessed instead of xxx_base. + * + * Services with only one incarnation just have to declare one structure + * named xxx (no need for xxx_base[] and *xxx). + * + * The differentiation between the two access possibilites is made with + * the defines of the service names above (PPP_SERVICE_XXX). + */ + T_RT_DATA rt; + T_PRX_DATA prx; + T_PTX_DATA ptx; + T_FRX_DATA frx; + T_FTX_DATA ftx; + T_ARB_DATA arb; + T_LCP_DATA lcp; + T_ONA_DATA ona_base[ONA_NUM_INC]; + T_ONA_DATA *ona; + T_NCP_DATA ncp; + T_PAP_DATA pap; + T_CHAP_DATA chap; + + /* + * global PPP variables + */ + + UBYTE mode; /* working mode (client, server or transparent) */ + + UBYTE mc; /* Max. Configure */ + UBYTE mt; /* Max. Terminate */ + UBYTE mf; /* Max. Failure */ + T_login login; /* CHAP, PAP and AUTO authentication values*/ + + U16 ppp_cause; /* cause of PPP termination */ + + USHORT mru; /* Maximum Receive Unit */ + UBYTE n_hc; /* negotiated header compression */ + + ULONG pco_mask; /* determines PCO content */ + + /* + * Global variables used by DTILIB. + */ + + DTI_HANDLE ppphDTI; /* Handle to DTI Data Base */ + + /* + * global PPP constants + */ + USHORT* fcstab; + +} T_PPP_DATA; + + +/*==== EXPORT =====================================================*/ + + +/* + * Entity data base + */ + +#ifdef PPP_PEI_C +T_PPP_DATA ppp_data_base, *ppp_data; +#else /* PPP_PEI_C */ +EXTERN T_PPP_DATA ppp_data_base, *ppp_data; +#endif /* PPP_PEI_C */ + +#define ENTITY_DATA ppp_data + + +/* + * FCS and ACCM lookup tables + */ + +EXTERN USHORT fcstab_base[256]; +EXTERN UBYTE accmtab_base[256]; + + +/* + * Communication handles (see also PPP_PEI.C, PPP_ARBP.C) + */ +#define hCommMMI ppp_hCommMMI +#define hCommPPP ppp_hCommPPP +#define hCommUPLINK ppp_hCommUPLINK +#define hCommDOWNLINK ppp_hCommDOWNLINK +/* + * make PPP functions unique + */ +#define pei_create _ENTITY_PREFIXED(pei_create) +#define rt_init _ENTITY_PREFIXED(rt_init) + +#ifdef PPP_PEI_C + T_HANDLE hCommMMI = VSI_ERROR; + T_HANDLE hCommPPP = VSI_ERROR; + T_HANDLE hCommUPLINK = VSI_ERROR; + T_HANDLE hCommDOWNLINK = VSI_ERROR; + + T_HANDLE PPP_handle; + +#else /* PPP_PEI_C */ + EXTERN T_HANDLE hCommMMI; + EXTERN T_HANDLE hCommPPP; + EXTERN T_HANDLE hCommUPLINK; + EXTERN T_HANDLE hCommDOWNLINK; + + EXTERN T_HANDLE PPP_handle; +#endif /* PPP_PEI_C */ + +/* + * If all entities are linked into one module this definitions + * prefixes the global data with the enity name + */ +#ifdef OPTION_MULTITHREAD + #define _decodedMsg _ENTITY_PREFIXED(_decodedMsg) +#endif /* OPTION_MULTITHREAD */ +#endif /* PPP_H */