diff options
Diffstat (limited to 'public/sdk/inc/rassapi.h')
-rw-r--r-- | public/sdk/inc/rassapi.h | 385 |
1 files changed, 385 insertions, 0 deletions
diff --git a/public/sdk/inc/rassapi.h b/public/sdk/inc/rassapi.h new file mode 100644 index 000000000..0728bad53 --- /dev/null +++ b/public/sdk/inc/rassapi.h @@ -0,0 +1,385 @@ +/******************************************************************\ +* Microsoft Windows NT * +* Copyright(c) Microsoft Corp., 1992-1996 * +\******************************************************************/ + +/*++ + +Module Name: + + RASSAPI.H + +Description: + + This file contains the RASADMIN structures, defines and + function prototypes for the following APIs and they can + be imported from RASSAPI.DLL: + + RasAdminServerGetInfo + RasAdminGetUserAccountServer + RasAdminUserSetInfo + RasAdminUserGetInfo + RasAdminPortEnum + RasAdminPortGetInfo + RasAdminPortClearStatistics + RasAdminPortDisconnect + RasAdminFreeBuffer + +Note: + + This header file and the sources containing the APIs will work + only with UNICODE strings. + +--*/ + + +#ifndef _RASSAPI_H_ +#define _RASSAPI_H_ + +#ifndef UNLEN +#include <lmcons.h> +#endif + +#define RASSAPI_MAX_PHONENUMBER_SIZE 128 +#define RASSAPI_MAX_MEDIA_NAME 16 +#define RASSAPI_MAX_PORT_NAME 16 +#define RASSAPI_MAX_DEVICE_NAME 128 +#define RASSAPI_MAX_DEVICETYPE_NAME 16 +#define RASSAPI_MAX_PARAM_KEY_SIZE 32 + +// Bits indicating user's Remote Access privileges and mask to isolate +// call back privilege. +// +// Note: Bit 0 MUST represent NoCallback due to a quirk of the "userparms" +// storage method. When a new LAN Manager user is created, bit 0 of the +// userparms field is set to 1 and all other bits are 0. These bits are +// arranged so this "no Dial-In info" state maps to the "default Dial-In +// privilege" state. + +#define RASPRIV_NoCallback 0x01 +#define RASPRIV_AdminSetCallback 0x02 +#define RASPRIV_CallerSetCallback 0x04 +#define RASPRIV_DialinPrivilege 0x08 + +#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \ + | RASPRIV_CallerSetCallback \ + | RASPRIV_NoCallback) + +// +// Modem condition codes +// +#define RAS_MODEM_OPERATIONAL 1 // No modem errors. +#define RAS_MODEM_NOT_RESPONDING 2 +#define RAS_MODEM_HARDWARE_FAILURE 3 +#define RAS_MODEM_INCORRECT_RESPONSE 4 +#define RAS_MODEM_UNKNOWN 5 +// +// Line condition codes +// +#define RAS_PORT_NON_OPERATIONAL 1 +#define RAS_PORT_DISCONNECTED 2 +#define RAS_PORT_CALLING_BACK 3 +#define RAS_PORT_LISTENING 4 +#define RAS_PORT_AUTHENTICATING 5 +#define RAS_PORT_AUTHENTICATED 6 +#define RAS_PORT_INITIALIZING 7 + +// The following three structures are same as the ones +// defined in rasman.h and have been renamed to prevent +// redefinitions when both header files are included. + +enum RAS_PARAMS_FORMAT { + + ParamNumber = 0, + + ParamString = 1 + +} ; +typedef enum RAS_PARAMS_FORMAT RAS_PARAMS_FORMAT ; + +union RAS_PARAMS_VALUE { + + DWORD Number ; + + struct { + DWORD Length ; + PCHAR Data ; + } String ; +} ; +typedef union RAS_PARAMS_VALUE RAS_PARAMS_VALUE ; + +struct RAS_PARAMETERS { + + CHAR P_Key [RASSAPI_MAX_PARAM_KEY_SIZE] ; + + RAS_PARAMS_FORMAT P_Type ; + + BYTE P_Attributes ; + + RAS_PARAMS_VALUE P_Value ; + +} ; +typedef struct RAS_PARAMETERS RAS_PARAMETERS ; + +// structures used by the RASADMIN APIs + +typedef struct _RAS_USER_0 +{ + BYTE bfPrivilege; + WCHAR szPhoneNumber[ RASSAPI_MAX_PHONENUMBER_SIZE + 1]; +} RAS_USER_0, *PRAS_USER_0; + +typedef struct _RAS_PORT_0 +{ + WCHAR wszPortName[RASSAPI_MAX_PORT_NAME]; + WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME]; + WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME]; + WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME]; + DWORD reserved; + DWORD Flags; + WCHAR wszUserName[UNLEN + 1]; + WCHAR wszComputer[NETBIOS_NAME_LEN]; + DWORD dwStartSessionTime; // seconds from 1/1/1970 + WCHAR wszLogonDomain[DNLEN + 1]; + BOOL fAdvancedServer; +} RAS_PORT_0, *PRAS_PORT_0; + + +// Possible values for MediaId + +#define MEDIA_UNKNOWN 0 +#define MEDIA_SERIAL 1 +#define MEDIA_RAS10_SERIAL 2 +#define MEDIA_X25 3 +#define MEDIA_ISDN 4 + + +// Possible bits set in Flags field + +#define USER_AUTHENTICATED 0x0001 +#define MESSENGER_PRESENT 0x0002 +#define PPP_CLIENT 0x0004 +#define GATEWAY_ACTIVE 0x0008 +#define REMOTE_LISTEN 0x0010 +#define PORT_MULTILINKED 0x0020 + + +typedef ULONG IPADDR; + +// The following PPP structures are same as the ones +// defined in rasppp.h and have been renamed to prevent +// redefinitions when both header files are included +// in a module. + +/* Maximum length of address string, e.g. "255.255.255.255" for IP. +*/ +#define RAS_IPADDRESSLEN 15 +#define RAS_IPXADDRESSLEN 22 +#define RAS_ATADDRESSLEN 32 + +typedef struct _RAS_PPP_NBFCP_RESULT +{ + DWORD dwError; + DWORD dwNetBiosError; + CHAR szName[ NETBIOS_NAME_LEN + 1 ]; + WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ]; +} RAS_PPP_NBFCP_RESULT; + +typedef struct _RAS_PPP_IPCP_RESULT +{ + DWORD dwError; + WCHAR wszAddress[ RAS_IPADDRESSLEN + 1 ]; +} RAS_PPP_IPCP_RESULT; + +typedef struct _RAS_PPP_IPXCP_RESULT +{ + DWORD dwError; + WCHAR wszAddress[ RAS_IPXADDRESSLEN + 1 ]; +} RAS_PPP_IPXCP_RESULT; + +typedef struct _RAS_PPP_ATCP_RESULT +{ + DWORD dwError; + WCHAR wszAddress[ RAS_ATADDRESSLEN + 1 ]; +} RAS_PPP_ATCP_RESULT; + +typedef struct _RAS_PPP_PROJECTION_RESULT +{ + RAS_PPP_NBFCP_RESULT nbf; + RAS_PPP_IPCP_RESULT ip; + RAS_PPP_IPXCP_RESULT ipx; + RAS_PPP_ATCP_RESULT at; +} RAS_PPP_PROJECTION_RESULT; + +typedef struct _RAS_PORT_1 +{ + RAS_PORT_0 rasport0; + DWORD LineCondition; + DWORD HardwareCondition; + DWORD LineSpeed; // in bits/second + WORD NumStatistics; + WORD NumMediaParms; + DWORD SizeMediaParms; + RAS_PPP_PROJECTION_RESULT ProjResult; +} RAS_PORT_1, *PRAS_PORT_1; + +typedef struct _RAS_PORT_STATISTICS +{ + // The connection statistics are followed by port statistics + // A connection is across multiple ports. + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwBytesXmitedUncompressed; + DWORD dwBytesRcvedUncompressed; + DWORD dwBytesXmitedCompressed; + DWORD dwBytesRcvedCompressed; + + // the following are the port statistics + DWORD dwPortBytesXmited; + DWORD dwPortBytesRcved; + DWORD dwPortFramesXmited; + DWORD dwPortFramesRcved; + DWORD dwPortCrcErr; + DWORD dwPortTimeoutErr; + DWORD dwPortAlignmentErr; + DWORD dwPortHardwareOverrunErr; + DWORD dwPortFramingErr; + DWORD dwPortBufferOverrunErr; + DWORD dwPortBytesXmitedUncompressed; + DWORD dwPortBytesRcvedUncompressed; + DWORD dwPortBytesXmitedCompressed; + DWORD dwPortBytesRcvedCompressed; + +} RAS_PORT_STATISTICS, *PRAS_PORT_STATISTICS; + +// +// Server version numbers +// +#define RASDOWNLEVEL 10 // identifies a LM RAS 1.0 server +#define RASADMIN_35 35 // Identifies a NT RAS 3.5 server or client +#define RASADMIN_CURRENT 40 // Identifies a NT RAS 4.0 server or client + + +typedef struct _RAS_SERVER_0 +{ + WORD TotalPorts; // Total ports configured on the server + WORD PortsInUse; // Ports currently in use by remote clients + DWORD RasVersion; // version of RAS server +} RAS_SERVER_0, *PRAS_SERVER_0; + + +// +// function prototypes +// + +DWORD APIENTRY RasAdminServerGetInfo( + IN const WCHAR * lpszServer, + OUT PRAS_SERVER_0 pRasServer0 + ); + +DWORD APIENTRY RasAdminGetUserAccountServer( + IN const WCHAR * lpszDomain, + IN const WCHAR * lpszServer, + OUT LPWSTR lpszUserAccountServer + ); + +DWORD APIENTRY RasAdminUserGetInfo( + IN const WCHAR * lpszUserAccountServer, + IN const WCHAR * lpszUser, + OUT PRAS_USER_0 pRasUser0 + ); + +DWORD APIENTRY RasAdminUserSetInfo( + IN const WCHAR * lpszUserAccountServer, + IN const WCHAR * lpszUser, + IN const PRAS_USER_0 pRasUser0 + ); + +DWORD APIENTRY RasAdminPortEnum( + IN const WCHAR * lpszServer, + OUT PRAS_PORT_0 * ppRasPort0, + OUT WORD * pcEntriesRead + ); + +DWORD APIENTRY RasAdminPortGetInfo( + IN const WCHAR * lpszServer, + IN const WCHAR * lpszPort, + OUT RAS_PORT_1 * pRasPort1, + OUT RAS_PORT_STATISTICS * pRasStats, + OUT RAS_PARAMETERS ** ppRasParams + ); + +DWORD APIENTRY RasAdminPortClearStatistics( + IN const WCHAR * lpszServer, + IN const WCHAR * lpszPort + ); + +DWORD APIENTRY RasAdminPortDisconnect( + IN const WCHAR * lpszServer, + IN const WCHAR * lpszPort + ); + +DWORD APIENTRY RasAdminFreeBuffer( + PVOID Pointer + ); + +DWORD APIENTRY RasAdminGetErrorString( + IN UINT ResourceId, + OUT WCHAR * lpszString, + IN DWORD InBufSize ); + +BOOL APIENTRY RasAdminAcceptNewConnection ( + IN RAS_PORT_1 * pRasPort1, + IN RAS_PORT_STATISTICS * pRasStats, + IN RAS_PARAMETERS * pRasParams + ); + +VOID APIENTRY RasAdminConnectionHangupNotification ( + IN RAS_PORT_1 * pRasPort1, + IN RAS_PORT_STATISTICS * pRasStats, + IN RAS_PARAMETERS * pRasParams + ); + +DWORD APIENTRY RasAdminGetIpAddressForUser ( + IN WCHAR * lpszUserName, + IN WCHAR * lpszPortName, + IN OUT IPADDR * pipAddress, + OUT BOOL * bNotifyRelease + ); + +VOID APIENTRY RasAdminReleaseIpAddress ( + IN WCHAR * lpszUserName, + IN WCHAR * lpszPortName, + IN IPADDR * pipAddress + ); + +// The following two APIs are used to get/set +// RAS user permissions in to a UsrParms buffer +// obtained by a call to NetUserGetInfo. +// +// Note that RasAdminUserGetInfo and RasAdminUserSetInfo +// are the APIs you should be using for getting and +// setting RAS permissions. + +DWORD APIENTRY RasAdminGetUserParms( + IN WCHAR * lpszParms, + OUT PRAS_USER_0 pRasUser0 + ); + +DWORD APIENTRY RasAdminSetUserParms( + IN OUT WCHAR * lpszParms, + IN DWORD cchNewParms, + IN PRAS_USER_0 pRasUser0 + ); + +#endif // _RASSAPI_H_ + + |