/*****************************************************************************\ * * * rnap.h - Remote Network Access (RNA) private interface * * * * Version 1.00 * * * * Copyright (c) 1992-1993, Microsoft Corp. All rights reserved. * * * ******************************************************************************/ #ifndef _RNAP_H_ #define _RNAP_H_ #define RAS_MaxPortName 128 #define RAS_MaxComment 255 #define RAS_MaxCountry 3 #define RAS_MaxAreaCode 10 #define RAS_MaxLocal 36 #define RAS_MaxExtension 5 #define RAS_MaxSMMDesc 63 #define RAS_MaxProtocolDesc 63 /****************************************************************************** Private RASCONNSTATE ******************************************************************************/ #define RASCS_PrivateStart RASCS_Disconnected+1 #define RASCS_StartClosing RASCS_PrivateStart #define RASCS_LoggingOff RASCS_PrivateStart+1 #define RASCS_Closing RASCS_PrivateStart+2 #define RASCS_Closed RASCS_PrivateStart+3 #define RASCS_Terminating RASCS_PrivateStart+4 /****************************************************************************** Registry key paths ******************************************************************************/ #define REGSTR_KEY_RNA "RemoteAccess" #define REGSTR_PATH_RNA REGSTR_PATH_SERVICES"\\"REGSTR_KEY_RNA #define REGSTR_VAL_IMPLICIT "EnableImplicit" #define REGSTR_VAL_DIALUI "DialUI" #define REGSTR_KEY_PROF REGSTR_KEY_RNA"\\Profile" #define REGSTR_VAL_USER "User" #define REGSTR_VAL_DOMAIN "Domain" #define REGSTR_VAL_NUMBER "Number" #define REGSTR_VAL_SCRIPT "PPPScript" #define REGSTR_VAL_MODE "Mode" #define REGSTR_VAL_TERM "Terminal" #define REGSTR_VAL_AUTODIALDLL "AutodialDllName" #define REGSTR_VAL_AUTODIALFN "AutodialFcnName" #define REGSTR_VAL_ML "MultiLink" /****************************************************************************** Related RNA module names and internal exported ******************************************************************************/ #define RNA_SERVER_MOD_NAME "RNASERV.DLL" #define CALLER_ACCESS_FUNC_NAME "CallerAccess" #define RNADLL_MODULE_NAME "RASAPI32.DLL" #define RNASCRIPT_MODULE_NAME "SMMSCRPT.DLL" #define RUN_SCRIPT_FUNC_NAME "RunRnaScript" #define RNAUI_MODULE_NAME "RNAUI.DLL" #define CREATE_ENTRY_FUNC_NAME "Remote_CreateEntry" #define EDIT_ENTRY_FUNC_NAME "Remote_EditEntry" #define NOTIFY_FUNC_NAME "Remote_Notify" /****************************************************************************** Asynchronous event notification from RNA engine via WM_RASDIALEVENT ******************************************************************************/ #define RNA_ASYNCEVENT 0xFFFFFFFF // wParam value #define RNA_ADD_DEVICE 0 // A new device was added #define RNA_DEL_DEVICE 1 // A new device was removed #define RNA_REINIT_DEVICE 2 // The device needs to be reintied #define RNA_SHUTDOWN 3 // The engine needs to shutdown #define RNA_TRANSLATECHANGE 4 // Translate address caps changed /****************************************************************************** Communication with RNA engine ******************************************************************************/ #define CLIENT_CONNECTION 1 // Client connection #define SERVER_CONNECTION 2 // Server connection #define WM_RNAMSG WM_USER+10 #define RL_MINMSG WM_RNAMSG #define RL_CREATE RL_MINMSG // create a connection #define RL_TERMINATE RL_MINMSG+1 // terminate the connection #define RL_CONNECTED RL_MINMSG+2 // a connection is active #define RL_DISCONNECTED RL_MINMSG+3 // a connection is not active #define RL_SUPRV RL_MINMSG+4 // initialize supervisor #define RL_ACTIVATE RL_MINMSG+5 // activate supervisor change #define RL_REINIT RL_MINMSG+6 // Reinitialize the engine #define RL_REG_DEVCHG RL_MINMSG+7 // Register device notification #define RL_GET_COUNT RL_MINMSG+8 // Get the count #define RL_GW_NOTIFY RL_MINMSG+9 // Gateway callback /****************************************************************************** Communication with Dial engine ******************************************************************************/ #define DL_MINMSG WM_RNAMSG #define DL_DIALEVENT DL_MINMSG // continue dial-up sequence #define DL_DISCONNECTED DL_MINMSG+1 // a connection is not active #define DL_AUTHENTICATE DL_MINMSG+2 // auth module sent a message #define DL_CONNECTED DL_MINMSG+3 // a new connection is active #define DL_CLOSE DL_MINMSG+4 // Terminate the connection window #define DL_MAC_MSG DL_MINMSG+5 // MAC requests disconnection #define DL_RECONNECT DL_MINMSG+6 // a connection needs reconnect #define DL_NOTIFYICON DL_MINMSG+7 // tray icon notification #define DL_SHOW_STAT DL_MINMSG+8 // display the status dialog //**************************************************************************** // Communication with gateway manager //**************************************************************************** #define GW_MINMSG WM_RNAMSG #define GW_DIALEVENT DL_DIALEVENT // !!WARNING!! shared message #define GW_CONNECTED GW_MINMSG + 1 #define GW_DISCONNECTED GW_MINMSG + 2 #define GW_LOG GW_MINMSG + 3 #define GW_CLOSE DL_CLOSE // !!WARNING!! shared message #define GW_MAC_MSG DL_MAC_MSG // MAC requests disconnection #define MAX_AUTODISCONNECT 60000 // server autodisconnect sec. // // Gateway to Supervisor Communication // LRESULT WINAPI DialInMessage(HWND, UINT, WPARAM, LPARAM); /****************************************************************************** Request for services from RNADLL ******************************************************************************/ DWORD WINAPI RnaEngineRequest (UINT uCommand, DWORD dwParam); DWORD WINAPI DialEngineRequest (UINT uCommand, DWORD dwParam1, DWORD dwParam2); DWORD WINAPI SuprvRequest (UINT uCommand, DWORD dwParam1, DWORD dwParam2); #define RA_MINCMD 0 #define RA_LOAD RA_MINCMD // Notify Rna process is a loader #define RA_INIT RA_MINCMD+1 // Initialize the rna engine #define RA_TERMINATE RA_MINCMD+2 // rna engine terminated #define RA_REG_DEVCHG RA_MINCMD+3 // register dev change notification #define RA_DEREG_DEVCHG RA_MINCMD+4 // deregister dev change notification #define RA_REINIT RA_MINCMD+5 // Reinitialize the rna engine #define RA_ADD_DEVICE RA_MINCMD+6 // Device added #define RA_DEL_DEVICE RA_MINCMD+7 // Device removed #define RA_GET_PROP RA_MINCMD+8 // Get property page #define RA_MAXCMD RA_MINCMD+50 #define GA_MINCMD RA_MAXCMD+1 #define GA_INIT_SUPRV GA_MINCMD // Initialize supervisor #define GA_ACTIVE_SUPRV GA_MINCMD+1 // Activate supervisor #define GA_SHUTDOWN RA_MINCMD+2 // Shutdown the system #define GA_LOG_SUPRV GA_MINCMD+3 // Register log event #define GA_LOGON_INFO GA_MINCMD+4 // Logon session information #define GA_DISCONNECT GA_MINCMD+5 // Terminate logon session #define GA_START_SUPRV GA_MINCMD+6 // Start the host #define GA_STOP_SUPRV GA_MINCMD+7 // Stop the host #define GA_DEV_CHANGE GA_MINCMD+8 // A device changed #define GA_GET_STATS GA_MINCMD+9 // Get the server information #define GA_COUNT_ACTIVE GA_MINCMD+10 // Count the active connection #define GA_MAXCMD GA_MINCMD+50 #define DA_MINCMD GA_MAXCMD+1 #define DA_CONNINFO DA_MINCMD // connection information #define DA_DISCONNECT DA_MINCMD+1 // disconnect an active connection #define DA_RECONNECT DA_MINCMD+2 // reconnect a dropped connection #define DA_NEWCONN DA_MINCMD+3 // a new connection is added #define DA_SHUTDOWN DA_MINCMD+4 // Shutdown the system #define DA_NEWEVENT DA_MINCMD+5 // Notify a new event #define DA_COMPASYN DA_MINCMD+6 // Notify a async operation completion #define DA_DEV_CHANGE DA_MINCMD+7 // A device changed #define DA_GET_UI_WND DA_MINCMD+8 // Get the UI window #define DA_SET_WND_POS DA_MINCMD+9 // Set the status window position #define DA_GETSTATS DL_MINMSG+10 // a connection needs stats #define DA_GET_CONNSTAT DL_MINMSG+11 // Get current connection status #define DA_GET_SUBENTRY DL_MINMSG+12 // Get sub-entry information #define DA_DIAL_SUBENTRY DL_MINMSG+13 // Dial a sub-entry #define DA_MAXCMD DA_MINCMD+50 typedef struct tagConnInfo { char szEntryName[RAS_MaxEntryName+1]; DWORD dwRate; char szSMMDesc[RAS_MaxSMMDesc+1]; DWORD fdwProtocols; char szDeviceType[RAS_MaxDeviceType+1]; char szDeviceName[RAS_MaxDeviceName+1]; } CONNINFO, *PCONNINFO, FAR* LPCONNINFO; typedef struct tagMLInfo { BOOL fEnabled; DWORD cSubEntries; } MLINFO, *PMLINFO, FAR* LPMLINFO; typedef struct tagSubConnInfo { DWORD iSubEntry; MLINFO mli; } SUBCONNINFO, *PSUBCONNINFO, FAR* LPSUBCONNINFO; #define PARENT_ENTRY_ID 0xFFFFFFFF // Flags for protocols in fdwProtocols // #define PROTOCOL_AMB 0x00000001 #define PROTOCOL_PPPNBF 0x00000002 #define PROTOCOL_PPPIPX 0x00000004 #define PROTOCOL_PPPIP 0x00000008 //**************************************************************************** // RNAAPP Command line interface //**************************************************************************** #define RNAAPP_EXE_NAME "rnaapp" #define LOAD_REQ "-l" // RnaDll loads Rnaapp //**************************************************************************** // RNAUI Private Interface //**************************************************************************** #define DT_NULLMODEM "null" #define DT_MODEM "modem" #define DT_ISDN "isdn" #define DT_UNKNOWN "unknown" #define DIRECTCC "Direct Cable Connection Host Logon" typedef HICON FAR* LPHICON; // SMM Usage type flags // #define CLIENT_SMM 0x00000001 #define SERVER_SMM 0x00000002 typedef struct tagSMMCFG { DWORD dwSize; DWORD fdwOptions; DWORD fdwProtocols; } SMMCFG, *PSMMCFG, FAR* LPSMMCFG; typedef struct tagSMMINFO { char szSMMType[RNA_MaxSMMType+1]; SMMCFG SMMConfig; } SMMINFO, *PSMMINFO, FAR* LPSMMINFO; typedef struct tagIPData { DWORD dwSize; DWORD fdwTCPIP; DWORD dwIPAddr; DWORD dwDNSAddr; DWORD dwDNSAddrAlt; DWORD dwWINSAddr; DWORD dwWINSAddrAlt; } IPDATA, *PIPDATA, FAR *LPIPDATA; typedef struct tagSMMData { struct tagSMMData *pNext; SMMINFO smmi; DWORD fdwOptAllow; DWORD fdwProtAllow; IPDATA ipData; } SMMDATA, *PSMMDATA, FAR *LPSMMDATA; // Flags for the fdwTCPIP field // #define IPF_IP_SPECIFIED 0x00000001 #define IPF_NAME_SPECIFIED 0x00000002 #define IPF_NO_COMPRESS 0x00000004 #define IPF_NO_WAN_PRI 0x00000008 typedef struct tagDEVICEINFO { DWORD dwVersion; UINT uSize; char szDeviceName[RAS_MaxDeviceName+1]; char szDeviceType[RAS_MaxDeviceType+1]; } DEVICEINFO, *PDEVICEINFO, FAR* LPDEVICEINFO; typedef struct tagDevConfig { HICON hIcon; SMMINFO smmi; DEVICEINFO di; } DEVCONFIG, *PDEVCONFIG, FAR* LPDEVCONFIG; typedef struct tagPhoneNum { DWORD dwCountryID; DWORD dwCountryCode; char szAreaCode[RAS_MaxAreaCode+1]; char szLocal[RAS_MaxLocal+1]; char szExtension[RAS_MaxExtension+1]; } PHONENUM, *PPHONENUM, FAR *LPPHONENUM; typedef struct tagCountryInfo { DWORD dwCountryID; DWORD dwNextCountryID; DWORD dwCountryCode; DWORD dwCountryNameOffset; } COUNTRYINFO, *PCOUNTRYINFO, FAR* LPCOUNTRYINFO; typedef struct tagConnEntry { PSTR pszEntry; PHONENUM pn; PDEVCONFIG pDevConfig; DWORD dwFlags; DWORD cSubEntry; } CONNENTRY, *PCONNENTRY, FAR* LPCONNENTRY; #define CESZENTRY(pCE) ((PSTR)(((PBYTE)pCE)+sizeof(CONNENTRY))) #define DEVCONFIGSIZE(diSize) (diSize+(sizeof(DEVCONFIG)-sizeof(DEVICEINFO))) typedef struct tagSubConnEntry { DWORD dwSize; DWORD dwFlags; char szDeviceType[RAS_MaxDeviceType+1]; char szDeviceName[RAS_MaxDeviceName+1]; char szLocal[RAS_MaxPhoneNumber+1]; } SUBCONNENTRY, *PSUBCONNENTRY, FAR* LPSUBCONNENTRY; typedef struct tagConnEntDlg { PCONNENTRY pConnEntry; PDEVCONFIG pDevConfig; PSMMDATA pSMMList; PSMMDATA pSMMType; PMLINFO pmli; DWORD cmlChannel; } CONNENTDLG, *PCONNENTDLG, FAR *LPCONNENTDLG; typedef struct tagRNAPropPage { UINT idPage; HMODULE hModule; UINT idRes; DLGPROC pfn; } RNAPROPPAGE, *PRNAPROPPAGE, FAR *LPRNAPROPPAGE; #define SRV_TYPE_PAGE 0 // Server Type page id DWORD WINAPI RnaEnumConnEntries(LPSTR lpBuf, UINT cb, LPDWORD lpcEntries); PCONNENTRY WINAPI RnaGetConnEntry(LPSTR szEntry, BOOL bNeedIcon, BOOL fDevice); BOOL WINAPI RnaFreeConnEntry(PCONNENTRY); DWORD WINAPI RnaSaveConnEntry(PCONNENTRY lpConnEntry); BOOL WINAPI RnaDeleteConnEntry(LPSTR szEntry); DWORD WINAPI RnaRenameConnEntry(LPSTR szOldEntry, LPSTR szNewEntry); DWORD WINAPI RnaValidateEntryName (LPSTR szEntry, BOOL fNew); DWORD WINAPI RnaEnumCountryInfo (LPCOUNTRYINFO, LPDWORD); DWORD WINAPI RnaGetAreaCodeList (LPSTR, LPDWORD); DWORD WINAPI RnaGetCurrentCountry (LPDWORD); DWORD WINAPI RnaEnumDevices (LPBYTE lpBuff, LPDWORD lpcbSize, LPDWORD lpcEntries); PDEVCONFIG WINAPI RnaGetDefaultDevConfig (LPSTR szDeviceName); DWORD WINAPI RnaGetDeviceInfo(LPSTR szDeviceName, LPDEVICEINFO lpdi); DWORD WINAPI RnaGetDeviceChannel (LPSTR szDeviceName); PDEVCONFIG WINAPI RnaBuildDevConfig (PDEVCONFIG pDevConfig, HICON hIcon, BOOL bNeedIcon); DWORD WINAPI RnaDevConfigDlg(HWND hWnd, PDEVCONFIG pDevConfig); BOOL WINAPI RnaFreeDevConfig(PDEVCONFIG pDevConfig); DWORD WINAPI RnaSMMInfoDialog(HWND hWnd, LPSTR szEntryName, LPSTR szDeviceName, LPSMMINFO lpsmmi, DWORD dwUsage); DWORD WINAPI RnaEnumerateMacNames (LPSTR szDeviceName, LPBYTE lpBuff, LPDWORD lpcb); DWORD WINAPI RnaEnumerateSMMNames (LPSTR szDeviceName, LPBYTE lpBuff, LPDWORD lpcb, DWORD dwType); DWORD WINAPI RnaGetDefaultSMMInfo(LPSTR szDeviceName, LPSMMINFO lpsmmi, BOOL fClient); DWORD WINAPI RnaGetIPInfo(LPSTR szEntryName, PIPDATA pIpData, BOOL fDefault); DWORD WINAPI RnaSetIPInfo(LPSTR szEntryName, PIPDATA pIpData); DWORD WINAPI RnaLogon(HWND); DWORD WINAPI RnaActivateEngine(); DWORD WINAPI RnaDeactivateEngine(); DWORD WINAPI RnaUIDial(HWND, LPSTR); DWORD WINAPI RnaImplicitDial(HWND, LPSTR); DWORD WINAPI RnaFindDriver(HWND hwnd, LPSTR lpszDriverList); DWORD WINAPI RnaInstallDriver (HWND hwnd, LPSTR lpszDriverList); DWORD WINAPI RnaExportEntry (LPSTR szEntryName, LPSTR szFileName); DWORD WINAPI RnaImportEntry (LPSTR szFileName, LPBYTE lpBuff, DWORD cb); DWORD WINAPI RnaValidateImportEntry (LPSTR szFileName); DWORD WINAPI RnaGetMultiLinkInfo (LPSTR, LPMLINFO); DWORD WINAPI RnaSetMultiLinkInfo (LPSTR, LPMLINFO); DWORD WINAPI RnaGetSubEntry (LPSTR, DWORD, PSUBCONNENTRY, LPDWORD); DWORD WINAPI RnaSetSubEntry (LPSTR, DWORD, PSUBCONNENTRY, DWORD); #define LOG_INACTIVE 0 #define LOG_DISCONNECTION 1 #define LOG_ACTIVE 2 #define LOG_LISTEN 3 #define LOG_AUTH_TIMEOUT 4 #define LOG_CALLBACK 5 #define LOG_ANSWERED 6 #define LOG_ERROR 7 typedef struct tagLOGINFO { LPSTR szPortName; HWND hwnd; UINT uLogEvent; } LOGINFO, *PLOGINFO, FAR* LPLOGINFO; typedef struct tagGWLOGONINFO { LPSTR szPortName; char szUserName[UNLEN+1]; SYSTEMTIME sysTime; } GWLOGONINFO, *PGWLOGONINFO, FAR* LPGWLOGONINFO; typedef enum tagRNASECURITY { RNAPASSWORD, RNAPASSTHROUGH } RNASECURITY; #define RNAADMIN_DIALIN 1 #define USERTYPE_USER 0x00000001 #define USERTYPE_GROUP 0x00000002 #define USERTYPE_WORLD 0x00000004 typedef struct tagUSER_ACCESS { RNAACCESSTYPE accesstype; BOOL fUseCallbacks; DWORD dwUsertype; } USERACCESS, *PUSERACCESS, FAR *LPUSERACCESS; typedef struct tagPORTSTATS { char szPortName[RAS_MaxPortName+1]; char szDeviceType[RAS_MaxDeviceType+1]; BOOL fAccessEnabled; UINT TimeOut; SMMINFO smmi; char szComment[RAS_MaxComment+1]; BOOL AdminAccess; RNASECURITY security; union { struct tagPassthru { DWORD cUsers; DWORD dwOffsetUsers; } Passthru; struct tagPassword { USERACCESS shareaccess; char szPassword[PWLEN+1]; } Password; }; } RNAPORTSTATS, *PRNAPORTSTATS, FAR *LPRNAPORTSTATS; DWORD WINAPI SuprvEnumAccessInfo (LPBYTE, LPINT, LPINT); DWORD WINAPI SuprvGetAccessInfo (LPSTR, LPRNAPORTSTATS, LPDWORD); DWORD WINAPI SuprvSetAccessInfo (LPRNAPORTSTATS); DWORD WINAPI SuprvInitialize (LPDWORD); DWORD WINAPI SuprvDeInitialize(); DWORD WINAPI SuprvGetAdminConfig(); DWORD WINAPI RnaSetCallbackList (DWORD, LPSTR, LPSTR, int); DWORD WINAPI RnaAllocateLana(HANDLE hConn, LPDWORD lpLana); DWORD WINAPI RnaDeallocateLana(HANDLE hConn); DWORD WINAPI RnaRunScript(HANDLE hConn, PSESS_CONFIGURATION_INFO lpSCI, BOOL fForce); typedef DWORD (WINAPI * LPFNCREATE)(HWND); typedef DWORD (WINAPI * LPFNEDIT)(HWND, LPSTR); typedef void (WINAPI * LPFNUINOTIFY)(LPSTR); DWORD WINAPI Remote_CreateEntry (HWND); DWORD WINAPI Remote_EditEntry (HWND, LPSTR); void WINAPI Remote_Notify (LPSTR); //*************************************************************************** // Dial global setting for redial and implicit connection //*************************************************************************** #define MAX_REDIAL_COUNT 100 #define MIN_REDIAL_COUNT 1 #define MAX_REDIAL_MINUTE 119 #define MIN_REDIAL_MINUTE 0 #define MAX_REDIAL_SECOND 59 #define MIN_REDIAL_SECOND 0 typedef struct tagRnaSetting { BOOL fRedial; DWORD cRetry; DWORD dwMin; DWORD dwSec; BOOL fImplicit; DWORD dwDialUI; } RNASETTING, *PRNASETTING, FAR *LPRNASETTING; #define DIALUI_NO_PROMPT 0x00000001 // Do not display connect prompt #define DIALUI_NO_CONFIRM 0x00000002 // Do not display connect confirm #define DIALUI_NO_TRAY 0x00000004 // No tray icon DWORD WINAPI RnaGetDialSettings(LPRNASETTING); DWORD WINAPI RnaSetDialSettings(LPRNASETTING); //*************************************************************************** // The following are SMM Interface we cut from version 1.0 //*************************************************************************** #ifndef WINNT_RAS // // CALLBACKINFO conflicts with a structure defined in "pbuser.h", // and RAS_STATISTICS conflicts with a structure in "rasman.h". // The Win9x scripting code uses neither, so they have been commented out. // // Callback request information // typedef struct tagCALLBACKINFO { DWORD dwSize; BOOL fUseCallbackDelay; DWORD dwCallbackDelay; char szPhoneNumber[RAS_MaxPhoneNumber+1]; } CALLBACKINFO, *PCALLBACKINFO, FAR* LPCALLBACKINFO; DWORD WINAPI RnaSetCallbackInfo( HANDLE hConn, LPCALLBACKINFO lpcbinfo ); DWORD WINAPI RnaReportLinkSpeed( HANDLE hConn, DWORD dwLinkSpeed ); DWORD WINAPI RnaUIStatus( HANDLE hConn, LPSTR lpszStatusMsg ); DWORD WINAPI RnaLog( HANDLE hConn, LPSTR lpszLogMsg ); //*************************************************************************** // The following are connection statistics //*************************************************************************** #define NUM_RAS_SERIAL_STATS 14 #define BYTES_XMITED 0 //Generic Stats #define BYTES_RCVED 1 #define FRAMES_XMITED 2 #define FRAMES_RCVED 3 #define CRC_ERR 4 //Serial Stats #define TIMEOUT_ERR 5 #define ALIGNMENT_ERR 6 #define SERIAL_OVERRUN_ERR 7 #define FRAMING_ERR 8 #define BUFFER_OVERRUN_ERR 9 #define BYTES_XMITED_UNCOMP 10 //Compression Stats #define BYTES_RCVED_UNCOMP 11 #define BYTES_XMITED_COMP 12 #define BYTES_RCVED_COMP 13 typedef struct tagRAS_STATISTICS { DWORD S_NumOfStatistics ; DWORD S_Statistics[NUM_RAS_SERIAL_STATS] ; } RAS_STATISTICS, FAR* LPRAS_STATISTICS; #endif // WINNT_RAS //************************************************************************** // Script support //************************************************************************** // Script processing mode // #define NORMAL_MODE 0 #define TEST_MODE 1 typedef DWORD (WINAPI * PFN_RUN_SCRIPT)(HANDLE, LPSESS_CONFIGURATION_INFO); #endif // _RNAP_H_