|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 **/ /**********************************************************************/
/*
scope.cpp This file contains all of the prototypes for the DHCP scope object and all objects that it may contain. They include:
CDhcpScope CDhcpReservations CDhcpReservationClient CDhcpActiveLeases CDhcpAddressPool CDhcpScopeOptions
FILE HISTORY: */
#ifndef _SCOPE_H
#define _SCOPE_H
#ifndef _SCOPSTAT_H
#include "scopstat.h" // Scope statistics
#endif
#ifndef _DHCPHAND_H
#include "dhcphand.h"
#endif
#ifndef _SERVER_H
#include "server.h"
#endif
class CDhcpScope; class CDhcpAddressPool; class CDhcpReservations; class CDhcpActiveLeases; class CDhcpActiveLease; class CDhcpScopeOptions;
#define DHCP_QDATA_SUBNET_INFO 0x00000004
/*---------------------------------------------------------------------------
Class: QSort compare routine for sorting ip addresses in an array. ----------------------------------------------------------------------------*/
int __cdecl QCompare( const void *ip1, const void *ip2 );
/*---------------------------------------------------------------------------
Class: CDhcpScope ---------------------------------------------------------------------------*/ class CDhcpScope : public CMTDhcpHandler { public: CDhcpScope ( ITFSComponentData * pComponentData, DHCP_IP_ADDRESS dhcpScopeIp, DHCP_IP_MASK dhcpSubnetMask, LPCWSTR pName, LPCWSTR pComment, DHCP_SUBNET_STATE dhcpSubnetState = DhcpSubnetDisabled );
CDhcpScope(ITFSComponentData * pComponentData, LPDHCP_SUBNET_INFO pdhcpSubnetInfo); CDhcpScope(ITFSComponentData * pComponentData, CSubnetInfo & subnetInfo); ~CDhcpScope();
// Interface
public: // Node handler functionality we override
OVERRIDE_NodeHandler_HasPropertyPages(); OVERRIDE_NodeHandler_CreatePropertyPages(); OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand(); OVERRIDE_NodeHandler_GetString(); OVERRIDE_NodeHandler_DestroyHandler(); OVERRIDE_BaseHandlerNotify_OnCreateNodeId2();
// choose the notifications that we want to handle
OVERRIDE_BaseHandlerNotify_OnDelete(); OVERRIDE_BaseHandlerNotify_OnPropertyChange();
// Result handler functionality we override
public: // CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode); virtual DWORD UpdateStatistics(ITFSNode * pNode); HRESULT OnUpdateToolbarButtons(ITFSNode * pNode, LPDHCPTOOLBARNOTIFY pToolbarNotify); int GetImageIndex(BOOL bOpenImage);
// CMTDhcpHandler overrides
virtual void OnHaveData(ITFSNode * pParent, ITFSNode * pNew); virtual void OnHaveData(ITFSNode * pParentNode, LPARAM Data, LPARAM Type); ITFSQueryObject* OnCreateQuery(ITFSNode * pNode);
public: void SetServer(ITFSNode * pServerNode) { m_spServerNode.Set(pServerNode); }
// public functions for scope manipulation
LPCWSTR GetName() { return m_strName; }; HRESULT SetName(LPCWSTR pName); LPCWSTR GetComment() { return m_strComment; }; void SetComment(LPCWSTR pComment) { m_strComment = pComment; }; DWORD UpdateIpRange(DHCP_IP_RANGE * pdhipr); DWORD SetIpRange(DHCP_IP_RANGE *pdhcpIpRange, BOOL bSetOnServer); DWORD SetIpRange(CDhcpIpRange & dhcpIpRange, BOOL bSetOnServer); void QueryIpRange (DHCP_IP_RANGE * pdhipr); DWORD GetIpRange (CDhcpIpRange * pdhipr); DHCP_IP_MASK QuerySubnetMask() { return m_dhcpSubnetMask; }; DHCP_IP_ADDRESS GetAddress() { return m_dhcpIpAddress; }
DWORD AddElement(DHCP_SUBNET_ELEMENT_DATA * pdhcpSubnetElementData); DWORD RemoveElement(DHCP_SUBNET_ELEMENT_DATA * pdhcpSubnetElementData, BOOL bForce = FALSE); // NT4 SP2 added functionality
DWORD AddElementV4(DHCP_SUBNET_ELEMENT_DATA_V4 * pdhcpSubnetElementData); DWORD RemoveElementV4(DHCP_SUBNET_ELEMENT_DATA_V4 * pdhcpSubnetElementData, BOOL bForce = FALSE);
// NT5 functionality
DWORD AddElementV5(DHCP_SUBNET_ELEMENT_DATA_V5 * pdhcpSubnetElementData); DWORD RemoveElementV5(DHCP_SUBNET_ELEMENT_DATA_V5 * pdhcpSubnetElementData, BOOL bForce = FALSE);
LPCWSTR GetServerIpAddress(); void GetServerIpAddress(DHCP_IP_ADDRESS * pdhcpIpAddress); void GetServerVersion(LARGE_INTEGER& liVersion);
CDhcpReservations * GetReservationsObject(); CDhcpActiveLeases * GetActiveLeasesObject(); CDhcpAddressPool * GetAddressPoolObject(); CDhcpScopeOptions * GetScopeOptionsObject();
HRESULT GetReservationsNode(ITFSNode ** ppNode) { Assert(ppNode); SetI((LPUNKNOWN *) ppNode, m_spReservations); return hrOK; } HRESULT GetActiveLeasesNode(ITFSNode ** ppNode) { Assert(ppNode); SetI((LPUNKNOWN *) ppNode, m_spActiveLeases); return hrOK; } HRESULT GetScopeOptionsNode(ITFSNode ** ppNode) { Assert(ppNode); SetI((LPUNKNOWN *) ppNode, m_spOptions); return hrOK; } HRESULT GetAddressPoolNode(ITFSNode ** ppNode) { Assert(ppNode); SetI((LPUNKNOWN *) ppNode, m_spAddressPool); return hrOK; } // reservation functionality
DWORD CreateReservation(const CDhcpClient * pClient); DWORD AddReservation(const CDhcpClient *pClient); DWORD DeleteReservation(CByteArray& baHardwareAddress, DHCP_IP_ADDRESS dhcpReservedIpAddress); DWORD DeleteReservation(DHCP_CLIENT_UID &dhcpClientUID, DHCP_IP_ADDRESS dhcpReservedIpAddress); DWORD UpdateReservation(const CDhcpClient * pClient, COptionValueEnum * pOptionValueEnum); DWORD RestoreReservationOptions(const CDhcpClient * pClient, COptionValueEnum * pOptionValueEnum);
// lease functionality
DWORD CreateClient(const CDhcpClient * pClient); DWORD SetClientInfo(const CDhcpClient * pClient); DWORD GetClientInfo(DHCP_IP_ADDRESS dhcpClientIpAddress, LPDHCP_CLIENT_INFO * pdhcpClientInfo); DWORD DeleteClient(DHCP_IP_ADDRESS dhcpClientIpAddress);
// exclusion functionality
LONG StoreExceptionList(CExclusionList * plistExclusions); DWORD AddExclusion(CDhcpIpRange & dhcpIpRange, BOOL bAddToUI = FALSE); DWORD RemoveExclusion(CDhcpIpRange & dhcpIpRange); BOOL IsOverlappingRange(CDhcpIpRange & dhcpIpRange); DWORD IsValidExclusion(CDhcpIpRange & dhcpExclusion);
// Functions to get and set the lease time
DWORD GetLeaseTime(LPDWORD pdwLeaseTime); DWORD SetLeaseTime(DWORD dwLeaseTime);
// Functions to get and set the dynamic bootp lease time
DWORD GetDynBootpLeaseTime(LPDWORD pdwLeaseTime); DWORD SetDynBootpLeaseTime(DWORD dwLeaseTime); DWORD SetDynamicBootpInfo(UINT uRangeType, DWORD dwLeaseTime);
// Functions to get and set the DNS reg option
DWORD GetDnsRegistration(LPDWORD pDnsRegOption); DWORD SetDnsRegistration(DWORD DnsRegOption); // option functionality
DWORD SetOptionValue(CDhcpOption * pdhcType, DHCP_OPTION_SCOPE_TYPE dhcOptType, DHCP_IP_ADDRESS dhipaReservation = 0, LPCTSTR pClassName = NULL, LPCTSTR pVendorName = NULL); DWORD GetOptionValue(DHCP_OPTION_ID OptionID, DHCP_OPTION_SCOPE_TYPE dhcOptType, DHCP_OPTION_VALUE ** ppdhcOptionValue, DHCP_IP_ADDRESS dhipaReservation = 0, LPCTSTR pClassName = NULL, LPCTSTR pVendorName = NULL); DWORD RemoveOptionValue(DHCP_OPTION_ID dhcOptId, DHCP_OPTION_SCOPE_TYPE dhcOptType, DHCP_IP_ADDRESS dhipaReservation = 0); DWORD SetInfo();
// used to set this scope on the server
DWORD SetSuperscope(LPCTSTR pSuperscopeName, BOOL bRemove); // interal state information
BOOL IsEnabled() { return m_dhcpSubnetState == DhcpSubnetEnabled || m_dhcpSubnetState == DhcpSubnetEnabledSwitched; } void SetState(DHCP_SUBNET_STATE dhcpSubnetState); DHCP_SUBNET_STATE GetState() { return IsEnabled() ? DhcpSubnetEnabled : DhcpSubnetDisabled; }
// used for initialization and querring of internal flag
BOOL IsInSuperscope() { return m_bInSuperscope; } void SetInSuperscope(BOOL bInSuperscope) { m_bInSuperscope = bInSuperscope; }
void SetOptionValueEnum(COptionValueEnum * pEnum) { m_ScopeOptionValues.DeleteAll(); m_ScopeOptionValues.Copy(pEnum); }
COptionValueEnum * GetOptionValueEnum() { return &m_ScopeOptionValues; } // dynamic bootp stuff
void GetDynBootpClassName(CString & strName);
// Implementation
public: // helpers
HRESULT GetServerNode(ITFSNode ** ppNode) { m_spServerNode->AddRef(); *ppNode = m_spServerNode; return hrOK; } CDhcpServer * GetServerObject() { return GETHANDLER(CDhcpServer, m_spServerNode); } HRESULT BuildDisplayName(CString * pstrDisplayName, LPCTSTR pIpAddress, LPCTSTR pName); void UpdateToolbarStates(); HRESULT TriggerStatsRefresh();
private: // command Handlers
DWORD OnActivateScope(ITFSNode * pNode); HRESULT OnRefreshScope(ITFSNode * pNode, LPDATAOBJECT pDataObject, DWORD dwType); HRESULT OnReconcileScope(ITFSNode * pNode); HRESULT OnShowScopeStats(ITFSNode * pNode); HRESULT OnDelete(ITFSNode * pNode); HRESULT OnAddToSuperscope(ITFSNode * pNode); HRESULT OnRemoveFromSuperscope(ITFSNode * pNode); // Helpers
HRESULT CreateSubcontainers(ITFSNode * pNode);
// Attributes
private: DHCP_IP_ADDRESS m_dhcpIpAddress; // Ip address for this scope
DHCP_IP_MASK m_dhcpSubnetMask; DWORD m_dwClusterSize; DWORD m_dwPreallocate; CString m_strName; CString m_strComment; CString m_strState; DHCP_SUBNET_STATE m_dhcpSubnetState; BOOL m_bInSuperscope;
SPITFSNode m_spAddressPool; SPITFSNode m_spActiveLeases; SPITFSNode m_spReservations; SPITFSNode m_spOptions;
SPITFSNode m_spServerNode;
CScopeStats m_dlgStats; COptionValueEnum m_ScopeOptionValues; };
/*---------------------------------------------------------------------------
Class: CDhcpScopeSubobject All subobjects of a scope derive from this to provide base functionality to get information from the scope. ---------------------------------------------------------------------------*/ class CDhcpScopeSubobject { public: CDhcpScope * GetScopeObject(ITFSNode * pNode, BOOL bResClient = FALSE) { if (pNode == NULL) return NULL;
SPITFSNode spScopeNode; if (bResClient) { SPITFSNode spResNode; pNode->GetParent(&spResNode); spResNode->GetParent(&spScopeNode); } else { pNode->GetParent(&spScopeNode); }
return GETHANDLER(CDhcpScope, spScopeNode); }
ITFSNode * GetServerNode(ITFSNode * pNode, BOOL bResClient = FALSE) { CDhcpScope * pScope = GetScopeObject(pNode, bResClient);
SPITFSNode spServerNode;
if (pScope) { pScope->GetServerNode(&spServerNode); spServerNode->AddRef(); }
return spServerNode; }
LPCTSTR GetServerName(ITFSNode * pNode, BOOL bResClient = FALSE) { LPCTSTR pszReturn = NULL;
CDhcpScope * pScope = GetScopeObject(pNode, bResClient); if (pScope) { CDhcpServer * pServer = pScope->GetServerObject(); if (pServer) pszReturn = pServer->GetName(); }
return pszReturn; }
LPCTSTR GetServerIpAddress(ITFSNode * pNode, BOOL bResClient = FALSE) { CDhcpScope * pScope = GetScopeObject(pNode, bResClient); if (pScope) return pScope->GetServerIpAddress(); else return NULL; }
void GetServerIpAddress(ITFSNode * pNode, DHCP_IP_ADDRESS * pdhcpIpAddress, BOOL bResClient = FALSE) { CDhcpScope * pScope = GetScopeObject(pNode, bResClient); if (pScope) pScope->GetServerIpAddress(pdhcpIpAddress); }
void GetServerVersion(ITFSNode * pNode, LARGE_INTEGER& liVersion, BOOL bResClient = FALSE) { CDhcpScope * pScope = GetScopeObject(pNode, bResClient); if (pScope) pScope->GetServerVersion(liVersion); } };
/*---------------------------------------------------------------------------
Class: CDhcpReservations ---------------------------------------------------------------------------*/ class CDhcpReservations : public CMTDhcpHandler, public CDhcpScopeSubobject { public: CDhcpReservations(ITFSComponentData * pComponentData); ~CDhcpReservations();
// Interface
public: // Node handler functionality we override
OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand();
OVERRIDE_NodeHandler_GetString() { return (nCol == 0) ? GetDisplayName() : NULL; } OVERRIDE_BaseHandlerNotify_OnCreateNodeId2();
// result handler overrides
OVERRIDE_ResultHandler_CompareItems(); OVERRIDE_ResultHandler_OnGetResultViewType();
OVERRIDE_BaseResultHandlerNotify_OnResultSelect();
public: // CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode); virtual int GetImageIndex(BOOL bOpenImage); // CMTDhcpHandler overrides
virtual void OnHaveData(ITFSNode * pParent, ITFSNode * pNew);
STDMETHOD(OnNotifyExiting)(LPARAM);
public: // implementation specific functionality
DWORD RemoveReservationFromUI(ITFSNode *pReservationsNode, DHCP_IP_ADDRESS dhcpReservationIp);
ITFSQueryObject* OnCreateQuery(ITFSNode * pNode);
HRESULT AddReservationSorted(ITFSNode * pReservationsNode, ITFSNode * pResClientNode);
// Implementation
private: // message handlers
DWORD OnCreateNewReservation(ITFSNode* pNode);
// Attributes
private: void UpdateResultMessage(ITFSNode * pNode); };
/*---------------------------------------------------------------------------
Class: CDhcpReservationClient ---------------------------------------------------------------------------*/ class CDhcpReservationClient : public CMTDhcpHandler, public CDhcpScopeSubobject { public: CDhcpReservationClient(ITFSComponentData * pComponentData, LPDHCP_CLIENT_INFO pDhcpClientInfo); CDhcpReservationClient(ITFSComponentData * pComponentData, LPDHCP_CLIENT_INFO_V4 pDhcpClientInfo); CDhcpReservationClient(ITFSComponentData * pComponentData, CDhcpClient & dhcpClient); ~CDhcpReservationClient();
// Interface
public: // Node handler functionality we override
OVERRIDE_NodeHandler_HasPropertyPages() { return hrOK; } OVERRIDE_NodeHandler_CreatePropertyPages(); OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand();
OVERRIDE_NodeHandler_GetString() { return (nCol == 0) ? GetDisplayName() : NULL; } OVERRIDE_BaseHandlerNotify_OnCreateNodeId2();
// choose the notifications that we want to handle
OVERRIDE_BaseHandlerNotify_OnDelete(); OVERRIDE_BaseHandlerNotify_OnPropertyChange();
// Result Handler notification
OVERRIDE_BaseResultHandlerNotify_OnResultPropertyChange(); OVERRIDE_BaseResultHandlerNotify_OnResultUpdateView(); OVERRIDE_BaseResultHandlerNotify_OnResultDelete(); OVERRIDE_BaseResultHandlerNotify_OnResultSelect(); OVERRIDE_ResultHandler_CompareItems(); OVERRIDE_ResultHandler_OnGetResultViewType();
virtual HRESULT EnumerateResultPane(ITFSComponent *, MMC_COOKIE, LPARAM, LPARAM);
HRESULT DoResPages(ITFSNode * pNode, LPPROPERTYSHEETCALLBACK lpProvider, LPDATAOBJECT pDataObject, LONG_PTR handle, DWORD dwType); HRESULT DoOptCfgPages(ITFSNode * pNode, LPPROPERTYSHEETCALLBACK lpProvider, LPDATAOBJECT pDataObject, LONG_PTR handle, DWORD dwType);
public: // CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode); virtual int GetImageIndex(BOOL bOpenImage); virtual void OnHaveData(ITFSNode * pParentNode, LPARAM Data, LPARAM Type);
STDMETHOD(OnNotifyExiting)(LPARAM);
public: // command handlers
HRESULT OnCreateNewOptions(ITFSNode * pNode);
public: // implementation specifc
DHCP_IP_ADDRESS GetIpAddress() { return m_dhcpClientIpAddress; }; HRESULT BuildDisplayName(CString * pstrDisplayName, LPCTSTR pIpAddress, LPCTSTR pName); HRESULT SetName(LPCTSTR pName); HRESULT SetComment(LPCTSTR pComment); HRESULT SetUID(const CByteArray & baClientUID); BYTE SetClientType(BYTE bClientType); LPCTSTR GetName() { return (m_pstrClientName == NULL) ? NULL : (LPCTSTR) *m_pstrClientName; } BYTE GetClientType() { return m_bClientType; }
// Functions to get and set the DNS reg option
DWORD GetDnsRegistration(ITFSNode * pNode, LPDWORD pDnsRegOption); DWORD SetDnsRegistration(ITFSNode * pNode, DWORD DnsRegOption); ITFSQueryObject* OnCreateQuery(ITFSNode * pNode);
void SetOptionValueEnum(COptionValueEnum * pEnum) { m_ResClientOptionValues.DeleteAll(); m_ResClientOptionValues.Copy(pEnum); }
COptionValueEnum * GetOptionValueEnum() { return &m_ResClientOptionValues; }
// Implementation
private: // command handlers
DWORD OnDelete(ITFSNode * pNode);
// helpers
void InitializeData(LPDHCP_CLIENT_INFO pDhcpClientInfo); void UpdateResultMessage(ITFSNode * pNode);
// Attributes
public: DHCP_IP_ADDRESS m_dhcpClientIpAddress;
private: CString * m_pstrClientName; CString * m_pstrClientComment; CString m_strLeaseExpires; CByteArray m_baHardwareAddress; BYTE m_bClientType; COptionValueEnum m_ResClientOptionValues; BOOL m_fResProp; };
/*---------------------------------------------------------------------------
Class: CDhcpActiveLeases ---------------------------------------------------------------------------*/ class CDhcpActiveLeases : public CMTDhcpHandler, public CDhcpScopeSubobject { // friend class CDhcpComponent;
// friend class CDhcpComponentData;
public: CDhcpActiveLeases(ITFSComponentData * pComponentData); ~CDhcpActiveLeases();
// Interface
public: // Node handler functionality we override
OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand();
OVERRIDE_NodeHandler_GetString() { return (nCol == 0) ? GetDisplayName() : NULL; } OVERRIDE_BaseHandlerNotify_OnCreateNodeId2();
// Result Handler notification
OVERRIDE_BaseResultHandlerNotify_OnResultDelete(); OVERRIDE_ResultHandler_OnGetResultViewType(); OVERRIDE_ResultHandler_CompareItems();
public: // CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode); virtual int GetImageIndex(BOOL bOpenImage);
public: // implementation specifiec
HRESULT OnExportLeases(ITFSNode * pNode); DWORD DeleteClient(ITFSNode * pActiveLeasesNode, DHCP_IP_ADDRESS dhcpIpAddress);
HRESULT FillFakeLeases(int nNumEntries);
ITFSQueryObject* OnCreateQuery(ITFSNode * pNode);
// Implementation
private: int CompareIpAddresses(CDhcpActiveLease * pDhcpAL1, CDhcpActiveLease * pDhcpAL2);
// Attributes
private: };
/*---------------------------------------------------------------------------
Class: CDhcpAddressPool ---------------------------------------------------------------------------*/ class CDhcpAddressPool : public CMTDhcpHandler, public CDhcpScopeSubobject
{ public: CDhcpAddressPool(ITFSComponentData * pComponentData); ~CDhcpAddressPool();
// Interface
public: // Node handler functionality we override
OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand();
OVERRIDE_NodeHandler_GetString() { return (nCol == 0) ? GetDisplayName() : NULL; } OVERRIDE_BaseHandlerNotify_OnCreateNodeId2();
// Result Handler notification
OVERRIDE_BaseResultHandlerNotify_OnResultDelete(); OVERRIDE_ResultHandler_CompareItems(); OVERRIDE_ResultHandler_OnGetResultViewType();
public: // CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode); virtual int GetImageIndex(BOOL bOpenImage);
public: // implementation specific
ITFSQueryObject* OnCreateQuery(ITFSNode * pNode);
private: // command handlers
DWORD OnCreateNewExclusion(ITFSNode * pNode); // Attributes
private: };
/*---------------------------------------------------------------------------
Class: CDhcpScopeOptions ---------------------------------------------------------------------------*/ class CDhcpScopeOptions : public CMTDhcpHandler, public CDhcpScopeSubobject { public: CDhcpScopeOptions(ITFSComponentData * pComponentData); ~CDhcpScopeOptions();
// Interface
public: // Node handler functionality we override
OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand(); OVERRIDE_NodeHandler_HasPropertyPages(); OVERRIDE_NodeHandler_CreatePropertyPages();
OVERRIDE_NodeHandler_GetString() { return (nCol == 0) ? GetDisplayName() : NULL; } OVERRIDE_BaseHandlerNotify_OnCreateNodeId2(); OVERRIDE_BaseHandlerNotify_OnPropertyChange();
// Result Handler notification
OVERRIDE_BaseResultHandlerNotify_OnResultPropertyChange(); OVERRIDE_BaseResultHandlerNotify_OnResultSelect(); OVERRIDE_BaseResultHandlerNotify_OnResultDelete(); OVERRIDE_BaseResultHandlerNotify_OnResultUpdateView(); OVERRIDE_ResultHandler_CompareItems(); OVERRIDE_ResultHandler_OnGetResultViewType();
virtual HRESULT EnumerateResultPane(ITFSComponent *, MMC_COOKIE, LPARAM, LPARAM);
public: // CDhcpHandler overrides
virtual HRESULT InitializeNode(ITFSNode * pNode); virtual int GetImageIndex(BOOL bOpenImage); virtual void OnHaveData(ITFSNode * pParentNode, LPARAM Data, LPARAM Type);
STDMETHOD(OnNotifyExiting)(LPARAM);
public: // command handlers
HRESULT OnCreateNewOptions(ITFSNode * pNode);
public: // implementation specific
ITFSQueryObject* OnCreateQuery(ITFSNode * pNode);
// Implementation
private: void UpdateResultMessage(ITFSNode * pNode);
// Attributes
private: };
/*---------------------------------------------------------------------------
Class: CDhcpScopeQueryObj ---------------------------------------------------------------------------*/ class CDhcpScopeQueryObj : public CDHCPQueryObj { public: CDhcpScopeQueryObj(ITFSComponentData * pTFSCompData, ITFSNodeMgr * pNodeMgr) : CDHCPQueryObj(pTFSCompData, pNodeMgr) { m_nQueueCountMax = 20; } STDMETHODIMP Execute(); HRESULT CreateSubcontainers();
LARGE_INTEGER m_liVersion; DHCP_IP_ADDRESS m_dhcpScopeAddress; };
/*---------------------------------------------------------------------------
Class: CDhcpActiveLeasesQueryObj ---------------------------------------------------------------------------*/ class CDhcpActiveLeasesQueryObj : public CDHCPQueryObj { public: CDhcpActiveLeasesQueryObj(ITFSComponentData * pTFSCompData, ITFSNodeMgr * pNodeMgr) : CDHCPQueryObj(pTFSCompData, pNodeMgr) { m_nQueueCountMax = 20; } STDMETHODIMP Execute(); HRESULT EnumerateLeasesV5(); HRESULT EnumerateLeasesV4(); HRESULT EnumerateLeases();
HRESULT BuildReservationList(); BOOL IsReservation(DWORD dwIp);
public: LARGE_INTEGER m_liDhcpVersion; DHCP_IP_ADDRESS m_dhcpScopeAddress; DHCP_RESUME_HANDLE m_dhcpResumeHandle; DWORD m_dwPreferredMax; CDWordArray m_ReservationArray; };
/*---------------------------------------------------------------------------
Class: CDhcpReservationsQueryObj ---------------------------------------------------------------------------*/ typedef CMap< DHCP_IP_ADDRESS, DHCP_IP_ADDRESS, LPDHCP_SUBNET_ELEMENT_DATA_V4, LPDHCP_SUBNET_ELEMENT_DATA_V4 > CSubnetElementMap;
class CDhcpReservationsQueryObj : public CDHCPQueryObj { public: CDhcpReservationsQueryObj(ITFSComponentData * pTFSCompData, ITFSNodeMgr * pNodeMgr) : CDHCPQueryObj(pTFSCompData, pNodeMgr) {}; STDMETHODIMP Execute(); HRESULT EnumerateReservationsV4(); HRESULT EnumerateReservationsForLessResvsV4( ); HRESULT EnumerateReservations(); BOOL AddReservedIPsToArray( );
LARGE_INTEGER m_liVersion; DHCP_IP_ADDRESS m_dhcpScopeAddress; DHCP_RESUME_HANDLE m_dhcpResumeHandle; DWORD m_dwPreferredMax; DWORD m_totalResvs; CSubnetElementMap m_resvMap; LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 m_subnetElements; };
/*---------------------------------------------------------------------------
Class: CDhcpReservationClientQueryObj ---------------------------------------------------------------------------*/ class CDhcpReservationClientQueryObj : public CDHCPQueryObj { public: CDhcpReservationClientQueryObj(ITFSComponentData * pTFSCompData, ITFSNodeMgr * pNodeMgr) : CDHCPQueryObj(pTFSCompData, pNodeMgr) {};
STDMETHODIMP Execute();
public: DHCP_IP_ADDRESS m_dhcpScopeAddress; DHCP_IP_ADDRESS m_dhcpClientIpAddress; DHCP_RESUME_HANDLE m_dhcpResumeHandle; DWORD m_dwPreferredMax;
LARGE_INTEGER m_liDhcpVersion;
CString m_strDynBootpClassName; };
/*---------------------------------------------------------------------------
Class: CDhcpAddressPoolQueryObj ---------------------------------------------------------------------------*/ class CDhcpAddressPoolQueryObj : public CDHCPQueryObj { public: CDhcpAddressPoolQueryObj(ITFSComponentData * pTFSCompData, ITFSNodeMgr * pNodeMgr) : CDHCPQueryObj(pTFSCompData, pNodeMgr), m_dwError(0), m_fSupportsDynBootp(FALSE) {};
STDMETHODIMP Execute(); HRESULT EnumerateIpRanges(); HRESULT EnumerateIpRangesV5(); HRESULT EnumerateExcludedIpRanges();
public: DHCP_IP_ADDRESS m_dhcpScopeAddress;
DHCP_RESUME_HANDLE m_dhcpExclResumeHandle; DWORD m_dwExclPreferredMax; DHCP_RESUME_HANDLE m_dhcpIpResumeHandle; DWORD m_dwIpPreferredMax; DWORD m_dwError; BOOL m_fSupportsDynBootp; };
/*---------------------------------------------------------------------------
Class: CDhcpScopeOptionsQueryObj ---------------------------------------------------------------------------*/ class CDhcpScopeOptionsQueryObj : public CDHCPQueryObj { public: CDhcpScopeOptionsQueryObj(ITFSComponentData * pTFSCompData, ITFSNodeMgr * pNodeMgr) : CDHCPQueryObj(pTFSCompData, pNodeMgr) {};
STDMETHODIMP Execute();
public: DHCP_IP_ADDRESS m_dhcpScopeAddress; DHCP_RESUME_HANDLE m_dhcpResumeHandle; DWORD m_dwPreferredMax;
LARGE_INTEGER m_liDhcpVersion;
CString m_strDynBootpClassName; };
#endif _SCOPE_H
|