Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

171 lines
5.6 KiB

/*++
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 ...);