324 lines
7.8 KiB
C
324 lines
7.8 KiB
C
|
/*****************************************************************************/
|
||
|
/** Microsoft LAN Manager **/
|
||
|
/** Copyright (C) Microsoft Corp., 1992-1993 **/
|
||
|
/*****************************************************************************/
|
||
|
|
||
|
//***
|
||
|
// File Name:
|
||
|
// SRVAUTH.H
|
||
|
//
|
||
|
// Function:
|
||
|
// Contains header information for Supervisor and Server
|
||
|
// Authentication Transport module
|
||
|
//
|
||
|
// History:
|
||
|
// 05/18/92 - Michael Salamone (MikeSa) - Original Version 1.0
|
||
|
//***
|
||
|
|
||
|
#ifndef _SRVAUTH_
|
||
|
#define _SRVAUTH_
|
||
|
|
||
|
|
||
|
/* This flag enables the NT31/WFW311 RAS compression support re-added for the
|
||
|
** NT-PPC release.
|
||
|
*/
|
||
|
#define RASCOMPRESSION 1
|
||
|
|
||
|
|
||
|
#include <lmcons.h>
|
||
|
#include <rasman.h>
|
||
|
|
||
|
#ifndef MAX_PHONE_NUMBER_LEN
|
||
|
#define MAX_PHONE_NUMBER_LEN 48
|
||
|
#endif
|
||
|
|
||
|
#ifndef MAX_INIT_NAMES
|
||
|
#define MAX_INIT_NAMES 16
|
||
|
#endif
|
||
|
|
||
|
|
||
|
//
|
||
|
// Used for establishing session with remote netbios clients
|
||
|
//
|
||
|
#define AUTH_NETBIOS_NAME "DIALIN_GATEWAY "
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Used for passing NetBIOS projection info to Supervisor
|
||
|
//
|
||
|
typedef struct _NAME_STRUCT
|
||
|
{
|
||
|
BYTE NBName[NETBIOS_NAME_LEN]; // NetBIOS name
|
||
|
WORD wType; // GROUP, UNIQUE, COMPUTER
|
||
|
} NAME_STRUCT, *PNAME_STRUCT;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Manifests used to find location and type of name in the buffer returned
|
||
|
// by the NCB.STATUS call
|
||
|
//
|
||
|
#define NCB_GROUP_NAME 0x0080
|
||
|
#define UNIQUE_INAME 0x0001
|
||
|
#define GROUP_INAME 0x0002
|
||
|
#define COMPUTER_INAME 0x0004 // A computer name is also unique
|
||
|
|
||
|
|
||
|
//
|
||
|
// Projection result codes. If not success, then the reason code
|
||
|
// (below) should be examined. These values are used in wResult
|
||
|
// field in structs define below.
|
||
|
//
|
||
|
#define AUTH_PROJECTION_SUCCESS 0
|
||
|
#define AUTH_PROJECTION_FAILURE 1
|
||
|
|
||
|
|
||
|
//
|
||
|
// Projection reason codes.
|
||
|
//
|
||
|
#define FATAL_ERROR 0x80000000
|
||
|
#define AUTH_DUPLICATE_NAME (FATAL_ERROR | 0x00000001)
|
||
|
#define AUTH_OUT_OF_RESOURCES (FATAL_ERROR | 0x00000002)
|
||
|
#define AUTH_STACK_NAME_TABLE_FULL (FATAL_ERROR | 0x00000003)
|
||
|
#define AUTH_MESSENGER_NAME_NOT_ADDED 0x00000004
|
||
|
#define AUTH_CANT_ALLOC_ROUTE (FATAL_ERROR | 0x00000005)
|
||
|
#define AUTH_LAN_ADAPTER_FAILURE (FATAL_ERROR | 0x00000006)
|
||
|
|
||
|
//
|
||
|
// Projection result info must be copied into this structure.
|
||
|
//
|
||
|
|
||
|
typedef struct _IP_PROJECTION_RESULT
|
||
|
{
|
||
|
DWORD Result;
|
||
|
DWORD Reason;
|
||
|
} IP_PROJECTION_RESULT, *PIP_PROJECTION_RESULT;
|
||
|
|
||
|
typedef struct _IPX_PROJECTION_RESULT
|
||
|
{
|
||
|
DWORD Result;
|
||
|
DWORD Reason;
|
||
|
} IPX_PROJECTION_RESULT, *PIPX_PROJECTION_RESULT;
|
||
|
|
||
|
|
||
|
typedef struct _NETBIOS_PROJECTION_RESULT
|
||
|
{
|
||
|
DWORD Result;
|
||
|
DWORD Reason;
|
||
|
char achName[NETBIOS_NAME_LEN];
|
||
|
} NETBIOS_PROJECTION_RESULT, *PNETBIOS_PROJECTION_RESULT;
|
||
|
|
||
|
|
||
|
typedef struct _AUTH_PROJECTION_RESULT
|
||
|
{
|
||
|
IP_PROJECTION_RESULT IpResult;
|
||
|
IPX_PROJECTION_RESULT IpxResult;
|
||
|
NETBIOS_PROJECTION_RESULT NetbiosResult;
|
||
|
} AUTH_PROJECTION_RESULT, *PAUTH_PROJECTION_RESULT;
|
||
|
|
||
|
|
||
|
//
|
||
|
// The Supervisor will supply this structure to the Auth Xport (in
|
||
|
// the AuthStart API) so it knows what transport, as well as any
|
||
|
// necessary info for that transport, to use for authenticating on
|
||
|
// the given port.
|
||
|
//
|
||
|
typedef struct _AUTH_XPORT_INFO
|
||
|
{
|
||
|
RAS_PROTOCOLTYPE Protocol;
|
||
|
BYTE bLana; // Only valid if Protocol == ASYBEUI
|
||
|
} AUTH_XPORT_INFO, *PAUTH_XPORT_INFO;
|
||
|
|
||
|
|
||
|
#ifndef _CLAUTH_
|
||
|
|
||
|
|
||
|
typedef WORD (*MSG_ROUTINE)(WORD, PVOID);
|
||
|
|
||
|
//
|
||
|
// Used to initialize the Auth Xport module
|
||
|
//
|
||
|
DWORD
|
||
|
AuthInitialize(
|
||
|
IN HPORT *phPorts, // pointer to array of port handles
|
||
|
IN WORD cPorts, // number of port handles in array
|
||
|
IN WORD cRetries, // number of retries clients will get if initial
|
||
|
// authentication attemps fails
|
||
|
IN MSG_ROUTINE MsgSend,
|
||
|
IN DWORD dwLocalIpAddress,
|
||
|
IN LPVOID lpfnRasAuthProviderAuthenticateUser,
|
||
|
IN LPVOID lpfnRasAuthProviderFreeAttributes,
|
||
|
IN LPVOID lpfnRasAcctProviderStartAccounting,
|
||
|
IN LPVOID lpfnRasAcctProviderInterimAccounting,
|
||
|
IN LPVOID lpfnRasAcctProviderStopAccounting,
|
||
|
IN LPVOID lpfnRasAcctProviderFreeAttributes,
|
||
|
IN LPVOID GetNextAccountingSessionId
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Returned by AuthInitialize
|
||
|
//
|
||
|
#define AUTH_INIT_SUCCESS 0
|
||
|
#define AUTH_INIT_FAILURE 1
|
||
|
|
||
|
|
||
|
//
|
||
|
// Used by Supervisor to tell Auth Xport module that it has completed its
|
||
|
// callback request.
|
||
|
//
|
||
|
VOID AuthCallbackDone(
|
||
|
IN HPORT hPort
|
||
|
);
|
||
|
|
||
|
|
||
|
//
|
||
|
// Used by Supervisor to tell Auth Xport module that it has completed its
|
||
|
// projection request.
|
||
|
//
|
||
|
VOID AuthProjectionDone(
|
||
|
IN HPORT hPort,
|
||
|
IN PAUTH_PROJECTION_RESULT
|
||
|
);
|
||
|
|
||
|
|
||
|
//
|
||
|
// Returned by AuthRecognizeFrame
|
||
|
//
|
||
|
#define AUTH_FRAME_RECOGNIZED 0
|
||
|
#define AUTH_FRAME_NOT_RECOGNIZED 1
|
||
|
|
||
|
|
||
|
//
|
||
|
// To kick off an Authentication thread for the given port.
|
||
|
//
|
||
|
WORD AuthStart(
|
||
|
IN HPORT,
|
||
|
IN PAUTH_XPORT_INFO
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Returned by AuthStart:
|
||
|
//
|
||
|
#define AUTH_START_SUCCESS 0
|
||
|
#define AUTH_START_FAILURE 1
|
||
|
|
||
|
|
||
|
//
|
||
|
// Used by Supervisor to tell Auth Xport module to halt authentication
|
||
|
// processing on the given port.
|
||
|
//
|
||
|
WORD AuthStop(
|
||
|
IN HPORT hPort
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Returned by AuthStop
|
||
|
//
|
||
|
#define AUTH_STOP_SUCCESS 0
|
||
|
#define AUTH_STOP_PENDING 1
|
||
|
#define AUTH_STOP_FAILURE 2
|
||
|
|
||
|
|
||
|
//
|
||
|
// The following messages are sent from Authentication to Supervisor via
|
||
|
// MESSAGE.DLL and are to be used in wMsgId in message struct below:
|
||
|
//
|
||
|
#define AUTH_DONE 100
|
||
|
#define AUTH_FAILURE 101
|
||
|
#define AUTH_STOP_COMPLETED 102
|
||
|
#define AUTH_PROJECTION_REQUEST 103
|
||
|
#define AUTH_CALLBACK_REQUEST 104
|
||
|
#define AUTH_ACCT_OK 105
|
||
|
|
||
|
|
||
|
//
|
||
|
// These are the structures that accompany each message defined above:
|
||
|
//
|
||
|
|
||
|
// No structure for AUTH_DONE
|
||
|
|
||
|
// Structure for AUTH_FAILURE
|
||
|
typedef struct _AUTH_FAILURE_INFO
|
||
|
{
|
||
|
WORD wReason;
|
||
|
BYTE szLogonDomain[DNLEN + 1];
|
||
|
BYTE szUserName[UNLEN + 1];
|
||
|
} AUTH_FAILURE_INFO, *PAUTH_FAILURE_INFO;
|
||
|
|
||
|
//
|
||
|
// These are the reasons that Authentication might fail:
|
||
|
//
|
||
|
#define AUTH_XPORT_ERROR 200
|
||
|
#define AUTH_NOT_AUTHENTICATED 201
|
||
|
#define AUTH_ALL_PROJECTIONS_FAILED 202
|
||
|
#define AUTH_INTERNAL_ERROR 203
|
||
|
#define AUTH_ACCT_EXPIRED 204
|
||
|
#define AUTH_NO_DIALIN_PRIVILEGE 205
|
||
|
#define AUTH_UNSUPPORTED_VERSION 206
|
||
|
#define AUTH_ENCRYPTION_REQUIRED 207
|
||
|
#define AUTH_PASSWORD_EXPIRED 208
|
||
|
#define AUTH_LICENSE_LIMIT_EXCEEDED 209
|
||
|
|
||
|
|
||
|
// No structure for AUTH_STOP_COMPLETED
|
||
|
|
||
|
|
||
|
typedef BOOL IP_PROJECTION_INFO, *PIP_PROJECTION_INFO;
|
||
|
|
||
|
typedef BOOL IPX_PROJECTION_INFO, *PIPX_PROJECTION_INFO;
|
||
|
|
||
|
typedef struct _NETBIOS_PROJECTION_INFO
|
||
|
{
|
||
|
BOOL fProject;
|
||
|
WORD cNames;
|
||
|
NAME_STRUCT Names[MAX_INIT_NAMES];
|
||
|
} NETBIOS_PROJECTION_INFO, *PNETBIOS_PROJECTION_INFO;
|
||
|
|
||
|
|
||
|
typedef struct _AUTH_PROJECTION_REQUEST_INFO
|
||
|
{
|
||
|
IP_PROJECTION_INFO IpInfo;
|
||
|
IPX_PROJECTION_INFO IpxInfo;
|
||
|
NETBIOS_PROJECTION_INFO NetbiosInfo;
|
||
|
} AUTH_PROJECTION_REQUEST_INFO, *PAUTH_PROJECTION_REQUEST_INFO;
|
||
|
|
||
|
|
||
|
typedef struct _AUTH_CALLBACK_REQUEST_INFO
|
||
|
{
|
||
|
BOOL fUseCallbackDelay;
|
||
|
WORD CallbackDelay; // Valid only if fUseCallbackDelay == TRUE
|
||
|
CHAR szCallbackNumber[MAX_PHONE_NUMBER_LEN + 1];
|
||
|
} AUTH_CALLBACK_REQUEST_INFO, *PAUTH_CALLBACK_REQUEST_INFO;
|
||
|
|
||
|
|
||
|
typedef struct _AUTH_ACCT_OK_INFO
|
||
|
{
|
||
|
BYTE szUserName[UNLEN + 1];
|
||
|
BYTE szLogonDomain[DNLEN + 1];
|
||
|
BOOL fAdvancedServer;
|
||
|
HANDLE hLicense;
|
||
|
} AUTH_ACCT_OK_INFO, *PAUTH_ACCT_OK_INFO;
|
||
|
|
||
|
|
||
|
//
|
||
|
// This is the structure used in sending messages to the Supervisor
|
||
|
//
|
||
|
typedef struct _AUTH_MESSAGE
|
||
|
{
|
||
|
WORD wMsgId;
|
||
|
HPORT hPort;
|
||
|
union
|
||
|
{
|
||
|
AUTH_FAILURE_INFO FailureInfo;
|
||
|
AUTH_PROJECTION_REQUEST_INFO ProjectionRequest;
|
||
|
AUTH_CALLBACK_REQUEST_INFO CallbackRequest;
|
||
|
AUTH_ACCT_OK_INFO AcctOkInfo;
|
||
|
};
|
||
|
} AUTH_MESSAGE, *PAUTH_MESSAGE;
|
||
|
|
||
|
|
||
|
#endif // _CLAUTH_
|
||
|
|
||
|
|
||
|
#endif // _SRVAUTH_
|