HP-LOADBALANCE-MIB DEFINITIONS ::= BEGIN

   IMPORTS
      OBJECT-TYPE, MODULE-IDENTITY, Counter64, Integer32, Unsigned32 
         FROM SNMPv2-SMI
      TruthValue
         FROM SNMPv2-TC  
      OBJECT-GROUP, MODULE-COMPLIANCE
         FROM SNMPv2-CONF
      RowStatus, MacAddress
         FROM SNMPv2-TC
      InterfaceIndex, ifIndex
         FROM IF-MIB
      hpSwitch
         FROM HP-ICF-OID
      InetAddressType, InetAddress
         FROM INET-ADDRESS-MIB;

   hpicfLoadBalanceMod MODULE-IDENTITY
      LAST-UPDATED  "201103222222Z"  -- March 22, 2011
      ORGANIZATION "HP Networking"
      CONTACT-INFO "Hewlett-Packard Company
                    8000 Foothills Blvd.
                    Roseville, CA 95747"
      DESCRIPTION  "MIB module for configuring trunk Load Balancing
                   on Hewlett-Packard network devices."
      
      REVISION     "201103222222Z"  -- March 22, 2011
      DESCRIPTION  "Added a table to get the current egress port in the trunk."

      REVISION     "201006222222Z"  -- June 22, 2010
      DESCRIPTION  "Initial version of this MIB module."
      
      ::= { hpSwitch 76 }

   hpicfLoadBalanceNotifications   OBJECT IDENTIFIER      ::= { hpicfLoadBalanceMod 0 }
   hpicfLoadBalanceMethodMod       OBJECT IDENTIFIER      ::= { hpicfLoadBalanceMod 1 }
   hpicfLoadBalanceConformance     OBJECT IDENTIFIER      ::= { hpicfLoadBalanceMod 2 }

-- ----------------------------------------------------------------------   
-- Global Load Balancing method
-- ----------------------------------------------------------------------
  
   hpicfTrunkLoadBalanceMethod OBJECT-TYPE
      SYNTAX      INTEGER {
                      l3based(1),
                      l4based(2),
                      l2based(3)
                  }
      MAX-ACCESS  read-write
      STATUS      current
      DESCRIPTION "Method to be used for Load Balancing."
      ::= { hpicfLoadBalanceMethodMod 1 }

hpicfTrunkClearStatsTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF HpicfTrunkClearStatsEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "This table is for resetting the statistics for the given trunk."
    ::= { hpicfLoadBalanceMethodMod 2 }

hpicfTrunkClearStatsEntry OBJECT-TYPE
    SYNTAX       HpicfTrunkClearStatsEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "This entry is used to clear the statistics for the given trunk."
    INDEX   { hpicfTrunkId }
    ::= { hpicfTrunkClearStatsTable 1 }

HpicfTrunkClearStatsEntry ::= SEQUENCE {
    hpicfTrunkId          Integer32,
    hpicfTrunkStatsClear  TruthValue
}

hpicfTrunkId OBJECT-TYPE
    SYNTAX       Integer32 (1..65535)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "This object uniquely identifies the entry in this table."
    ::= { hpicfTrunkClearStatsEntry 1 }


hpicfTrunkStatsClear OBJECT-TYPE
    SYNTAX       TruthValue
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION  
        "This object is to clear the statistics for the trunk 
          identified by 'hpicfTrunkId'. Statistics counters will be 
         cleared when this object is set to 'true'. 
         This object will always returns 'false'."
    ::= { hpicfTrunkClearStatsEntry 2 }


hpicfTrunkStatsTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF HpicfTrunkStatsEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "A collection of statistics for the specified trunk."
    ::= { hpicfLoadBalanceMethodMod 3 }

hpicfTrunkStatsEntry OBJECT-TYPE
    SYNTAX       HpicfTrunkStatsEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "A collection of statistics for the specified trunk."
    INDEX   { hpicfTrunkId }
    ::= { hpicfTrunkStatsTable 1 }

HpicfTrunkStatsEntry ::= SEQUENCE {
    hpicfTrunkUpTime         Unsigned32,
    hpicfTrunkTotalBytesRx   Counter64,
    hpicfTrunkTotalBytesTx   Counter64,
    hpicfTrunkTotalFramesRx  Counter64,
    hpicfTrunkTotalFramesTx  Counter64,
    hpicfTrunkTotalDropsTx   Counter64
}

hpicfTrunkUpTime OBJECT-TYPE
    SYNTAX       Unsigned32
    UNITS        "minutes"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "The time the trunk has been up or since the
        counters were reset."

    ::= { hpicfTrunkStatsEntry 1 }

hpicfTrunkTotalBytesRx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Bytes"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of bytes received on this trunk."
    ::= { hpicfTrunkStatsEntry 2 }

hpicfTrunkTotalBytesTx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Bytes"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of bytes transmitted on this trunk."
    ::= { hpicfTrunkStatsEntry 3 }


hpicfTrunkTotalFramesRx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Frames"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of frames received on this trunk."
    ::= { hpicfTrunkStatsEntry 4 }
	
hpicfTrunkTotalFramesTx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Frames"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of frames transmitted on this trunk."
    ::= { hpicfTrunkStatsEntry 5 }


hpicfTrunkTotalDropsTx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Frames"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of transmitted frames which were dropped 
         because the port was oversubscribed."
    ::= { hpicfTrunkStatsEntry 6 }


hpicfTrunkPortStatsTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF HpicfTrunkPortStatsEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "A collection of statistics for specified port of the trunk."
    ::= { hpicfLoadBalanceMethodMod 4 }

hpicfTrunkPortStatsEntry OBJECT-TYPE
    SYNTAX       HpicfTrunkPortStatsEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION  
        "A collection of statistics for specified port of the trunk."
    INDEX   { hpicfTrunkId, ifIndex }
    ::= { hpicfTrunkPortStatsTable 1 }

HpicfTrunkPortStatsEntry ::= SEQUENCE {
    hpicfTrunkPortBytesRx            Counter64,
    hpicfTrunkPortBytesTx            Counter64,
    hpicfTrunkPortFramesRx           Counter64,
    hpicfTrunkPortFramesTx            Counter64,
    hpicfTrunkPortFramesDropTx       Counter64,
    hpicfTrunkPortRxFramePercent     Unsigned32,
    hpicfTrunkPortTxFramePercent     Unsigned32,
    hpicfTrunkPortDropTxFramePercent Unsigned32
}

hpicfTrunkPortBytesRx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Bytes"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of bytes received on the specified 
         port of the trunk."
    ::= { hpicfTrunkPortStatsEntry 1 }

hpicfTrunkPortBytesTx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Bytes"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of bytes transmitted on the specified 
         port of the trunk."
    ::= { hpicfTrunkPortStatsEntry 2 }

hpicfTrunkPortFramesRx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Frames"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of frames received on the specified 
	 port of the trunk."
    ::= { hpicfTrunkPortStatsEntry 3 }

hpicfTrunkPortFramesTx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Frames"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of frames transmitted on the specified 
         port of the trunk."
    ::= { hpicfTrunkPortStatsEntry 4 }

hpicfTrunkPortFramesDropTx OBJECT-TYPE
    SYNTAX       Counter64
    UNITS        "Frames"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Total number of transmitted frames which were dropped
         on the specified port of the trunk because of
         oversubscription."
    ::= { hpicfTrunkPortStatsEntry 5 }

hpicfTrunkPortRxFramePercent OBJECT-TYPE
    SYNTAX       Unsigned32
    UNITS        "Percent"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
        "Percentage of frames received by this specified port of the 
         trunk, calculated as the total number of frames received by 
         this port over the total
         number of frames received by all ports in the trunk group"
    ::= { hpicfTrunkPortStatsEntry 6 }

hpicfTrunkPortTxFramePercent OBJECT-TYPE
    SYNTAX       Unsigned32
    UNITS        "Percent"
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  
          "Percentage of frames transmitted by this specified port of
           the trunk, calculated as the total number of frames 
           transmitted by this port over the total
           number of frames transmitted by all ports in the trunk group"
    ::= { hpicfTrunkPortStatsEntry 7 }

hpicfTrunkPortDropTxFramePercent OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
        "Percentage of frames transmitted by this port that are
         dropped because of oversubscription, calculated as the total
         number of dropped frames in transmission over the total number
         of frames transmitted by the specified port of the trunk."  
    ::= { hpicfTrunkPortStatsEntry 8 }

hpicfLoadBalanceObjects	OBJECT IDENTIFIER  ::= { hpicfLoadBalanceMethodMod 5}

--
-- Load balancing Table
--
	
  hpicfLoadBalanceTable OBJECT-TYPE
		SYNTAX 	SEQUENCE OF 	HpicfLoadBalanceEntry
		MAX-ACCESS 		not-accessible
		STATUS			current
		DESCRIPTION		"A table which gives the current egress port in the trunk 
                                                               		for the specific conversation."
		::= { hpicfLoadBalanceObjects  1}		

	hpicfLoadBalanceEntry OBJECT-TYPE
		SYNTAX 		HpicfLoadBalanceEntry 
		MAX-ACCESS 		not-accessible
		STATUS			current
		DESCRIPTION		"gives the current egress port in the trunk 
                                                              		for the specific conversation."
                INDEX	                {hpicfLoadBalanceIndex} 
		::= { hpicfLoadBalanceTable 1}	

	HpicfLoadBalanceEntry ::=
		SEQUENCE {
          		hpicfLoadBalanceIndex				Integer32,
			hpicfLoadBalanceTrunkId				InterfaceIndex,	
			hpicfLoadBalanceSourceMacAddr			MacAddress,
			hpicfLoadBalanceDestMacAddr			MacAddress,
			hpicfLoadBalanceIPSourceAddrType		InetAddressType,
			hpicfLoadBalanceIPSourceAddr			InetAddress,
			hpicfLoadBalanceIPDestAddrType			InetAddressType,
			hpicfLoadBalanceIPDestAddr			InetAddress, 
			hpicfLoadBalanceSourcePort			Integer32,
			hpicfLoadBalanceDestPort			Integer32, 
			hpicfLoadBalanceEtherType			Integer32,
			hpicfLoadBalanceInboundVlan			Integer32,
			hpicfLoadBalanceInboundPort			InterfaceIndex,
			hpicfLoadBalanceOutboundPort			InterfaceIndex,
			hpicfLoadBalanceStatus				RowStatus
		}

		hpicfLoadBalanceIndex OBJECT-TYPE
			SYNTAX			Integer32 (1..65535)
			MAX-ACCESS		not-accessible
			STATUS      		current
			DESCRIPTION 		"The index which uniquely identifies a row in the table."
			::= { hpicfLoadBalanceEntry 1}

		hpicfLoadBalanceTrunkId OBJECT-TYPE
			SYNTAX			InterfaceIndex
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the trunk index."
			::= { hpicfLoadBalanceEntry 2}

		hpicfLoadBalanceSourceMacAddr OBJECT-TYPE
			SYNTAX			MacAddress
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the source Mac address."
			::= { hpicfLoadBalanceEntry  3}
	
		hpicfLoadBalanceDestMacAddr OBJECT-TYPE
			SYNTAX			MacAddress
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the destination Mac address"
			::= { hpicfLoadBalanceEntry  4}

		hpicfLoadBalanceIPSourceAddrType OBJECT-TYPE
              		SYNTAX      		InetAddressType
              		MAX-ACCESS  		read-create
              		STATUS      		current
              		DESCRIPTION		"Specifies the source IP address type."
              		::= { hpicfLoadBalanceEntry 5}

		hpicfLoadBalanceIPSourceAddr OBJECT-TYPE
			SYNTAX			InetAddress (SIZE(0..48))
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the source IP address."
			::= { hpicfLoadBalanceEntry 6}

		hpicfLoadBalanceIPDestAddrType OBJECT-TYPE
              		SYNTAX      		InetAddressType
              		MAX-ACCESS  		read-create
              		STATUS      		current
              		DESCRIPTION		"Specifies the destination IP address type."
              		::= { hpicfLoadBalanceEntry 7 }

	
		hpicfLoadBalanceIPDestAddr OBJECT-TYPE
			SYNTAX			InetAddress (SIZE(0..48))
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the destination IP address."
			::= { hpicfLoadBalanceEntry 8}

		hpicfLoadBalanceSourcePort OBJECT-TYPE
			SYNTAX			Integer32 
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the TCP/UDP source port."
			::= { hpicfLoadBalanceEntry 9}
		hpicfLoadBalanceDestPort OBJECT-TYPE
			SYNTAX			Integer32 
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the TCP/UDP destination port."
			::= { hpicfLoadBalanceEntry 10}


		hpicfLoadBalanceEtherType OBJECT-TYPE
			SYNTAX			Integer32
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the ether-type of the packet."
			::= { hpicfLoadBalanceEntry  11}
		
		hpicfLoadBalanceInboundVlan OBJECT-TYPE
			SYNTAX			Integer32
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the inbound VLAN of the packet."
			::= { hpicfLoadBalanceEntry 12}

		hpicfLoadBalanceInboundPort OBJECT-TYPE
			SYNTAX			InterfaceIndex
			MAX-ACCESS		read-create
			STATUS      		current
			DESCRIPTION 		"Specifies the inbound port of the packet."
			::= { hpicfLoadBalanceEntry  13}

		hpicfLoadBalanceOutboundPort OBJECT-TYPE
			SYNTAX			InterfaceIndex
			MAX-ACCESS		read-only
			STATUS      		current
			DESCRIPTION 		"Specifies the port on which the specified stream 
                                                 with given source and destination information will be 
                                                 forwarded out."
			::= { hpicfLoadBalanceEntry  14}

		hpicfLoadBalanceStatus OBJECT-TYPE
        		SYNTAX      		RowStatus
        		MAX-ACCESS      	read-create
       	 		STATUS      		current
        		DESCRIPTION 		"Status of the load balance entry."
        		::= { hpicfLoadBalanceEntry  15 }


-- -------------------------------------------------------------
-- ----------------Compliance Statement----------------------
-- ------------------------------------------------------------
	
  
    hpicfLoadBalanceCompliances
      OBJECT IDENTIFIER ::= { hpicfLoadBalanceConformance 1 }

    hpicfLoadBalanceGroups
      OBJECT IDENTIFIER ::= { hpicfLoadBalanceConformance 2 }

 hpicfLoadBalanceCompliance MODULE-COMPLIANCE
      STATUS           current
      DESCRIPTION      "The compliance statement for devices implementing
                        the hpicfLoadBalanceMethodMod MIB."
      MODULE

      GROUP             hpicfLoadBalanceGroup
      DESCRIPTION       "Implementation of this group is mandatory for
                         devices that implement load balancing."
      
      GROUP             hpicfLoadBalanceGroup5
      DESCRIPTION       "This group is to get the egress port 
                         of the trunk for a given flow."
      ::= { hpicfLoadBalanceCompliances 1 }

hpicfTrunkStatsCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION  "The compliance statement for devices implementing
                  the statistics of the trunk and trunk port."
    MODULE
    GROUP         hpicfTrunkStatsClearGroup
    DESCRIPTION   "This group is to clear the trunk statistics"

    GROUP         hpicfTrunkStatsGroup
    DESCRIPTION   "This group is to get the trunk statistics."

    GROUP         hpicfTrunkPortStatsGroup
    DESCRIPTION   "This group is to get the statistics of the 
                  port of the trunk."	             
    ::= { hpicfLoadBalanceCompliances 2 }


hpicfLoadBalanceGroup OBJECT-GROUP
     OBJECTS     { hpicfTrunkLoadBalanceMethod }
     STATUS      current
     DESCRIPTION "A collection of objects for selecting a load
                 balancing method to use."
    ::= { hpicfLoadBalanceGroups 1 }
	
	
hpicfTrunkStatsClearGroup OBJECT-GROUP
    OBJECTS { 
	        hpicfTrunkStatsClear 
	    }
   STATUS      current
   DESCRIPTION "A collection of objects for clearing the statistics."
    ::= { hpicfLoadBalanceGroups 2 }
	
	
	
hpicfTrunkStatsGroup OBJECT-GROUP
    OBJECTS {   hpicfTrunkUpTime,
	        hpicfTrunkTotalBytesRx,
                hpicfTrunkTotalBytesTx,
	        hpicfTrunkTotalFramesTx,
                hpicfTrunkTotalFramesRx,
                hpicfTrunkTotalDropsTx 
	    }
   STATUS      current
   DESCRIPTION "A collection of objects for trunk statistics."
    ::= { hpicfLoadBalanceGroups 3 }
	

hpicfTrunkPortStatsGroup OBJECT-GROUP
    OBJECTS {   hpicfTrunkPortBytesRx ,
                hpicfTrunkPortBytesTx,
                hpicfTrunkPortFramesRx,  
                hpicfTrunkPortFramesTx,
                hpicfTrunkPortFramesDropTx,
                hpicfTrunkPortRxFramePercent,
                hpicfTrunkPortTxFramePercent,
                hpicfTrunkPortDropTxFramePercent
            }
   STATUS      current
   DESCRIPTION "A collection of objects for statistics
                of a specified port of a trunk."
    ::= { hpicfLoadBalanceGroups 4 }

    hpicfLoadBalanceGroup5 OBJECT-GROUP
    	OBJECTS     		{  

			hpicfLoadBalanceTrunkId,	
			hpicfLoadBalanceSourceMacAddr,
			hpicfLoadBalanceDestMacAddr,
			hpicfLoadBalanceIPSourceAddrType,
			hpicfLoadBalanceIPSourceAddr,
			hpicfLoadBalanceIPDestAddrType,
			hpicfLoadBalanceIPDestAddr, 
			hpicfLoadBalanceSourcePort,
			hpicfLoadBalanceDestPort, 
			hpicfLoadBalanceEtherType,
			hpicfLoadBalanceInboundVlan,
			hpicfLoadBalanceInboundPort,
			hpicfLoadBalanceOutboundPort,
			hpicfLoadBalanceStatus
 				}
    	STATUS      		current
     	DESCRIPTION 		" "
   	 ::= { hpicfLoadBalanceGroups 5 }

END
