#ifndef _MNLBPORTRULE_H #define _MNLBPORTRULE_H // // Copyright (c) Microsoft. All Rights Reserved // // THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Microsoft. // The copyright notice above does not evidence any // actual or intended publication of such source code. // // OneLiner : MNLBPortRule interface. // DevUnit : wlbstest // Author : Murtaza Hakim // // Description: // ----------- // Include Files class MNLBPortRule { public: enum MNLBPortRule_Error { MNLBPortRule_SUCCESS = 0, InvalidRule = 1, InvalidNode = 2, COM_FAILURE = 10, }; enum Protocol { tcp, udp, both, }; enum Affinity { none, single, classC, }; // // Description: // ----------- // constructor. // // Parameters: // ---------- // startPort IN : start port in range. // endPort IN : end port in range. // trafficToHandle IN : set port for specified protocol. // // Returns: // ------- // none. MNLBPortRule( long startPort, long endPort, Protocol trafficToHandle ); // // Description: // ----------- // default constructor. // // Parameters: // ---------- // none. // // Returns: // ------- // none. MNLBPortRule(); bool operator==(const MNLBPortRule& objToCompare ) const; bool operator!=(const MNLBPortRule& objToCompare ) const; long _key; long _startPort; long _endPort; Protocol _trafficToHandle; }; // load balanced port rule class. class MNLBPortRuleLoadBalanced : public MNLBPortRule { public: // // Description: // ----------- // constructor. // // Parameters: // ---------- // startPort IN : start port in range. // endPort IN : end port in range. // trafficToHandle IN : set port for specified protocol. // isEqualLoadBalanced IN : indicates whether equal load balanced. // load IN : if not equalLoadBalanced indicates load%. // Affinity IN : indicates affinity of connection. // // Returns: // ------- // none. MNLBPortRuleLoadBalanced( long startPort, long endPort, Protocol traficToHandle, bool isEqualLoadBalanced, long load, Affinity affinity ); // // Description: // ----------- // default constructor. // // Parameters: // ---------- // none. // // Returns: // ------- // none. MNLBPortRuleLoadBalanced(); bool operator==(const MNLBPortRuleLoadBalanced& objToCompare ) const; bool operator!=(const MNLBPortRuleLoadBalanced& objToCompare ) const; bool _isEqualLoadBalanced; long _load; Affinity _affinity; }; // failover class. class MNLBPortRuleFailover : public MNLBPortRule { public: // // Description: // ----------- // constructor. // // Parameters: // ---------- // startPort IN : start port in range. // endPort IN : end port in range. // trafficToHandle IN : set port for specified protocol. // priority IN : indicates host priority for failover. // // Returns: // ------- // none. MNLBPortRuleFailover( long startPort, long endPort, Protocol traficToHandle, long priority ); // // Description: // ----------- // default constructor. // // Parameters: // ---------- // none. // // Returns: // ------- // none. MNLBPortRuleFailover(); bool operator==(const MNLBPortRuleFailover& objToCompare ) const; bool operator!=(const MNLBPortRuleFailover& objToCompare ) const; long _priority; }; class MNLBPortRuleDisabled : public MNLBPortRule { public: // // Description: // ----------- // constructor. // // Parameters: // ---------- // startPort IN : start port in range. // endPort IN : end port in range. // trafficToHandle IN : set port for specified protocol. // // Returns: // ------- // none. MNLBPortRuleDisabled( long startPort, long endPort, Protocol traficToHandle ); // // Description: // ----------- // default constructor. // // Parameters: // ---------- // none. // // Returns: // ------- // none. MNLBPortRuleDisabled(); bool operator==(const MNLBPortRuleDisabled& objToCompare ) const; bool operator!=(const MNLBPortRuleDisabled& objToCompare ) const; }; #endif