FreeCalypso > hg > fc-magnetite
view src/g23m-fad/ppp/ppp.h @ 683:81394dcdf4d3
uartfax.c: OM-style wakeup interrupt implemented for Tango
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 26 Jun 2020 03:06:16 +0000 |
parents | 90eb61ecd093 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | 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 */