/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1998 **/ /**********************************************************************/ /* ifadmin.h Interface administration FILE HISTORY: */ #ifndef _IFADMIN_H #define _IFADMIN_H #include #include #include #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