windows-nt/Source/XPSP1/NT/net/mmc/dhcp/nodes.h
2020-09-26 16:20:57 +08:00

341 lines
10 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corporation, 1997 - 1999 **/
/**********************************************************************/
/*
nodes.h
This file contains all of the prototypes for the DHCP
objects that appear in the result pane of the MMC framework.
The objects are:
CDhcpActiveLease
CDhcpConflicAddress
CDhcpAllocationRange
CDhcpExclusionRange
CDhcpBootpTableEntry
CDhcpOption
FILE HISTORY:
*/
#ifndef _DHCPNODE_H
#define _DHCPNODE_H
#ifndef _DHCPHAND_H
#include "dhcphand.h"
#endif
extern const TCHAR g_szClientTypeDhcp[];
extern const TCHAR g_szClientTypeBootp[];
extern const TCHAR g_szClientTypeBoth[];
#define TYPE_FLAG_RESERVATION 0x00000001
#define TYPE_FLAG_ACTIVE 0x00000002
#define TYPE_FLAG_BAD_ADDRESS 0x00000004
#define TYPE_FLAG_RAS 0x00000008
#define TYPE_FLAG_GHOST 0x00000010
// NT5 lease types
#define TYPE_FLAG_DNS_REG 0x00000020
#define TYPE_FLAG_DNS_UNREG 0x00000040
#define TYPE_FLAG_DOOMED 0x00000080
#define RAS_UID _T("RAS")
/*---------------------------------------------------------------------------
Class: CDhcpActiveLease
---------------------------------------------------------------------------*/
class CDhcpActiveLease : public CDhcpHandler
{
// Constructor/destructor
public:
CDhcpActiveLease(ITFSComponentData * pTFSCompData, LPDHCP_CLIENT_INFO_V5 pDhcpClientInfo);
CDhcpActiveLease(ITFSComponentData * pTFSCompData, LPDHCP_CLIENT_INFO_V4 pDhcpClientInfo);
CDhcpActiveLease(ITFSComponentData * pTFSCompData, LPDHCP_CLIENT_INFO pDhcpClientInfo);
CDhcpActiveLease(ITFSComponentData * pTFSCompData, CDhcpClient & pClient);
~CDhcpActiveLease();
// Interface
public:
// Result handler functionality
OVERRIDE_ResultHandler_HasPropertyPages() { return hrFalse; }
OVERRIDE_ResultHandler_CreatePropertyPages();
OVERRIDE_ResultHandler_AddMenuItems();
OVERRIDE_ResultHandler_Command();
OVERRIDE_ResultHandler_GetString();
// base result handler overridees
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
public:
DHCP_IP_ADDRESS GetIpAddress() { return m_dhcpClientIpAddress; };
void GetLeaseExpirationTime (CTime & time);
BOOL IsReservation(BOOL * pbIsActive, BOOL * pbIsBad);
BOOL IsBadAddress() { return m_dwTypeFlags & TYPE_FLAG_BAD_ADDRESS; }
BOOL IsGhost() { return m_dwTypeFlags & TYPE_FLAG_GHOST; }
BOOL IsUnreg() { return m_dwTypeFlags & TYPE_FLAG_DNS_UNREG; }
BOOL IsDoomed() { return m_dwTypeFlags & TYPE_FLAG_DOOMED; }
LPCTSTR GetClientLeaseExpires() { return m_strLeaseExpires; }
LPCTSTR GetClientType();
LPCTSTR GetUID() { return m_strUID; }
LPCTSTR GetComment() { return m_strComment; }
HRESULT DoPropSheet(ITFSNode * pNode,
LPPROPERTYSHEETCALLBACK lpProvider = NULL,
LONG_PTR handle = 0);
void SetReservation(BOOL fIsRes);
//
// All of these items are optional info
//
LPCTSTR GetClientName() { return m_strClientName; }
HRESULT SetClientName(LPCTSTR pName);
BYTE SetClientType(BYTE bClientType) { BYTE bTmp = m_bClientType; m_bClientType = bClientType; return bTmp; }
// Implementation
public:
// CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode);
private:
void InitInfo(LPDHCP_CLIENT_INFO pDhcpClientInfo);
// Attributes
private:
DHCP_IP_ADDRESS m_dhcpClientIpAddress;
CString m_strClientName;
CString m_strLeaseExpires;
CTime m_timeLeaseExpires;
DWORD m_dwTypeFlags; // Reservation, Active/Inactive, Bad Address
BYTE m_bClientType; // DHCP, BOOTP or both
CString m_strUID;
CString m_strComment;
FILETIME m_leaseExpires;
};
/*---------------------------------------------------------------------------
Class: CDhcpAllocationRange
---------------------------------------------------------------------------*/
class CDhcpAllocationRange : public CDhcpHandler, public CDhcpIpRange
{
// Constructor/destructor
public:
CDhcpAllocationRange(ITFSComponentData * pTFSCompData, DHCP_IP_RANGE * pdhcpIpRange);
CDhcpAllocationRange(ITFSComponentData * pTFSCompData, DHCP_BOOTP_IP_RANGE * pdhcpIpRange);
// Interface
public:
// Result handler functionality
OVERRIDE_ResultHandler_GetString();
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
// Implementation
public:
// CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode);
private:
// Attributes
private:
CString m_strEndIpAddress;
CString m_strDescription;
ULONG m_BootpAllocated;
ULONG m_MaxBootpAllowed;
};
/*---------------------------------------------------------------------------
Class: CDhcpExclusionRange
---------------------------------------------------------------------------*/
class CDhcpExclusionRange : public CDhcpHandler, public CDhcpIpRange
{
public:
CDhcpExclusionRange(ITFSComponentData * pTFSCompData, DHCP_IP_RANGE * pdhcpIpRange);
// Interface
public:
// Result handler functionality
OVERRIDE_ResultHandler_GetString();
// base result handler overrides
OVERRIDE_BaseResultHandlerNotify_OnResultSelect();
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
// Implementation
public:
// CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode);
private:
// Attributes
private:
CString m_strEndIpAddress;
CString m_strDescription;
};
/*---------------------------------------------------------------------------
Class: CDhcpBootpEntry
---------------------------------------------------------------------------*/
class CDhcpBootpEntry : public CDhcpHandler
{
public:
CDhcpBootpEntry(ITFSComponentData * pTFSCompData);
//Interface
public:
// Result handler functionality
OVERRIDE_ResultHandler_HasPropertyPages() { return hrOK; }
OVERRIDE_ResultHandler_CreatePropertyPages();
OVERRIDE_ResultHandler_GetString();
// base result handler overrides
OVERRIDE_BaseResultHandlerNotify_OnResultPropertyChange();
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
//Implementation
public:
WCHAR * InitData(CONST WCHAR grszwBootTable[], DWORD dwLength);
int CchGetDataLength();
WCHAR * PchStoreData(OUT WCHAR szwBuffer[]);
void SetBootImage(LPCTSTR szBootImage) { m_strBootImage = szBootImage; }
void SetFileServer(LPCTSTR szFileServer) { m_strFileServer = szFileServer; }
void SetFileName(LPCTSTR szFileName) { m_strFileName = szFileName; }
LPCTSTR QueryBootImage() { return m_strBootImage; }
LPCTSTR QueryFileServer() { return m_strFileServer; }
LPCTSTR QueryFileName() { return m_strFileName; }
BOOL operator == (CDhcpBootpEntry & bootpEntry);
public:
// CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode);
private:
//Attributes
private:
CString m_strBootImage;
CString m_strFileServer;
CString m_strFileName;
};
/*---------------------------------------------------------------------------
Class: CDhcpOptionItem
---------------------------------------------------------------------------*/
class CDhcpOptionItem : public CDhcpHandler, public CDhcpOptionValue
{
public:
CDhcpOptionItem(ITFSComponentData * pTFSCompData,
LPDHCP_OPTION_VALUE pOptionValue,
int nOptionImage);
CDhcpOptionItem(ITFSComponentData * pTFSCompData,
CDhcpOption * pOption,
int nOptionImage);
~CDhcpOptionItem();
// Interface
public:
// Result handler functionality
OVERRIDE_ResultHandler_GetString();
OVERRIDE_ResultHandler_HasPropertyPages() { return hrOK; }
OVERRIDE_ResultHandler_CreatePropertyPages();
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
// Implementation
public:
// CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode);
public:
// helpers
DHCP_OPTION_ID GetOptionId() { return m_dhcpOptionId; }
LPCTSTR GetVendor() { return m_strVendor.IsEmpty() ? NULL : (LPCTSTR) m_strVendor; }
LPCTSTR GetVendorDisplay() { return m_strVendorDisplay; }
LPCTSTR GetClassName() { return m_strClassName; }
BOOL IsVendorOption() { return m_strVendor.IsEmpty() ? FALSE : TRUE; }
BOOL IsClassOption() { return m_strClassName.IsEmpty() ? FALSE : TRUE; }
void SetClassName(LPCTSTR pClassName) { m_strClassName = pClassName; }
void SetVendor(LPCTSTR pszVendor);
private:
CDhcpOption * FindOptionDefinition(ITFSComponent * pComponent, ITFSNode * pNode);
// Attributes
private:
CString m_strName;
CString m_strValue;
CString m_strVendor;
CString m_strVendorDisplay;
CString m_strClassName;
DHCP_OPTION_ID m_dhcpOptionId;
int m_nOptionImage;
};
/*---------------------------------------------------------------------------
Class: CDhcpMCastLease
---------------------------------------------------------------------------*/
class CDhcpMCastLease : public CDhcpHandler
{
public:
CDhcpMCastLease(ITFSComponentData * pTFSCompData);
// Interface
public:
// Result handler functionality
OVERRIDE_ResultHandler_GetString();
OVERRIDE_ResultHandler_HasPropertyPages() { return hrFalse; }
OVERRIDE_BaseResultHandlerNotify_OnResultRefresh();
// Implementation
public:
// CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode);
public:
// helpers
HRESULT InitMCastInfo(LPDHCP_MCLIENT_INFO pMClientInfo);
DHCP_IP_ADDRESS GetIpAddress() { return m_dhcpClientIpAddress; };
LPCTSTR GetName() { return m_strName; }
void SetName(LPCTSTR pName) { m_strName = pName; }
LPCTSTR GetClientId() { return m_strUID; }
void GetLeaseStartTime (CTime & time) { time = m_timeStart; }
void GetLeaseExpirationTime (CTime & time) { time = m_timeStop; }
private:
// Attributes
private:
CString m_strIp;
CString m_strName;
CString m_strLeaseStart;
CString m_strLeaseStop;
CString m_strUID;
CTime m_timeStart;
CTime m_timeStop;
DHCP_IP_ADDRESS m_dhcpClientIpAddress;
DWORD m_dwTypeFlags;
};
#endif _DHCPNODE_H