/**********************************************************************/ /** 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