Windows-Server-2003/net/mmc/mprsnap/radbal.h

105 lines
3.3 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: radbal.h
//
//--------------------------------------------------------------------------
#ifndef _RADBAL_H_
#define _RADBAL_H_
#include <winsock.h>
// 5 seconds for default timeout to server requests
#define DEFTIMEOUT 5
// Windows NT Bug : 186647 - use new defaults
#define DEFAUTHPORT 1812
#define DEFACCTPORT 1813
#define MAXSCORE 30
#define INCSCORE 3
#define DECSCORE 2
#define MINSCORE 0
typedef struct RadiusServer
{
TCHAR szName[MAX_PATH+1]; // Name of radius server
TCHAR wszSecret[MAX_PATH+1]; // secret password use to encrypt packets
ULONG cchSecret; // # of characters in secret
SOCKADDR_IN IPAddress; // IP Address of radius server
struct timeval Timeout; // recv timeout in seconds
DWORD cRetries; // number of times to retry sending packets to server
INT cScore; // Score indicating functioning power of server.
DWORD AuthPort; // Authentication port number
DWORD AcctPort; // Accounting port number
// BOOL fAuthentication; // Enable authentication
// BOOL fAccounting; // Enable accounting
BOOL fAccountingOnOff; // Enable accounting On/Off messages
BYTE bIdentifier; // Unique ID for packet
LONG lPacketID; // Global Packet ID across all servers
BOOL fUseDigitalSignatures; // Enable Digital Signatures
struct RadiusServer *pNext; // Pointer to next radius server in linked list
DWORD dwUnique; // unique id (used by the UI)
// this is not persistent!
UCHAR ucSeed; // seed value for RtlEncode
// This should be kept in sync with what is in radcfg.cpp
void UseDefaults();
BOOL fPersisted; // was entry persisted?
} RADIUSSERVER, *PRADIUSSERVER;
class CRadiusServers
{
public:
CRadiusServers();
~CRadiusServers();
// dwUnique specifies the server to insert before
// dwUnique == 0, is add it to the head of the list
// dwUnique == -1, means add it to the tail
DWORD AddServer(RADIUSSERVER *pRadiusServer,
LONG_PTR dwUnique);
VOID ValidateServer(RADIUSSERVER *pServer,
BOOL fResponding);
DWORD DeleteServer(LONG_PTR dwUnique, BOOL fRemoveLSAEntry);
RADIUSSERVER * GetNextServer(BOOL fFirst);
VOID MoveServer(LONG_PTR dwUnique, BOOL fUp);
BOOL FindServer(LPCTSTR pszServerName, RADIUSSERVER **ppServer);
BOOL FindServer(DWORD dwUnique, RADIUSSERVER **ppServer);
// Operations for deleted servers
RADIUSSERVER * GetFirstDeletedServer()
{
return m_pDeletedServers;
}
void AddToDeletedServerList(RADIUSSERVER *pServer);
void ClearDeletedServerList(LPCTSTR pszServerName);
void FreeAllServers();
private:
RADIUSSERVER * m_pServerList; // Linked list of valid radius servers
RADIUSSERVER * m_pCurrentServer; // Last server request was sent to
CRITICAL_SECTION m_cs; // used to prevent multiple access to variables of this class
DWORD m_dwUnique; // incremented each time AddServer
// is called
RADIUSSERVER * m_pDeletedServers; // Linked list of deleted servers
};
#endif // _RADBAL_H_