/********************************************************************/ /** Copyright(c) 1989 Microsoft Corporation. **/ /********************************************************************/ //*** // // Filename: util.h // // Description: Contains prototype of utility funtions and procedures // // History: // Oct 31,1993. NarenG Created original version. // #ifndef _UTIL_ #define _UTIL_ #include "lcp.h" DWORD AllocateAndInitBcb( PCB * pPcb ); VOID NotifyCaller( IN PCB * pPcb, IN DWORD PppEvent, IN PVOID pData ); VOID NotifyCallerOfFailureOnPort( IN HPORT hPort, IN BOOL fServer, IN DWORD dwRetCode ); VOID NotifyCallerOfFailure( IN PCB * pPcb, IN DWORD dwRetCode ); VOID InitRestartCounters( IN PCB * pPcb, IN CPCB * pCpCb ); VOID HostToWireFormat16( IN WORD wHostFormat, IN OUT PBYTE pWireFormat ); WORD WireToHostFormat16( IN PBYTE pWireFormat ); VOID HostToWireFormat32( IN DWORD dwHostFormat, IN OUT PBYTE pWireFormat ); DWORD WireToHostFormat32( IN PBYTE pWireFormat ); DWORD HashPortToBucket( IN HPORT hPort ); VOID InsertWorkItemInQ( IN PCB_WORK_ITEM * pWorkItem ); VOID LogPPPEvent( IN DWORD dwEventId, IN DWORD dwData ); DWORD GetCpIndexFromProtocol( IN DWORD dwProtocol ); BOOL IsLcpOpened( PCB * pPcb ); PCB * GetPCBPointerFromhPort( IN HPORT hPort ); BCB * GetBCBPointerFromhConnection( IN HCONN hConnection ); DWORD NumLinksInBundle( IN BCB * pBcb ); PCB * GetPCBPointerFromBCB( IN BCB * pBcb ); DWORD AreNCPsDone( IN PCB * pPcb, IN DWORD CpIndex, IN OUT PPP_PROJECTION_RESULT * pProjectionResult, IN OUT BOOL * pfNCPsAreDone ); BYTE GetUId( IN PCB * pPcb, IN DWORD CpIndex ); VOID AlertableWaitForSingleObject( IN HANDLE hObject ); BOOL NotifyIPCPOfNBFCPProjection( IN PCB * pPcb, IN DWORD CpIndex ); DWORD CalculateRestartTimer( IN HPORT hPort ); VOID CheckCpsForInactivity( IN PCB * pPcb, IN DWORD dwEvent ); CHAR* DecodePw( IN CHAR chSeed, IN OUT CHAR* pszPassword ); CHAR* EncodePw( IN CHAR chSeed, IN OUT CHAR* pszPassword ); VOID GetLocalComputerName( IN OUT LPSTR szComputerName ); DWORD InitEndpointDiscriminator( IN OUT BYTE EndPointDiscriminator[] ); VOID DeallocateAndRemoveBcbFromTable( IN BCB * pBcb ); VOID RemovePcbFromTable( IN PCB * pPcb ); BOOL WillPortBeBundled( IN PCB * pPcb ); DWORD TryToBundleWithAnotherLink( IN PCB * pPcb ); VOID AdjustHTokenImpersonateUser( IN PCB * pPcb ); BOOL FLinkDiscriminatorIsUnique( IN PCB * pPcb, OUT DWORD * pdwLinkDisc ); DWORD InitializeNCPs( IN PCB * pPcb, IN DWORD dwConfigMask ); CPCB * GetPointerToCPCB( IN PCB * pPcb, IN DWORD CpIndex ); DWORD GetNewPortOrBundleId( VOID ); NCP_PHASE QueryBundleNCPState( IN PCB * pPcb ); VOID NotifyCallerOfBundledProjection( IN PCB * pPcb ); VOID StartNegotiatingNCPs( IN PCB * pPcb ); VOID StartAutoDisconnectForPort( IN PCB * pPcb ); VOID StartLCPEchoForPort( IN PCB * pPcb ); VOID NotifyCompletionOnBundledPorts( IN PCB * pPcb ); VOID RemoveNonNumerals( IN CHAR* szString ); CHAR* TextualSidFromPid( DWORD dwPid ); DWORD GetRouterPhoneBook( CHAR** pszPhonebookPath ); DWORD GetCredentialsFromInterface( PCB * pPcb ); BOOL IsCpIndexOfAp( IN DWORD CpIndex ); VOID StopAccounting( PVOID pContext ); VOID InterimAccounting( PVOID pContext ); VOID StartAccounting( PVOID pContext ); PBYTE GetClientInterfaceInfo( IN PCB * pPcb ); VOID LoadParserDll( IN HKEY hKeyPpp ); DWORD PortSendOrDisconnect( IN PCB * pPcb, IN DWORD cbPacket ); VOID ReceiveViaParser( IN PCB * pPcb, IN PPP_PACKET * pPacket, IN DWORD dwPacketLength ); DWORD GetSecondsSince1970( VOID ); BOOL IsPschedRunning( VOID ); VOID PppLog( IN DWORD DbgLevel, ... ); VOID LogPPPPacket( IN BOOL fReceived, IN PCB * pPcb, IN PPP_PACKET * pPacket, IN DWORD cbPacket ); VOID CreateAccountingAttributes( IN PCB * pPcb ); VOID MakeStartAccountingCall( IN PCB * pPcb ); VOID MakeStopOrInterimAccountingCall( IN PCB * pPcb, IN BOOL fInterimAccounting ); RAS_AUTH_ATTRIBUTE * GetUserAttributes( PCB * pPcb ); #define BYTESPERLINE 16 #ifdef MEM_LEAK_CHECK #define PPP_MEM_TABLE_SIZE 100 PVOID PppMemTable[PPP_MEM_TABLE_SIZE]; #define LOCAL_ALLOC DebugAlloc #define LOCAL_FREE DebugFree #define LOCAL_REALLOC DebugReAlloc LPVOID DebugAlloc( DWORD Flags, DWORD dwSize ); BOOL DebugFree( PVOID pMem ); LPVOID DebugReAlloc( PVOID pMem, DWORD dwSize ); #else #define LOCAL_ALLOC(Flags,dwSize) HeapAlloc( PppConfigInfo.hHeap, \ HEAP_ZERO_MEMORY, dwSize ) #define LOCAL_FREE(hMem) HeapFree( PppConfigInfo.hHeap, 0, hMem ) #define LOCAL_REALLOC(hMem,dwSize) HeapReAlloc( PppConfigInfo.hHeap, \ HEAP_ZERO_MEMORY,hMem,dwSize) #endif #define PPP_ASSERT RTASSERT #endif