188 lines
5.6 KiB
C++
188 lines
5.6 KiB
C++
/*++
|
|
|
|
Copyright(c) 1998,99 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ports.h
|
|
|
|
Abstract:
|
|
|
|
Windows Load Balancing Service (WLBS)
|
|
Notifier object UI - port rules tab
|
|
|
|
Author:
|
|
|
|
kyrilf
|
|
shouse
|
|
|
|
--*/
|
|
|
|
|
|
#pragma once
|
|
|
|
#include <ncxbase.h>
|
|
#include <ncatlps.h>
|
|
|
|
#include "resource.h"
|
|
#include "wlbsconfig.h"
|
|
#include "wlbsparm.h"
|
|
#include "wlbscfg.h"
|
|
|
|
/* Limitations for IP address fields. */
|
|
#define WLBS_FIELD_EMPTY -1
|
|
#define WLBS_FIELD_LOW 0
|
|
#define WLBS_FIELD_HIGH 255
|
|
#define WLBS_IP_FIELD_ZERO_LOW 1
|
|
#define WLBS_IP_FIELD_ZERO_HIGH 223
|
|
|
|
#define WLBS_INVALID_PORT_RULE_INDEX -1
|
|
|
|
#define WLBS_NUM_COLUMNS 8
|
|
#define WLBS_VIP_COLUMN 0
|
|
#define WLBS_PORT_START_COLUMN 1
|
|
#define WLBS_PORT_END_COLUMN 2
|
|
#define WLBS_PROTOCOL_COLUMN 3
|
|
#define WLBS_MODE_COLUMN 4
|
|
#define WLBS_PRIORITY_COLUMN 5
|
|
#define WLBS_LOAD_COLUMN 6
|
|
#define WLBS_AFFINITY_COLUMN 7
|
|
|
|
struct VALID_PORT_RULE : public NETCFG_WLBS_PORT_RULE {
|
|
BOOL valid;
|
|
};
|
|
|
|
class CDialogPorts : public CPropSheetPage {
|
|
public:
|
|
/* Declare the message map. */
|
|
BEGIN_MSG_MAP (CDialogPorts)
|
|
|
|
MESSAGE_HANDLER (WM_INITDIALOG, OnInitDialog)
|
|
MESSAGE_HANDLER (WM_CONTEXTMENU, OnContextMenu)
|
|
MESSAGE_HANDLER (WM_HELP, OnHelp)
|
|
|
|
NOTIFY_CODE_HANDLER (PSN_APPLY, OnApply)
|
|
NOTIFY_CODE_HANDLER (PSN_KILLACTIVE, OnKillActive)
|
|
NOTIFY_CODE_HANDLER (PSN_SETACTIVE, OnActive)
|
|
NOTIFY_CODE_HANDLER (PSN_RESET, OnCancel)
|
|
NOTIFY_CODE_HANDLER (LVN_ITEMCHANGED, OnStateChange)
|
|
NOTIFY_CODE_HANDLER (NM_DBLCLK, OnDoubleClick)
|
|
NOTIFY_CODE_HANDLER (LVN_COLUMNCLICK, OnColumnClick)
|
|
|
|
COMMAND_ID_HANDLER (IDC_BUTTON_ADD, OnButtonAdd)
|
|
COMMAND_ID_HANDLER (IDC_BUTTON_DEL, OnButtonDel)
|
|
COMMAND_ID_HANDLER (IDC_BUTTON_MODIFY, OnButtonModify)
|
|
|
|
END_MSG_MAP ()
|
|
|
|
/* Constructors/Destructors. */
|
|
CDialogPorts (NETCFG_WLBS_CONFIG * paramp, const DWORD * phelpIDs = NULL);
|
|
~CDialogPorts ();
|
|
|
|
public:
|
|
/* Message map functions. */
|
|
LRESULT OnInitDialog (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & fHandled);
|
|
LRESULT OnContextMenu (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & fHandled);
|
|
LRESULT OnHelp (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & fHandled);
|
|
|
|
LRESULT OnApply (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
LRESULT OnKillActive (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
LRESULT OnActive (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
LRESULT OnCancel (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
LRESULT OnStateChange (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
LRESULT OnDoubleClick (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
LRESULT OnColumnClick (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
|
|
LRESULT OnButtonAdd (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
LRESULT OnButtonDel (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
LRESULT OnButtonModify (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
|
|
friend class CDialogHost;
|
|
friend class CDialogCluster;
|
|
friend class CDialogPortRule;
|
|
|
|
private:
|
|
void SetInfo ();
|
|
void UpdateInfo ();
|
|
|
|
void CreateRule (BOOL select, VALID_PORT_RULE * rulep);
|
|
void UpdateList (BOOL add, BOOL del, BOOL modify, VALID_PORT_RULE * rulep);
|
|
int InsertRule (VALID_PORT_RULE * rulep);
|
|
void FillPortRuleDescription ();
|
|
|
|
NETCFG_WLBS_CONFIG * m_paramp;
|
|
|
|
const DWORD * m_adwHelpIDs;
|
|
|
|
BOOL m_rulesValid;
|
|
|
|
int m_sort_column;
|
|
enum { WLBS_SORT_ASCENDING = 0, WLBS_SORT_DESCENDING = 1 } m_sort_order;
|
|
|
|
VALID_PORT_RULE m_rules[WLBS_MAX_RULES];
|
|
};
|
|
|
|
class CDialogPortRule : public CDialogImpl<CDialogPortRule> {
|
|
public:
|
|
enum { IDD = IDD_DIALOG_PORT_RULE_PROP };
|
|
|
|
BEGIN_MSG_MAP (CDialogPortRule)
|
|
|
|
MESSAGE_HANDLER (WM_INITDIALOG, OnInitDialog)
|
|
MESSAGE_HANDLER (WM_CONTEXTMENU, OnContextMenu)
|
|
MESSAGE_HANDLER (WM_HELP, OnHelp)
|
|
|
|
NOTIFY_CODE_HANDLER (IPN_FIELDCHANGED, OnIpFieldChange)
|
|
|
|
COMMAND_ID_HANDLER (IDOK, OnOk);
|
|
COMMAND_ID_HANDLER (IDCANCEL, OnCancel);
|
|
COMMAND_ID_HANDLER (IDC_CHECK_PORT_RULE_ALL_VIP, OnCheckPortRuleAllVip);
|
|
COMMAND_ID_HANDLER (IDC_CHECK_EQUAL, OnCheckEqual)
|
|
COMMAND_ID_HANDLER (IDC_RADIO_MULTIPLE, OnRadioMode)
|
|
COMMAND_ID_HANDLER (IDC_RADIO_SINGLE, OnRadioMode)
|
|
COMMAND_ID_HANDLER (IDC_RADIO_DISABLED, OnRadioMode)
|
|
|
|
END_MSG_MAP ()
|
|
|
|
CDialogPortRule (CDialogPorts * parent, const DWORD * phelpIDs, int index);
|
|
~CDialogPortRule ();
|
|
|
|
public:
|
|
LRESULT OnInitDialog (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & fHandled);
|
|
LRESULT OnContextMenu (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & fHandled);
|
|
LRESULT OnHelp (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & fHandled);
|
|
|
|
LRESULT OnIpFieldChange (int idCtrl, LPNMHDR pnmh, BOOL & fHandled);
|
|
|
|
LRESULT OnOk (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
LRESULT OnCancel (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
LRESULT OnCheckPortRuleAllVip (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
LRESULT OnCheckEqual (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
LRESULT OnRadioMode (WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL & fHandled);
|
|
|
|
friend class CDialogPorts;
|
|
|
|
private:
|
|
void PrintIPRangeError (unsigned int ids, int value, int low, int high);
|
|
void PrintRangeError (unsigned int ids, int low, int high);
|
|
|
|
void SetInfo ();
|
|
void ModeSwitch ();
|
|
|
|
BOOL ValidateRule (VALID_PORT_RULE * rulep, BOOL self_check);
|
|
|
|
const DWORD * m_adwHelpIDs;
|
|
|
|
CDialogPorts * m_parent;
|
|
|
|
int m_index;
|
|
|
|
VALID_PORT_RULE m_rule;
|
|
struct {
|
|
UINT IpControl;
|
|
int Field;
|
|
int Value;
|
|
UINT RejectTimes;
|
|
} m_IPFieldChangeState;
|
|
};
|