|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1998 **/ /**********************************************************************/
/*
ifadmin.h Interface administration FILE HISTORY: */
#ifndef _IFADMIN_H
#define _IFADMIN_H
#include <iprtrmib.h>
#include <ipinfoid.h>
#include <rtmv2.h>
#ifndef _BASEHAND_H
#include "basehand.h"
#endif
#ifndef _HANDLERS_H_
#include "handlers.h"
#endif
#ifndef _ROUTER_H
#include "router.h"
#endif
#ifndef _INFO_H
#include "info.h"
#endif
#ifndef _BASECON_H
#include "basecon.h"
#endif
#ifndef _DIALOG_H_
#include "dialog.h"
#endif
#ifndef __IPCTRL_H
#include "ipctrl.h"
#endif
#include "rasdlg.h"
#define MPR_INTERFACE_NOT_LOADED 0x00010000
#ifdef UNICODE
#define SZROUTERENTRYDLG "RouterEntryDlgW"
#else
#define SZROUTERENTRYDLG "RouterEntryDlgA"
#endif
//
//These structures are same as in rasdlg ifw.c
//Eventually they need to move into a common header
//file.
//
#define SROUTEINFO struct tagSROUTEINFO
SROUTEINFO { TCHAR * pszDestIP; TCHAR * pszNetworkMask; TCHAR * pszMetric; };
#define SROUTEINFOLIST struct tagSROUTEINFOLIST
SROUTEINFOLIST { SROUTEINFOLIST * pNext; SROUTEINFO RouteInfo; };
HRESULT AddStaticRoute(MIB_IPFORWARDROW * pNewForwardRow, IInfoBase *pInfoBase, InfoBlock *pBlock, DWORD dwItemCount);
// forward declarations
class RouterAdminConfigStream; interface IRouterInfo; struct ColumnData;
/*---------------------------------------------------------------------------
Things needed for the Add Interface command ---------------------------------------------------------------------------*/ typedef DWORD (APIENTRY * PROUTERENTRYDLG) (LPTSTR, LPTSTR, LPTSTR, LPRASENTRYDLG);
/*---------------------------------------------------------------------------
Struct: IfAdminNodeData This is information related to the set of interfaces (not per-interface), this is intended for SHARED data.
Put data in here that needs to be accessed by the child nodes. All other private data should go in the handler. ---------------------------------------------------------------------------*/
struct IfAdminNodeData { IfAdminNodeData(); ~IfAdminNodeData(); #ifdef DEBUG
char m_szDebug[32]; // for iding structures
#endif
// The following pieces of data are needed for adding/configuring
// an interface. This is a COPY of the data kept in the IfAdminNodeHandler,
// do NOT free these up!
HINSTANCE m_hInstRasDlg; PROUTERENTRYDLG m_pfnRouterEntryDlg;
static HRESULT InitAdminNodeData(ITFSNode *pNode, RouterAdminConfigStream *pConfigStream); static HRESULT FreeAdminNodeData(ITFSNode *pNode); };
#define GET_IFADMINNODEDATA(pNode) \
((IfAdminNodeData *) pNode->GetData(TFS_DATA_USER)) #define SET_IFADMINNODEDATA(pNode, pData) \
pNode->SetData(TFS_DATA_USER, (LONG_PTR) pData)
/*---------------------------------------------------------------------------
This is the list of columns available for the Interfaces node - Title, "[1] DEC DE500 Fast Ethernet PCI Adapter" or friendly name - Device Name, see above - Type, "Dedicated" - Status, "Enabled" - Connection State, "Connected" ---------------------------------------------------------------------------*/ enum { IFADMIN_SUBITEM_TITLE = 0, IFADMIN_SUBITEM_TYPE = 1, IFADMIN_SUBITEM_STATUS = 2, IFADMIN_SUBITEM_CONNECTION_STATE = 3, IFADMIN_SUBITEM_DEVICE_NAME = 4, IFADMIN_MAX_COLUMNS = 5, };
/*---------------------------------------------------------------------------
Class: IfAdminNodeHandler
---------------------------------------------------------------------------*/ class IfAdminNodeHandler : public BaseContainerHandler { public: IfAdminNodeHandler(ITFSComponentData *pCompData);
HRESULT Init(IRouterInfo *pInfo, RouterAdminConfigStream *pConfigStream);
// Override QI to handle embedded interface
STDMETHOD(QueryInterface)(REFIID iid, LPVOID *ppv);
DeclareEmbeddedInterface(IRtrAdviseSink, IUnknown)
// base handler functionality we override
OVERRIDE_NodeHandler_DestroyHandler(); OVERRIDE_NodeHandler_GetString(); OVERRIDE_NodeHandler_HasPropertyPages(); OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand(); OVERRIDE_NodeHandler_OnCreateDataObject();
OVERRIDE_ResultHandler_CompareItems(); OVERRIDE_ResultHandler_AddMenuItems(); OVERRIDE_ResultHandler_Command();
// override handler notifications
OVERRIDE_BaseHandlerNotify_OnExpand(); OVERRIDE_BaseResultHandlerNotify_OnResultShow();
// Initializes the node
HRESULT ConstructNode(ITFSNode *pNode);
// User-initiated commands
HRESULT OnAddInterface(); #ifdef KSL_IPINIP
HRESULT OnNewTunnel(); #endif //KSL_IPINIP
HRESULT OnUseDemandDialWizard();
// Helper function to add interfaces to the UI
HRESULT AddInterfaceNode(ITFSNode *pParent, IInterfaceInfo *pIf);
// Causes a sync action (synchronizes data not the structure)
HRESULT SynchronizeNodeData(ITFSNode *pNode);
static HRESULT GetPhoneBookPath(LPCTSTR pszMachine, CString* pstPath); protected: SPIDataObject m_spDataObject; // cachecd data object
CString m_stTitle; // holds the title of the node
LONG_PTR m_ulConnId; // notification id for router info
LONG_PTR m_ulRefreshConnId; // id for refresh notifications
BOOL m_bExpanded; // is the node expanded?
MMC_COOKIE m_cookie; // cookie for the node
// Necessary for adding interfaces
// Keep these in sync with the values in the IfAdminNodeData!
HINSTANCE m_hInstRasDlg; PROUTERENTRYDLG m_pfnRouterEntryDlg;
BOOL EnableAddInterface();
// Helper function to add an interface to a router-manager
HRESULT AddRouterManagerToInterface(IInterfaceInfo *pIf, IRouterInfo *pRouter, DWORD dwTransportId);
// returns TRUE if there is at least one routing-enabled port
// on the router.
BOOL FLookForRoutingEnabledPorts(LPCTSTR pszMachineName);
RouterAdminConfigStream * m_pConfigStream;
};
HRESULT GetDemandDialWizardRegKey(LPCTSTR szMachine, DWORD *pfWizard); HRESULT SetDemandDialWizardRegKey(LPCTSTR szMachine, DWORD fEnableWizard);
#ifdef KSL_IPINIP
/*---------------------------------------------------------------------------
Class : TunnelDialog ---------------------------------------------------------------------------*/
class TunnelDialog : public CBaseDialog { public: TunnelDialog(); ~TunnelDialog();
// Dialog Data
//{{AFX_DATA(TunnelDialog)
enum { IDD = IDD_TUNNEL }; // IPControl m_ipLocal;
// IPControl m_ipRemote;
// CSpinButtonCtrl m_spinTTL;
//}}AFX_DATA
// DWORD m_dwLocal;
// DWORD m_dwRemote;
// BYTE m_byteTTL;
CString m_stName;
// Overrides
// ClassWizard generate virtual function overrides
//{{AFX_VIRTUAL(TunnelDialog)
public: virtual void OnOK(); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected: // Generated message map functions
//{{AFX_MSG(TunnelDialog)
virtual BOOL OnInitDialog(); //}}AFX_MSG
DECLARE_MESSAGE_MAP()
private: };
#endif //KSL_IPINIP
#endif _IFADMIN_H
|