summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/rassapi.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/rassapi.h385
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_
+
+