/*++ Copyright(c) 1998,99 Microsoft Corporation Module Name: CommonClusterDlg.h Abstract: Windows Load Balancing Service (WLBS) Cluster page UI. Shared by Notifier object and NLB Manager Author: kyrilf shouse --*/ #pragma once #include "resource.h" #include "wlbsparm.h" #include "IpSubnetMaskControl.h" #define WLBS_MAX_PASSWORD 16 // // Common port rule structure shared by wlbscfg and nlbmanager // struct NETCFG_WLBS_PORT_RULE { DWORD start_port; // Starting port number. DWORD end_port; // Ending port number. DWORD mode; // Filtering mode. WLBS_PORT_RULE_XXXX DWORD protocol; // WLBS_TCP, WLBS_UDP or WLBS_TCP_UDP union { struct { DWORD priority; // Mastership priority: 1..32 or 0 for not-specified. } single; // Data for single server mode. struct { WORD equal_load; // TRUE - Even load distribution. WORD affinity; // WLBS_AFFINITY_XXX DWORD load; // Percentage of load to handle locally 0..100. } multi; // Data for multi-server mode. } mode_data; // Data for appropriate port group mode. }; // // Common properties that can be configured by wlbscfg and nlbmanager // struct NETCFG_WLBS_CONFIG { DWORD dwHostPriority; // Host priority ID. BOOL fRctEnabled; // TRUE - remote control enabled. BOOL fJoinClusterOnBoot; // TRUE - join cluster on boot. BOOL fMcastSupport; // TRUE - multicast mode, FALSE - unicast mode. BOOL fIGMPSupport; // TRUE - IGMP enabled. BOOL fIpToMCastIp; // TRUE - derive multicast IP from cluster IP. WCHAR szMCastIpAddress[CVY_MAX_CL_IP_ADDR + 1]; // The multicast IP address, if user-specified. TCHAR cl_mac_addr[CVY_MAX_NETWORK_ADDR + 1]; // Cluster MAC address. TCHAR cl_ip_addr[CVY_MAX_CL_IP_ADDR + 1]; // Cluster IP address. TCHAR cl_net_mask[CVY_MAX_CL_NET_MASK + 1]; // Netmask for cluster IP. TCHAR ded_ip_addr[CVY_MAX_DED_IP_ADDR + 1]; // Dedicated IP address or "" for none. TCHAR ded_net_mask[CVY_MAX_DED_NET_MASK + 1]; // Netmask for dedicated IP address or "" for none. TCHAR domain_name[CVY_MAX_DOMAIN_NAME + 1]; // Full Qualified Domain Name of the cluster. bool fChangePassword; // Whether to change password, valid for SetAdapterConfig only. TCHAR szPassword[CVY_MAX_RCT_CODE + 1]; // Remote control password, valid for SetAdapterConfig only. bool fConvertMac; // Whether the mac address is generated from IP. DWORD dwMaxHosts; // Maximum # hosts allowed. DWORD dwMaxRules; // Maximum # port group rules allowed. DWORD dwNumRules; // # active port group rules NETCFG_WLBS_PORT_RULE port_rules[CVY_MAX_RULES]; // Port rules }; //+---------------------------------------------------------------------------- // // class CCommonClusterPage // // Description: Provide a common class to display cluster property page for // notifier object and NLB Manager // // History: shouse initial code // fengsun Created Header 1/04/01 // //+---------------------------------------------------------------------------- class CCommonClusterPage { public: /* Constructors/Destructors. */ CCommonClusterPage (HINSTANCE hInstance, NETCFG_WLBS_CONFIG * paramp, bool fDisablePassword, const DWORD * phelpIDs = NULL); ~CCommonClusterPage (); public: /* Message map functions. */ LRESULT OnInitDialog (HWND hWnd); LRESULT OnContextMenu (); LRESULT OnHelp (UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL Load (void); BOOL Save (void); LRESULT OnIpFieldChange (int idCtrl, LPNMHDR pnmh, BOOL & fHandled); LRESULT OnEditClIp (WORD wNotifyCode, WORD wID, HWND hWndCtl); LRESULT OnEditClMask (WORD wNotifyCode, WORD wID, HWND hWndCtl); LRESULT OnCheckRct (WORD wNotifyCode, WORD wID, HWND hWndCtl); LRESULT OnButtonHelp (WORD wNotifyCode, WORD wID, HWND hWndCtl); LRESULT OnCheckMode (WORD wNotifyCode, WORD wID, HWND hWndCtl); LRESULT OnCheckIGMP (WORD wNotifyCode, WORD wID, HWND hWndCtl); void External_UpdateInfo(void) {UpdateInfo();} private: void SetClusterMACAddress (); BOOL CheckClusterMACAddress (); void SetInfo (); void UpdateInfo (); LRESULT ValidateInfo (); NETCFG_WLBS_CONFIG * m_paramp; const DWORD * m_adwHelpIDs; BOOL m_rct_warned; BOOL m_igmp_warned; BOOL m_igmp_mcast_warned; WCHAR m_passw[CVY_MAX_RCT_CODE + 1]; WCHAR m_passw2[CVY_MAX_RCT_CODE + 1]; CIpSubnetMaskControl m_IpSubnetControl; HWND m_hWnd; HINSTANCE m_hInstance; bool m_fDisablePassword; // If true, always disable password editing }; PCWSTR SzLoadStringPcch ( IN HINSTANCE hinst, IN UINT unId, OUT int* pcch); PCWSTR SzLoadString ( HINSTANCE hinst, UINT unId); INT WINAPIV NcMsgBox ( IN HINSTANCE hinst, IN HWND hwnd, IN UINT unIdCaption, IN UINT unIdFormat, IN UINT unStyle, IN ...);