-- ***********************************************************************
-- Module:    hpicfOpenFlow.mib
-- 
-- Copyright (C) 2012,2014-2017 Hewlett Packard Enterprise Development LP
-- All Rights Reserved.
--  
-- The contents of this software are proprietary and confidential to
-- the Hewlett Packard Enterprise Development LP. No part of this
-- program may be photocopied, reproduced, or translated into another
-- programming language without prior written consent of the
-- Hewlett Packard Enterprise Development LP.
--
-- Purpose: This file contains MIB definition of HP-ICF-OPENFLOW-MIB 
--
-- ***********************************************************************

HP-ICF-OPENFLOW-MIB  DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter64, Unsigned32
          FROM SNMPv2-SMI
    TruthValue, RowStatus, DisplayString
          FROM SNMPv2-TC
    SnmpAdminString
          FROM SNMP-FRAMEWORK-MIB    
    MODULE-COMPLIANCE, OBJECT-GROUP
          FROM SNMPv2-CONF
    InterfaceIndex, ifIndex
          FROM IF-MIB
    InetAddressType, InetAddress, InetPortNumber
          FROM INET-ADDRESS-MIB
    hpSwitch
          FROM HP-ICF-OID
    PortList
        FROM Q-BRIDGE-MIB
    VidList
          FROM HP-ICF-TC;

    hpicfOpenFlowMIB MODULE-IDENTITY
      LAST-UPDATED "201803270000Z"   -- March 27, 2018
      ORGANIZATION "HP Networking"
      CONTACT-INFO
             "Hewlett Packard Company
              8000 Foothills Blvd.
              Roseville, CA 95747"
      DESCRIPTION
             "Added all option
             hpicfOpenFlowInstanceOverrideProtocol mib object."

      REVISION     "201803270000Z"   -- March 27, 2018
      DESCRIPTION
             "The MIB module for configuring OpenFlow."

      REVISION     "201707160000Z"   -- July 16, 2017
      DESCRIPTION
              "Added a mib object hpicfOpenFlowControllerSourceAddressType
              corresponding to the source IP when configuring a controller.
              Updated compliance."

      REVISION     "201706180000Z"   -- June 18, 2017
      DESCRIPTION
              "Added a mib object hpicfOpenFlowControllerSourceAddress
              for source IP when configuring a controller."

      REVISION     "201704280000Z"   -- April 28, 2017
      DESCRIPTION
              "Added traditionalPipeline option
               hpicfOpenFlowInstanceOverrideProtocol mib object."

      REVISION     "201610250000Z"   -- October 25, 2016
      DESCRIPTION
              "Removed bfd protocol in
               hpicfOpenFlowInstanceOverrideProtocol mib object."

      REVISION     "201610050000Z"   -- October 05, 2016
      DESCRIPTION
            "Added mib object
               hpicfOpenFlowInstanceMeterPrecedenceLevel."

      REVISION     "201608060000Z"   -- August 6, 2016
      DESCRIPTION
              "Removed two protocols, dtiscp and webmacauth in
               hpicfOpenFlowInstanceOverrideProtocol mib object.
               Also modified the BITS numbering of other protocols."

      REVISION     "201607310000Z"   -- July 31, 2016
      DESCRIPTION
              "Added mib object
               hpicfOpenFlowInstanceMissRuleDefaultAction
               hpicfOpenFlowInstanceOverrideProtocol
               hpicfOpenFlowInstancePktInVlanTagging"

      REVISION     "201604210000Z"   -- April 21, 2016
      DESCRIPTION
            "Removed mib object
              hpicfOpenFlowInstanceGroupHWCounterAvailability."

      REVISION      "201512100000Z"   -- December 10, 2015
      DESCRIPTION
             "Added new enum in following MIB object hpicfOpenFlowInstanceOperStatusReason,
              disabled enum is added in this MIB object"

      REVISION      "201509290000Z"   -- September 29, 2015
      DESCRIPTION
             "The following MIB object changes in hpicfOpenFlowInstanceOperStatusReason,
              hardwareFailure is renamed to enableFailedInHardware.        
              controllerVLANRemoved is removed"

      REVISION      "201501110000Z"   -- January 11, 2015
      DESCRIPTION
             "Added support for OpenFlow MAC group tables in the pipeline"

      REVISION      "201406040000Z"   -- June 4, 2014
      DESCRIPTION
             "Added mib objects
              hpicfOpenFlowInstanceMembers
              hpicfOpenFlowInstancePipelineModel
              hpicfOpenFlowInstanceDatapathDesc
              Deprecated the table
              hpicfOpenFlowInstanceMembershipTable and mib object
              hpicfOpenFlowIpControlTableMode.
              Deprecated groups are
              hpicfOpenFlowInstanceGroup
              hpicfOpenFlowInstanceMembershipGroup
              hpicfOpenFlowScalarsGroup. Added new groups
              hpicfOpenFlowInstanceGroup1
              hpicfOpenFlowScalarsGroup1.
              Deprecated the compliance
              hpicfOpenFlowCompliance and added hpicfOpenFlowCompliance1."

      REVISION      "201210010000Z"   -- October 16, 2012
      DESCRIPTION
             "Added support for OpenFlow Specification 1.3"

      REVISION      "201202010000Z"   -- February 01, 2012
      DESCRIPTION
             "The initial version of this MIB module"

      ::= { hpSwitch  89}  
   
-- -------------------------------------------------------------
-- Start of MIB Objects
-- -------------------------------------------------------------
hpicfOpenFlowNotifications OBJECT IDENTIFIER ::= { hpicfOpenFlowMIB 0 }
hpicfOpenFlowObjects       OBJECT IDENTIFIER ::= { hpicfOpenFlowMIB 1 }
hpicfOpenFlowConformance   OBJECT IDENTIFIER ::= { hpicfOpenFlowMIB 2 }

--
-- MIB objects
--

  hpicfOpenFlowStatus     OBJECT-TYPE    
          SYNTAX  INTEGER {
                                  enable (1),
                                  disable (2),
                                  disableWithClearConfig (3)
                          }
          MAX-ACCESS      read-write
          STATUS          current
          DESCRIPTION     "Global configuration to enable or disable 
                          OpenFlow on the device. 
                          The 'disableWithClearConfig' enum disables 
                          OpenFlow along with removing all the 
                          OpenFlow related configuration."
          DEFVAL          { disable }
          ::= { hpicfOpenFlowObjects 1}

----------------------------------------------------------
-- OpenFlow instance table
----------------------------------------------------------

  hpicfOpenFlowInstanceTable OBJECT-TYPE  
          SYNTAX          SEQUENCE OF HpicfOpenFlowInstanceEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "A table that is used create an OpenFlow instance. 
                          For maximum number of OpenFlow instances 
                          that can be supported, refer to 
                          hpicfOpenFLowMaxInstances MIB object."  
          ::= { hpicfOpenFlowObjects 4 }

  hpicfOpenFlowInstanceEntry      OBJECT-TYPE
          SYNTAX          HpicfOpenFlowInstanceEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "A set of objects that are used to create an 
                          OpenFlow instance."
          INDEX           { hpicfOpenFlowInstanceName}
          ::= { hpicfOpenFlowInstanceTable 1 }

  HpicfOpenFlowInstanceEntry ::= 
          SEQUENCE {
                  hpicfOpenFlowInstanceName               SnmpAdminString,  
                  hpicfOpenFlowInstanceAdminStatus        INTEGER,
                  hpicfOpenFlowInstanceListenPortCfg      TruthValue,
                  hpicfOpenFlowInstanceListenPort         InetPortNumber,
                  hpicfOpenFlowInstanceListenPortIsOobm   TruthValue,
                  hpicfOpenFlowInstanceMode               INTEGER,
                  hpicfOpenFlowInstanceFlowLocationMode   INTEGER,
                  hpicfOpenFlowConnectionInterruptionMode INTEGER,
                  hpicfOpenFlowInstanceHwRateLimit        Integer32,
                  hpicfOpenFlowInstanceSwRateLimit        Integer32,                  
                  hpicfOpenFlowInstanceDatapathID         Counter64,
                  hpicfOpenFlowInstanceNumOfHwFlows       Counter64,
                  hpicfOpenFlowInstanceNumOfSwFlows       Counter64,
                  hpicfOpenFlowInstanceOperStatus         INTEGER,
                  hpicfOpenFlowInstanceMaxBackOffInterval Unsigned32,   
                  hpicfOpenFlowInstanceRowStatus          RowStatus,
                  hpicfOpenFlowInstanceProbeInterval      Unsigned32,
                  hpicfOpenFlowInstanceProtoVersion       INTEGER,
                  hpicfOpenFlowInstanceProtoVersionOnly   TruthValue,
                  hpicfOpenFlowInstanceNumOfSwFlowTable   Unsigned32,
                  hpicfOpenFlowInstanceOperStatusReason   INTEGER,
                  hpicfOpenFlowInstanceEgressOnlyPorts    PortList,
                  hpicfOpenFlowInstanceCapabilities       BITS,
                  hpicfOpenFlowInstanceHwTableMissCount   Counter64,
                  hpicfOpenFlowInstanceTableModel         INTEGER,
                  hpicfOpenFlowInstanceMembers            VidList,
                  hpicfOpenFlowInstancePipelineModel      INTEGER,
                  hpicfOpenFlowInstanceDatapathDesc       DisplayString,
                  hpicfOpenFlowInstanceSourceMacGrpTable  INTEGER,
                  hpicfOpenFlowInstanceDestMacGrpTable    INTEGER,
                  hpicfOpenFlowInstanceMissRuleDefaultAction  INTEGER,
                  hpicfOpenFlowInstanceOverrideProtocol   BITS,
                  hpicfOpenFlowInstancePktInVlanTagging   INTEGER
                  }

  hpicfOpenFlowInstanceName       OBJECT-TYPE
          SYNTAX          SnmpAdminString(SIZE(1..32))
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Unique name given to an OpenFlow instance.
                          The instance name 'aggregate' is special case 
                          denoting switch functioning as OpenFlow switch.
                          The instance name allows lowercase alphanumeric
                          characters and the special character underscore."
          ::= { hpicfOpenFlowInstanceEntry 1}

  hpicfOpenFlowInstanceAdminStatus        OBJECT-TYPE
          SYNTAX  INTEGER {
                          enable (1),
                          disable (2)
                          }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object is used to administratively enable 
                          or disable an OpenFlow instance. This MIB 
                          object can be set to 'enable' only when either 
                          hpicfOpenFlowInstanceListenPortCfg has been 
                          set to 'true' or atleast one controller is 
                          associated with this instance."
         DEFVAL          { disable }             
          ::= { hpicfOpenFlowInstanceEntry 2}

  hpicfOpenFlowInstanceListenPortCfg      OBJECT-TYPE
          SYNTAX          TruthValue
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object indicates if a listen-port is 
                          configured on this OpenFlow instance."  
          DEFVAL          { false }
          ::= { hpicfOpenFlowInstanceEntry 3}

  hpicfOpenFlowInstanceListenPort         OBJECT-TYPE
          SYNTAX          InetPortNumber
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Port number for the listen-port on the 
                          OpenFlow instance. A valid port number is 
                          between 1024 and 65534 inclusive."
          DEFVAL          { 6633 }
          ::= { hpicfOpenFlowInstanceEntry 4}

  hpicfOpenFlowInstanceListenPortIsOobm   OBJECT-TYPE
          SYNTAX          TruthValue
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object indicates if a listen-port is 
                          configured for this OpenFlow instance over 
                          OOBM(Out Of Band Management) interface. 
                          This MIB object will be applicable only if 
                          there is a physical OOBM port on the device."  
          DEFVAL          { false } 
          ::= { hpicfOpenFlowInstanceEntry 5}

  hpicfOpenFlowInstanceMode       OBJECT-TYPE    
          SYNTAX          INTEGER { 
                                  active(1),
                                  passive(2)
                                  }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object allows the user to specify the 
                          mode of OpenFlow operation for an instance. 
                          In active mode, new flows get redirected to 
                          the OpenFlow controller. In passive mode, 
                          new flows are not sent to the OpenFlow 
                          controller.This object is applicable 
                          only for an OpenFlow version 1.0 instance." 
          DEFVAL          { active }
          ::= { hpicfOpenFlowInstanceEntry 6}

    hpicfOpenFlowInstanceFlowLocationMode OBJECT-TYPE
          SYNTAX          INTEGER {
                                  hardwareOnly (1),
                                  hardwareAndSoftware (2)
                                  }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object specifies if the flows for this 
                          instance will be located in hardware only or  
                          in hardware and software. By default, flows 
                          will be located in hardware and software.This 
                          object is applicable only for an OpenFlow 
                          version 1.0 instance."
          DEFVAL          { hardwareAndSoftware }
          ::={ hpicfOpenFlowInstanceEntry 7}

hpicfOpenFlowConnectionInterruptionMode   OBJECT-TYPE    
          SYNTAX          INTEGER {
                                  failSecure (1),
                                  failStandalone (2)
                                  }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This MIB object is used to specify the type  
                          of fallback when the switch loses connection 
                          with the controller. In fail-secure mode, 
                          packets and messages destined to the current 
                          controller are dropped. Flows should continue 
                          to expire according to their timeouts in 
                          fail-secure mode. In fail-standalone mode, the 
                          switch acts as a legacy Ethernet switch or 
                          router."
          REFERENCE       "OpenFlow Spec-v1.1.0, Section 5.3"
          DEFVAL          { failSecure }     
          ::= { hpicfOpenFlowInstanceEntry 8}

  hpicfOpenFlowInstanceHwRateLimit        OBJECT-TYPE
          SYNTAX          Integer32                          
          UNITS           "kilobits per second"
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object limits the bandwidth per module
                          in kilobits per second, that this OpenFlow 
                          instance can utilize. This implementation 
                          supports a minimum rate limit of 0 kbps and 
                          a maximum rate limit of 10000000 kbps."   
          ::=   { hpicfOpenFlowInstanceEntry 9}

  hpicfOpenFlowInstanceSwRateLimit        OBJECT-TYPE
          SYNTAX          Integer32    
          UNITS           "packets per second"
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object limits the number of packets per 
                          second for each module, that this instance
                          can send to the software path on the CPU. 
                          Increasing the software rate limit would 
                          increase CPU consumption and may impact the 
                          system performance. For maximum number of 
                          packets per second for each module, that an 
                          OpenFlow instance can send to the software 
                          path on the CPU, refer to
                          hpicfOpenFLowInstanceMaxSwRateLimit MIB object."
          DEFVAL          { 100 }
          ::=   { hpicfOpenFlowInstanceEntry 10}

 
  hpicfOpenFlowInstanceDatapathID         OBJECT-TYPE
          SYNTAX          Counter64
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "Datapath ID(DPID) uniquely identifies a 
                          datapath between this instance and the 
                          controller. Its lower 48-bits are intended for 
                          switch MAC address, while the upper 16-bits 
                          are defined by the implementation."   
          REFERENCE       "OpenFlow Spec-v1.1.0, Appendix A.3.1"
          ::=   { hpicfOpenFlowInstanceEntry 11}

  hpicfOpenFlowInstanceNumOfHwFlows       OBJECT-TYPE
          SYNTAX          Counter64
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This object indicates the number of hardware 
                          flows in this OpenFlow instance." 
          ::=   { hpicfOpenFlowInstanceEntry 12}

  hpicfOpenFlowInstanceNumOfSwFlows       OBJECT-TYPE
          SYNTAX          Counter64
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This object indicates the number of software 
                          flows in this OpenFlow instance." 
          ::=   { hpicfOpenFlowInstanceEntry 13}

  hpicfOpenFlowInstanceOperStatus OBJECT-TYPE
          SYNTAX          INTEGER {
                                  up (1),
                                  down (2)
                                  }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This object is used to determine the 
                          operational state of an OpenFlow instance.
                          The reason for operational status to be 
                          down is specified by the 
                          hpicfOpenFlowInstanceOperStatusReason MIB."
          ::= { hpicfOpenFlowInstanceEntry 14}

  hpicfOpenFlowInstanceMaxBackOffInterval OBJECT-TYPE    
          SYNTAX          Unsigned32(1..3600)
          UNITS           "seconds"
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Interval between two consecutive attempts 
                          made by an instance to reconnect to a 
                          controller increases exponentially till it 
                          reaches the value specified by this MIB 
                          object. All subsequent attempts use this 
                          value as the interval between retries."
          DEFVAL          { 60 }
          ::= { hpicfOpenFlowInstanceEntry 15} 

  hpicfOpenFlowInstanceRowStatus  OBJECT-TYPE
          SYNTAX          RowStatus
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Row status for this table."
          ::= { hpicfOpenFlowInstanceEntry 16}

  hpicfOpenFlowInstanceProbeInterval OBJECT-TYPE
          SYNTAX          Unsigned32(1..3600)
          UNITS           "seconds"
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This MIB object specifies the interval 
                          between two consecutive probes sent from 
                          an instance to the controller. This MIB 
                          value also determines how soon the instance 
                          will enter the connection interruption mode. 
                          If the instance does not hear a reply from 
                          the controller for three consecutive probes, 
                          it will flag the controller as unreachable 
                          and enter connection interruption mode."
          DEFVAL          { 10 }
          ::= { hpicfOpenFlowInstanceEntry 17}
       
  hpicfOpenFlowInstanceProtoVersion       OBJECT-TYPE    
          SYNTAX          INTEGER {
                                    v1dot0 (1),
                                    v1dot3 (2)
                                  }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This MIB object specifies the 
                           OpenFlow instance protocol version."
          DEFVAL          { v1dot3 }
          ::= { hpicfOpenFlowInstanceEntry 18} 

  hpicfOpenFlowInstanceProtoVersionOnly   OBJECT-TYPE    
          SYNTAX          TruthValue
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Setting this MIB object to true will support 
                           only the specific version mentioned by 
                           hpicfOpenFlowInstanceProtoVersion MIB and not 
                           compatible with lower versions."
          DEFVAL           { false }
          ::= { hpicfOpenFlowInstanceEntry 19} 

  hpicfOpenFlowInstanceNumOfSwFlowTable        OBJECT-TYPE    
          SYNTAX          Unsigned32              
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This MIB object specifies the number of 
                           software flow tables for this OpenFlow 
                           instance. The maximum value supported is 8. 
                           This object is applicable only for 
                           an OpenFlow version 1.3 instance." 
          DEFVAL           { 1 }
          ::= { hpicfOpenFlowInstanceEntry 20} 

  hpicfOpenFlowInstanceOperStatusReason   OBJECT-TYPE
          SYNTAX          INTEGER{
                                    notApplicable(1),
                                    hardwareResourcesUnavailable(2),
                                    memberVLANNotConfigured(3),
                                    memberVLANRemoved(4),
                                    noValidPortsInMemberVLAN(5),
                                    controllerVLANNotConfigured(6),
                                    enableFailedInHardware(7),
                                    disabled(8)
                                  }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the reason for 
                           hpicfOpenFlowInstanceOperStatus to be down."
          ::= { hpicfOpenFlowInstanceEntry 21}

   hpicfOpenFlowInstanceEgressOnlyPorts      OBJECT-TYPE
          SYNTAX          PortList
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the list of egress 
                           only ports for this OpenFlow instance." 
          ::=   { hpicfOpenFlowInstanceEntry 22}

   hpicfOpenFlowInstanceCapabilities   OBJECT-TYPE
          SYNTAX          BITS {
                                  flowStatistics (0),
                                  tableStatistics (1),
                                  portStatistics (2),
                                  groupStatistics (3),
                                  meterStatistics (4),
                                  blockPorts (5)
                          }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the instance 
                           capabilities exchanged with the controller." 
          ::=   { hpicfOpenFlowInstanceEntry 23}

  hpicfOpenFlowInstanceHwTableMissCount   OBJECT-TYPE       
          SYNTAX          Counter64
          MAX-ACCESS      read-only
          STATUS          current             
          DESCRIPTION     "This MIB object specifies the number of 
                          packets which do not match any rules in the
                          hardware table. This object is applicable
                          only for an OpenFlow version 1.0 instance."
          ::=   { hpicfOpenFlowInstanceEntry 24}

  hpicfOpenFlowInstanceTableModel        OBJECT-TYPE
          SYNTAX         INTEGER     {
                                     none(1),
                                     singleTable (2),
                                     policyEngineAndSoftware (3),
                                     ipControlWithPolicyEngineAndSoftware (4),
                                     customPipeline (5)
                                     }
          MAX-ACCESS     read-only
          STATUS         current
          DESCRIPTION    "This MIB object determines the table model
                          of an OpenFlow instance."              
          ::=   { hpicfOpenFlowInstanceEntry 25}

  hpicfOpenFlowInstanceMembers OBJECT-TYPE
          SYNTAX         VidList
          MAX-ACCESS     read-write
          STATUS         current
          DESCRIPTION    "This MIB object is used to add member VLANs to an 
                          OpenFlow instance."
        ::= { hpicfOpenFlowInstanceEntry 26 }

  hpicfOpenFlowInstancePipelineModel OBJECT-TYPE
          SYNTAX         INTEGER     {
                                     none(0),
                                     standardMatch(1),
                                     ipcontrolTable(2),
                                     customPipeline(3)
                                     }
          MAX-ACCESS     read-write
          STATUS         current
          DESCRIPTION    "This MIB object is used to configure the openflow 
                          instance pipeline model.
                          A value of 0(none) indicates no table pipeline model
                          which is equal to standard match.
                          A value of 1(standardMatch) enables an instance in 
                          advertising its policy-engine and software tables.
                          A value of 2(ipControlTable) enables an OpenFlow 1.3
                          instance in advertising its IP control table.
                          A value of 3(customPipeline) enables  an OpenFlow
                          controller to create a custom OpenFlow table pipeline in
                          the OpenFlow 1.3 instance."

          DEFVAL          { none } 
          ::=   { hpicfOpenFlowInstanceEntry 27}

   
   hpicfOpenFlowInstanceDatapathDesc OBJECT-TYPE
           SYNTAX      DisplayString (SIZE(0..255))
           MAX-ACCESS  read-write
           STATUS      current
           DESCRIPTION
                       "This MIB object is a user-defined description of the data 
                        path. If not set, hpicfOpenFlowInstanceName is used."
           ::=   { hpicfOpenFlowInstanceEntry 28 }

  hpicfOpenFlowInstanceSourceMacGrpTable       OBJECT-TYPE
          SYNTAX  INTEGER {
                          enable (1),
                          disable (2)
                          }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object is used to enable or disable the source
                          MAC group table in the OpenFlow pipeline. This MIB
                          object can be set to 'enable' only on one instance."
         DEFVAL          { disable }
          ::= { hpicfOpenFlowInstanceEntry 29}


  hpicfOpenFlowInstanceDestMacGrpTable       OBJECT-TYPE
          SYNTAX  INTEGER {
                          enable (1),
                          disable (2)
                          }
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object is used to enable or disable the destination
                          MAC group table in the OpenFlow table. This MIB
                          object can be set to 'enable' only on one instance."
         DEFVAL          { disable }
          ::= { hpicfOpenFlowInstanceEntry 30}

  hpicfOpenFlowInstanceMissRuleDefaultAction OBJECT-TYPE
          SYNTAX         INTEGER     {
                                     none(0),
                                     drop(1),
                                     normal(2),
                                     ctrl(3)
                                     }
          MAX-ACCESS     read-write
          STATUS         current
          DESCRIPTION    "This MIB object is used to configure the flow miss
                          action associated with the instance.
                          A value of 0(none) indicates no flow miss action 
                          specified, which is to drop all unknown packets.
                          A value of 1(drop) enables an instance to drop all
                          unknown packets.
                          A value of 2(normal) enables an instance to forward
                          all unknown packets using non-OpenFlow pipeline.
                          A value of 3(ctrl) enables an instance to forward
                          all unknown packets to the OpenFlow controller."

          DEFVAL          { none }
          ::=   { hpicfOpenFlowInstanceEntry 31}

  hpicfOpenFlowInstanceOverrideProtocol OBJECT-TYPE
          SYNTAX         BITS     {
                                     stp(0),
                                     gvrp(1),
                                     mvrp(2),
                                     lacp(3),
                                     dot1x(4),
                                     udld(5),
                                     loopprotect(6),
                                     pvst(7),
                                     smartlink(8),
                                     dldp(9),
                                     bonjour(10),
                                     traditionalPipeline(11),
                                     all(31)
                                     }
          MAX-ACCESS     read-write
          STATUS         current
          DESCRIPTION    "This MIB object is used to configure the Override
                          protocol associated with the instance."
          ::=   { hpicfOpenFlowInstanceEntry 32}

  hpicfOpenFlowInstancePktInVlanTagging OBJECT-TYPE
          SYNTAX         INTEGER     {
                                     default(0),
                                     inputForm(1),
                                     tagAlways(2),
                                     untagAlways(3)
                                     }
          MAX-ACCESS     read-write
          STATUS         current
          DESCRIPTION    "This MIB object is used to configure the 802.1q
                          tagging property for a packet encapsulated inside
                          the OpenFlow packet-in header.
                          A value of 0 (default) indicates the default behavior
                          which is the packet encapsulated inside a packet-in
                          message will be tagged in the following cases
                          a) the instance type is aggregate.
                          b) the instance is a named instance with more than one
                             member VLAN.
                          c) the instance is a named instance and the packet was
                             received with a tag.
                          It will be untagged in all other cases.
                          A value of 1 (inputForm) directs the instance to send
                          the encapsulated packet as it was received on the
                          physical port.
                          A value of 2 (tagAlways) directs the instance to send
                          the encapsulated packet always with an 802.1q tag
                          irrespective of how it was received on the physical
                          port.
                          A value of 3 (untagAlways) directs the instance to
                          send the encapsulated packet always without an 802.1q
                          tag irrespective of how it was received on the
                          physical port."

          DEFVAL          { default }
          ::=   { hpicfOpenFlowInstanceEntry 33}

----------------------------------------------------------
-- OpenFlow member table for OpenFlow instances
----------------------------------------------------------

  hpicfOpenFlowInstanceMembershipTable    OBJECT-TYPE  
          SYNTAX          SEQUENCE OF HpicfOpenFlowInstanceMembershipEntry
          MAX-ACCESS      not-accessible
          STATUS          deprecated
          DESCRIPTION     "Table used to add members to OpenFlow instances.
                           This table is deprecated and instead object
                           hpicfOpenFlowInstanceMembers is used to configure members 
                           for an OpenFlow instance."
          ::= { hpicfOpenFlowObjects 5 } 

  hpicfOpenFlowInstanceMembershipEntry    OBJECT-TYPE
          SYNTAX          HpicfOpenFlowInstanceMembershipEntry
          MAX-ACCESS      not-accessible
          STATUS          deprecated
          DESCRIPTION     "A set of objects that are used to add members
                          to an OpenFlow instance."
          INDEX           {
                          hpicfOpenFlowInstanceName,
                          ifIndex
                          }
          ::= { hpicfOpenFlowInstanceMembershipTable 1 }
   
  HpicfOpenFlowInstanceMembershipEntry ::= 
          SEQUENCE {
                   hpicfOpenFlowInstanceMembershipRowStatus RowStatus
                   }

  hpicfOpenFlowInstanceMembershipRowStatus        OBJECT-TYPE
          SYNTAX          RowStatus
          MAX-ACCESS      read-create
          STATUS          deprecated
          DESCRIPTION     "Row status for this member."
          ::=   {hpicfOpenFlowInstanceMembershipEntry 2}
    
----------------------------------------------------------
-- OpenFlow controller table for OpenFlow instances
----------------------------------------------------------

  hpicfOpenFlowControllerTable    OBJECT-TYPE  
          SYNTAX          SEQUENCE OF HpicfOpenFlowControllerEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Table used to configure controllers. For
                          maximum number of OpenFlow controllers 
                          that can be supported, refer to 
                          hpicfOpenFlowMaxControllers MIB object."
          ::= { hpicfOpenFlowObjects 6 }

  hpicfOpenFlowControllerEntry      OBJECT-TYPE
          SYNTAX          HpicfOpenFlowControllerEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "A set of objects that are used to configure
                          OpenFlow Controllers."
          INDEX           {  hpicfOpenFlowControllerID}
          ::= { hpicfOpenFlowControllerTable 1 }

  HpicfOpenFlowControllerEntry ::= 
          SEQUENCE {
                  hpicfOpenFlowControllerID                    Integer32,
                  hpicfOpenFlowControllerInetAddressType       InetAddressType,
                  hpicfOpenFlowControllerInetAddress           InetAddress,
                  hpicfOpenFlowControllerPort                  InetPortNumber,
                  hpicfOpenFlowControllerInterface             InterfaceIndex,
                  hpicfOpenFlowControllerRowStatus             RowStatus,
                  hpicfOpenFlowControllerSourceAddressType     InetAddressType,
                  hpicfOpenFlowControllerSourceAddress         InetAddress
                  }

  hpicfOpenFlowControllerID OBJECT-TYPE
          SYNTAX          Integer32 (1..65535)
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Unique ID given to a Controller. This will be 
                          associated with an instance through 
                          hpicfOpenFlowInstanceControllerTable."
          ::= { hpicfOpenFlowControllerEntry 1}

  hpicfOpenFlowControllerInetAddressType  OBJECT-TYPE
          SYNTAX          InetAddressType
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Address type of this controller. This 
                          implementation supports only ipv4 type."
          ::=   {hpicfOpenFlowControllerEntry 2}

  hpicfOpenFlowControllerInetAddress      OBJECT-TYPE
          SYNTAX          InetAddress
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "IP Address of the controller."
          ::=   {hpicfOpenFlowControllerEntry 3}

  hpicfOpenFlowControllerPort     OBJECT-TYPE
          SYNTAX          InetPortNumber
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "The port over which the controller can be 
                          reached."
          ::=   {hpicfOpenFlowControllerEntry 4}

  hpicfOpenFlowControllerInterface        OBJECT-TYPE
          SYNTAX          InterfaceIndex
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This MIB object specifies an interface over 
                          which the controller is reachable."
          ::= { hpicfOpenFlowControllerEntry 5}  

  hpicfOpenFlowControllerRowStatus        OBJECT-TYPE
          SYNTAX          RowStatus
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Row status for this table. The 
                          hpicfOpenFlowControllerInetAddress and 
                          hpicfOpenFlowControllerInterface MIB objects 
                          have to be set to valid values to move this 
                          object to 'active' state. This conceptual row 
                          can be deleted only if the corresponding 
                          controller association is removed from the 
                          hpicfOpenFlowInstanceControllerTable." 
          ::=   {hpicfOpenFlowControllerEntry 6}

  hpicfOpenFlowControllerSourceAddressType  OBJECT-TYPE
          SYNTAX          InetAddressType
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Address type of the Source IP. This
                          implementation supports only ipv4 type."
          ::=   {hpicfOpenFlowControllerEntry 7}

  hpicfOpenFlowControllerSourceAddress      OBJECT-TYPE
          SYNTAX          InetAddress
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Source IP address to use when connecting
                           to the controller."
          ::=   {hpicfOpenFlowControllerEntry 8}

----------------------------------------------------------
-- OpenFlow Instance-Controller Connection State table
----------------------------------------------------------

  hpicfOpenFlowInstanceControllerTable    OBJECT-TYPE  
          SYNTAX          SEQUENCE OF HpicfOpenFlowInstanceControllerEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Table that contains objects for connection 
                          state and status between an OpenFlow instance 
                          and a controller."
          ::= { hpicfOpenFlowObjects 8 }

  hpicfOpenFlowInstanceControllerEntry    OBJECT-TYPE
          SYNTAX          HpicfOpenFlowInstanceControllerEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "A set of objects used to monitor the status 
                          and state of connection between an OpenFlow 
                          instance and controller."
          INDEX           {
                          hpicfOpenFlowInstanceName,
                          hpicfOpenFlowControllerID 
                          }
          ::= { hpicfOpenFlowInstanceControllerTable 1 }

  HpicfOpenFlowInstanceControllerEntry ::= 
          SEQUENCE {
                    hpicfOpenFlowInstanceControllerStatus   INTEGER,
                    hpicfOpenFlowInstanceControllerState    INTEGER,   
                    hpicfOpenFlowInstanceControllerRole     INTEGER, 
                    hpicfOpenFlowInstanceControllerConnSecure TruthValue,                    
                    hpicfOpenFlowInstanceControllerRowStatus  RowStatus
                   }      

  hpicfOpenFlowInstanceControllerStatus   OBJECT-TYPE       
             SYNTAX      INTEGER {
                                connected (1),
                                disconnected (2)
                              }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "Connection status between an OpenFlow 
                          instance and a controller." 
          ::=   {hpicfOpenFlowInstanceControllerEntry 1}

  hpicfOpenFlowInstanceControllerState    OBJECT-TYPE       
          SYNTAX          INTEGER {
                                void(1),
                                backoff(2),
                                connecting(3),
                                active(4),
                                idle(5)
                          }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "Connection state between an OpenFlow 
                          instance and a controller. The state 'void'
                          implies that there is no connection. The state 
                          'backoff' represents a state where the device 
                          is attempting to reconnect to the controller 
                          at increasing intervals of time. The state 
                          'connecting' represents a state where the 
                          device is in the process of connecting to the 
                          controller. The state 'active' implies that a 
                          connection has been established and that the 
                          controller is responsive. The state 'idle' 
                          implies that the connection is idle and 
                          waiting for a response." 

          ::=   {hpicfOpenFlowInstanceControllerEntry 2}

   hpicfOpenFlowInstanceControllerRole    OBJECT-TYPE       
             SYNTAX       INTEGER {
                                equal (1),
                                conductor (2),
                                member (3)
                              }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "Role of a controller in an instance. The 
                          default role of a controller is equal. In this 
                          role, the controller has full access to the 
                          switch and is equal to other controllers in 
                          the same role. In member role, the controller 
                          has read-only access to the switch. The
                          conductor role is similar to equal and has full 
                          access to the switch, the difference is that 
                          the switch ensures it is the only controller 
                          in this role. When a controller changes its 
                          role to conductor, the switch changes all other 
                          controllers with the role conductor to have the 
                          role member." 
          ::=   {hpicfOpenFlowInstanceControllerEntry 3}

  hpicfOpenFlowInstanceControllerConnSecure       OBJECT-TYPE
          SYNTAX          TruthValue
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "This object indicates if the connection 
                          between the controller and instance is secure.
                          Setting this MIB to true will initiate TLS as 
                          transport protocol."  
          DEFVAL          { false }                                       
          ::= { hpicfOpenFlowInstanceControllerEntry 4}

  hpicfOpenFlowInstanceControllerRowStatus  OBJECT-TYPE
          SYNTAX          RowStatus
          MAX-ACCESS      read-create
          STATUS          current
          DESCRIPTION     "Row status for this table. Row transition to 
                          'createAndWait', 'notReady' and
                          'notInService' states are not allowed."
          ::= { hpicfOpenFlowInstanceControllerEntry 5}   

-- ------------------------------------------------------------
-- OpenFlow - Scalar Objects
-- ------------------------------------------------------------

  hpicfOpenFlowMaxInstances        OBJECT-TYPE
          SYNTAX          Integer32
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the maximum number 
                          of OpenFlow instances."
          ::=   { hpicfOpenFlowObjects 10}
 
  hpicfOpenFlowMaxFlows        OBJECT-TYPE
          SYNTAX          Integer32
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB objects specifies the total number 
                          of flows that can be supported on the switch. 
                          That is, the sum of all hardware flows and 
                          software flows across all OpenFlow instances 
                          cannot exceed this number."
          ::=   { hpicfOpenFlowObjects 11}

  hpicfOpenFlowMaxControllers  OBJECT-TYPE
          SYNTAX          Integer32 
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the maximum number 
                          of OpenFlow controllers."
          ::=   { hpicfOpenFlowObjects 12}

  ----------------------------------------------------------
  -- OpenFlow Instance Meter table
  ----------------------------------------------------------      
  hpicfOpenFlowInstanceMeterTable OBJECT-TYPE  
          SYNTAX          SEQUENCE OF HpicfOpenFlowInstanceMeterEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Table that contains objects related to meters
                          of an OpenFlow instance. This table is 
                          populated when meters are configured from 
                          controller."    
          ::= { hpicfOpenFlowObjects 19 }
  
  hpicfOpenFlowInstanceMeterEntry OBJECT-TYPE
          SYNTAX          HpicfOpenFlowInstanceMeterEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "A set of objects used to retrieve details 
                          about meters associated with an OpenFlow instance."      
          INDEX           {  
                                  hpicfOpenFlowInstanceName,
                                  hpicfOpenFlowInstanceMeterID                              
                          }
       ::= { hpicfOpenFlowInstanceMeterTable 1 }  

  HpicfOpenFlowInstanceMeterEntry ::= 
          SEQUENCE {
                  hpicfOpenFlowInstanceMeterID              Unsigned32,
                  hpicfOpenFlowInstanceMeterFlowCount       Unsigned32,
                  hpicfOpenFlowInstanceMeterInputPktCount   Counter64,
                  hpicfOpenFlowInstanceMeterInputByteCount  Counter64, 
                  hpicfOpenFlowInstanceMeterDuration        Unsigned32
                  }
  
  hpicfOpenFlowInstanceMeterID    OBJECT-TYPE
          SYNTAX          Unsigned32 (1..65535)
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Unique ID given to a meter."
          ::= { hpicfOpenFlowInstanceMeterEntry 1}

  hpicfOpenFlowInstanceMeterFlowCount  OBJECT-TYPE
          SYNTAX          Unsigned32
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "Number of flows on which this meter
                           is applied." 
          ::=   {hpicfOpenFlowInstanceMeterEntry 2} 

  hpicfOpenFlowInstanceMeterInputPktCount  OBJECT-TYPE
          SYNTAX         Counter64
          MAX-ACCESS     read-only
          STATUS         current
          DESCRIPTION    "Number of packets processed by this meter." 
          ::=   {hpicfOpenFlowInstanceMeterEntry 3}

  hpicfOpenFlowInstanceMeterInputByteCount OBJECT-TYPE
          SYNTAX         Counter64
          MAX-ACCESS     read-only
          STATUS         current
          DESCRIPTION    "Number of bytes processed by this meter." 
          ::=   {hpicfOpenFlowInstanceMeterEntry 4}

  hpicfOpenFlowInstanceMeterDuration   OBJECT-TYPE
          SYNTAX          Unsigned32
          UNITS           "seconds"
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "Duration for which this meter is active." 
          ::=   {hpicfOpenFlowInstanceMeterEntry 5} 

  ----------------------------------------------------------
  -- OpenFlow Instance Meter Band table
  ----------------------------------------------------------
  
  hpicfOpenFlowInstanceMeterBandTable     OBJECT-TYPE  
          SYNTAX          SEQUENCE OF HpicfOpenFlowInstanceMeterBandEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Table that contains objects related to meter 
                          bands for a specific meter in an OpenFlow 
                          instance. This table is populated when meters 
                          and their bands are configured from controller."       
          ::= { hpicfOpenFlowObjects 20 }


  hpicfOpenFlowInstanceMeterBandEntry     OBJECT-TYPE
          SYNTAX          HpicfOpenFlowInstanceMeterBandEntry
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION    "A set of objects used to retrieve details 
                          about meter bands associated with a meter and 
                          an OpenFlow instance."
          INDEX           {  
                                  hpicfOpenFlowInstanceName,
                                  hpicfOpenFlowInstanceMeterID,
                                  hpicfOpenFlowInstanceMeterBandID
                          }
       ::= { hpicfOpenFlowInstanceMeterBandTable 1 }      
  
  HpicfOpenFlowInstanceMeterBandEntry ::= 
          SEQUENCE {
                  hpicfOpenFlowInstanceMeterBandID           Unsigned32,
                  hpicfOpenFlowInstanceMeterBandType         INTEGER,
                  hpicfOpenFlowInstanceMeterBandRate         Unsigned32,
                  hpicfOpenFlowInstanceMeterBandRateUnit     INTEGER,
                  hpicfOpenFlowInstanceMeterInBandPktCount   Counter64,
                  hpicfOpenFlowInstanceMeterInBandByteCount  Counter64,
                  hpicfOpenFlowInstanceMeterPrecedenceLevel  Unsigned32
                  }
  hpicfOpenFlowInstanceMeterBandID   OBJECT-TYPE       
          SYNTAX          Unsigned32
          MAX-ACCESS      not-accessible
          STATUS          current
          DESCRIPTION     "Unique ID given to a band in a meter."            
          ::=   {hpicfOpenFlowInstanceMeterBandEntry 1}  

  hpicfOpenFlowInstanceMeterBandType   OBJECT-TYPE
          SYNTAX          INTEGER {
                                  drop(1),
                                  mark(2)
                                  }
          MAX-ACCESS      read-only 
          STATUS          current
          DESCRIPTION     "This meter band type determines how the 
                          packets are processed."
          ::=   { hpicfOpenFlowInstanceMeterBandEntry 2}    

    hpicfOpenFlowInstanceMeterBandRate   OBJECT-TYPE       
          SYNTAX          Unsigned32
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the rate beyond 
                           which the incoming packets would be treated 
                           according to action specified by
                           hpicfOpenFlowInstanceMeterBandType MIB. 
                           The units of this rate is determined by the 
                           hpicfOpenFlowInstanceMeterBandRateUnit MIB"            
          ::=   {hpicfOpenFlowInstanceMeterBandEntry 3}           

    hpicfOpenFlowInstanceMeterBandRateUnit   OBJECT-TYPE       
          SYNTAX      INTEGER {
                                kbps(1),
                                pps(2)
                              }
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "This MIB object specifies the unit for 
                           hpicfOpenFlowInstanceMeterBandRate MIB. The 
                           units can be either kilobits per second or 
                           packets per second."            
          ::=   {hpicfOpenFlowInstanceMeterBandEntry 4}

  hpicfOpenFlowInstanceMeterInBandPktCount  OBJECT-TYPE
          SYNTAX         Counter64
          MAX-ACCESS     read-only
          STATUS         current
          DESCRIPTION    "Number of packets processed by this meter." 
          ::=   {hpicfOpenFlowInstanceMeterBandEntry 5}

  hpicfOpenFlowInstanceMeterInBandByteCount OBJECT-TYPE
          SYNTAX         Counter64
          MAX-ACCESS     read-only
          STATUS         current
          DESCRIPTION    "Number of bytes processed by this meter." 
          ::=   {hpicfOpenFlowInstanceMeterBandEntry 6}

  hpicfOpenFlowInstanceMeterPrecedenceLevel   OBJECT-TYPE
          SYNTAX          Unsigned32
          MAX-ACCESS      read-only
          STATUS          current
          DESCRIPTION     "DSCP Precedence level of the band in a meter."
          ::=   {hpicfOpenFlowInstanceMeterBandEntry 7}
          
----------------------------------------------------------
-- OpenFlow Scalar Objects
----------------------------------------------------------
  hpicfOpenFlowScalarObjects OBJECT IDENTIFIER ::=
                           { hpicfOpenFlowObjects 21 }

  hpicfOpenFlowIPControlTableUsage        OBJECT-TYPE    
          SYNTAX          Unsigned32(0..100)
          UNITS           "%"
          MAX-ACCESS      read-write
          STATUS          current
          DESCRIPTION     "This object is used to specify maximum 
                          percentage of IP control table resources that 
                          can be used by OpenFlow. The percentage is not 
                          a guarantee, but a maximum allowed limit."
          DEFVAL          { 50 }
          ::= { hpicfOpenFlowScalarObjects 1}

    hpicfOpenFlowIPControlTableStatsRefreshRate OBJECT-TYPE    
        SYNTAX          Unsigned32
        UNITS           "seconds"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "This MIB object is used to specify the time interval at 
                        which the hardware will be polled for statistics. 
                        A value of '0' would mean that the hardware will no 
                        longer be polled to update the statistics."
        ::= { hpicfOpenFlowScalarObjects 2} 

   hpicfOpenFlowIpControlTableMode             OBJECT-TYPE
          SYNTAX         INTEGER  {   
                                          enable (1),
                                          disable (2) 
                                  }
          MAX-ACCESS     read-write
          STATUS         deprecated
          DESCRIPTION    "This MIB object specifies the OpenFlow
                          operation mode. In this mode, IP control table 
                          would be advertised by an OpenFlow 1.3 instance."
          ::=   { hpicfOpenFlowScalarObjects 9 }        

  hpicfOpenFlowEgressOnlyPorts       OBJECT-TYPE
          SYNTAX          INTEGER  {
                                       enable(1),
                                       disable(2)
                                   }
          MAX-ACCESS      read-write
          STATUS          current
          DESCRIPTION     "Setting this MIB object to 'enable' will
                           advertise egress-only ports to the 
                           controller."
          DEFVAL          { disable }
          ::= { hpicfOpenFlowScalarObjects 10}


-- =============================================================
-- OpenFlow - Conformance Information
-- =============================================================

  hpicfOpenFlowCompliances
          OBJECT IDENTIFIER ::= { hpicfOpenFlowConformance   1 }
  hpicfOpenFlowGroups
          OBJECT IDENTIFIER ::= { hpicfOpenFlowConformance   2 }
  
-- =============================================================
--  OpenFlow - units of conformance
-- =============================================================

  hpicfOpenFlowGlobalConfigGroup OBJECT-GROUP
          OBJECTS         {
                          hpicfOpenFlowStatus,
                          hpicfOpenFlowMaxInstances,
                          hpicfOpenFlowMaxFlows,
                          hpicfOpenFlowMaxControllers
                          }
          STATUS           current
          DESCRIPTION     "Controls the global configuration of OpenFlow 
                          status and allocation of policy engine resource."
      ::= { hpicfOpenFlowGroups   1 }

  hpicfOpenFlowInstanceGroup OBJECT-GROUP
              OBJECTS {
                          hpicfOpenFlowInstanceAdminStatus, 
                          hpicfOpenFlowInstanceListenPortCfg,
                          hpicfOpenFlowInstanceListenPort,
                          hpicfOpenFlowInstanceListenPortIsOobm,
                          hpicfOpenFlowInstanceMode,
                          hpicfOpenFlowInstanceFlowLocationMode,
                          hpicfOpenFlowConnectionInterruptionMode,        
                          hpicfOpenFlowInstanceHwRateLimit,
                          hpicfOpenFlowInstanceSwRateLimit, 
                          hpicfOpenFlowInstanceDatapathID,
                          hpicfOpenFlowInstanceNumOfHwFlows,
                          hpicfOpenFlowInstanceNumOfSwFlows,
                          hpicfOpenFlowInstanceOperStatus,
                          hpicfOpenFlowInstanceMaxBackOffInterval,   
                          hpicfOpenFlowInstanceRowStatus,
                          hpicfOpenFlowInstanceProbeInterval,
                          hpicfOpenFlowInstanceProtoVersion,
                          hpicfOpenFlowInstanceProtoVersionOnly,
                          hpicfOpenFlowInstanceNumOfSwFlowTable,
                          hpicfOpenFlowInstanceOperStatusReason,
                          hpicfOpenFlowInstanceEgressOnlyPorts,
                          hpicfOpenFlowInstanceCapabilities,
                          hpicfOpenFlowInstanceHwTableMissCount,   
                          hpicfOpenFlowInstanceTableModel
              }
      STATUS      deprecated
      DESCRIPTION "A collection of objects used to define an 
                  OpenFlow instance."
      ::= { hpicfOpenFlowGroups   2 }


  hpicfOpenFlowInstanceMembershipGroup OBJECT-GROUP
      OBJECTS {
                  hpicfOpenFlowInstanceMembershipRowStatus    
              }
      STATUS      deprecated
      DESCRIPTION "An object used to associate a member to an 
                  OpenFlow instance."
      ::= { hpicfOpenFlowGroups   3 }

  hpicfOpenFlowControllerGroup OBJECT-GROUP
      OBJECTS     {                              
                  hpicfOpenFlowControllerInetAddressType,
                  hpicfOpenFlowControllerInetAddress,
                  hpicfOpenFlowControllerPort,
                  hpicfOpenFlowControllerInterface,  
                  hpicfOpenFlowControllerRowStatus
                  }
      STATUS      deprecated
      DESCRIPTION "A collection of objects used to define 
                  controllers."
      ::= { hpicfOpenFlowGroups   4 }

  hpicfOpenFlowInstanceControllerGroup    OBJECT-GROUP
          OBJECTS {
                    hpicfOpenFlowInstanceControllerStatus,
                    hpicfOpenFlowInstanceControllerState,
                    hpicfOpenFlowInstanceControllerRole,     
                    hpicfOpenFlowInstanceControllerConnSecure,                    
                    hpicfOpenFlowInstanceControllerRowStatus                    
          }
          STATUS      current
          DESCRIPTION "A set of objects used to monitor the status 
                      and state of an OpenFlow Instance and controller 
                      connection."        
          ::= { hpicfOpenFlowGroups   6 }

  hpicfOpenFlowInstanceMeterGroup OBJECT-GROUP
          OBJECTS {                           
                          hpicfOpenFlowInstanceMeterFlowCount,
                          hpicfOpenFlowInstanceMeterInputPktCount,
                          hpicfOpenFlowInstanceMeterInputByteCount, 
                          hpicfOpenFlowInstanceMeterDuration        
                  }
          STATUS          current
          DESCRIPTION     "A collection of objects used to retrieve 
                          details about instance-specific meters."
          ::= { hpicfOpenFlowGroups   13 }

  hpicfOpenFlowInstanceMeterBandGroup OBJECT-GROUP
          OBJECTS  {      
                          hpicfOpenFlowInstanceMeterBandType,        
                          hpicfOpenFlowInstanceMeterBandRate,
                          hpicfOpenFlowInstanceMeterBandRateUnit,
                          hpicfOpenFlowInstanceMeterInBandPktCount,
                          hpicfOpenFlowInstanceMeterInBandByteCount,
                          hpicfOpenFlowInstanceMeterPrecedenceLevel
                  }
          STATUS          current
          DESCRIPTION     "A collection of objects used to retrieve 
                          details about meter band types."
          ::= { hpicfOpenFlowGroups   14 }

  hpicfOpenFlowScalarsGroup OBJECT-GROUP
          OBJECTS     {
                          hpicfOpenFlowIPControlTableUsage,
                          hpicfOpenFlowIPControlTableStatsRefreshRate,      
                          hpicfOpenFlowIpControlTableMode,
                          hpicfOpenFlowEgressOnlyPorts
                   }
          STATUS          deprecated
          DESCRIPTION     "Basic Scalars required for OpenFlow 
                          implementation."
      ::= { hpicfOpenFlowGroups   15 }

   hpicfOpenFlowInstanceGroup1 OBJECT-GROUP
              OBJECTS {
                          hpicfOpenFlowInstanceAdminStatus,
                          hpicfOpenFlowInstanceListenPortCfg,
                          hpicfOpenFlowInstanceListenPort,
                          hpicfOpenFlowInstanceListenPortIsOobm,
                          hpicfOpenFlowInstanceMode,
                          hpicfOpenFlowInstanceFlowLocationMode,
                          hpicfOpenFlowConnectionInterruptionMode,        
                          hpicfOpenFlowInstanceHwRateLimit,
                          hpicfOpenFlowInstanceSwRateLimit,
                          hpicfOpenFlowInstanceDatapathID,
                          hpicfOpenFlowInstanceNumOfHwFlows,
                          hpicfOpenFlowInstanceNumOfSwFlows,
                          hpicfOpenFlowInstanceOperStatus,
                          hpicfOpenFlowInstanceMaxBackOffInterval,   
                          hpicfOpenFlowInstanceRowStatus,
                          hpicfOpenFlowInstanceProbeInterval,
                          hpicfOpenFlowInstanceProtoVersion,
                          hpicfOpenFlowInstanceProtoVersionOnly,
                          hpicfOpenFlowInstanceNumOfSwFlowTable,
                          hpicfOpenFlowInstanceOperStatusReason,
                          hpicfOpenFlowInstanceEgressOnlyPorts,
                          hpicfOpenFlowInstanceCapabilities,
                          hpicfOpenFlowInstanceHwTableMissCount,   
                          hpicfOpenFlowInstanceTableModel,
                          hpicfOpenFlowInstanceMembers,
                          hpicfOpenFlowInstancePipelineModel,
                          hpicfOpenFlowInstanceDatapathDesc
              }
      STATUS      deprecated
      DESCRIPTION "A collection of objects used to define an 
                  OpenFlow instance."
      ::= { hpicfOpenFlowGroups   16 }

    hpicfOpenFlowScalarsGroup1 OBJECT-GROUP
          OBJECTS     {
                          hpicfOpenFlowIPControlTableUsage,
                          hpicfOpenFlowIPControlTableStatsRefreshRate,
                          hpicfOpenFlowEgressOnlyPorts
                   }
          STATUS          current
          DESCRIPTION     "Basic Scalars required for OpenFlow 
                          implementation."
      ::= { hpicfOpenFlowGroups   17 }

 hpicfOpenFlowInstanceGroup2 OBJECT-GROUP
              OBJECTS {
                          hpicfOpenFlowInstanceAdminStatus,
                          hpicfOpenFlowInstanceListenPortCfg,
                          hpicfOpenFlowInstanceListenPort,
                          hpicfOpenFlowInstanceListenPortIsOobm,
                          hpicfOpenFlowInstanceMode,
                          hpicfOpenFlowInstanceFlowLocationMode,
                          hpicfOpenFlowConnectionInterruptionMode,
                          hpicfOpenFlowInstanceHwRateLimit,
                          hpicfOpenFlowInstanceSwRateLimit,
                          hpicfOpenFlowInstanceDatapathID,
                          hpicfOpenFlowInstanceNumOfHwFlows,
                          hpicfOpenFlowInstanceNumOfSwFlows,
                          hpicfOpenFlowInstanceOperStatus,
                          hpicfOpenFlowInstanceMaxBackOffInterval,
                          hpicfOpenFlowInstanceRowStatus,
                          hpicfOpenFlowInstanceProbeInterval,
                          hpicfOpenFlowInstanceProtoVersion,
                          hpicfOpenFlowInstanceProtoVersionOnly,
                          hpicfOpenFlowInstanceNumOfSwFlowTable,
                          hpicfOpenFlowInstanceOperStatusReason,
                          hpicfOpenFlowInstanceEgressOnlyPorts,
                          hpicfOpenFlowInstanceCapabilities,
                          hpicfOpenFlowInstanceHwTableMissCount,
                          hpicfOpenFlowInstanceTableModel,
                          hpicfOpenFlowInstanceMembers,
                          hpicfOpenFlowInstancePipelineModel,
                          hpicfOpenFlowInstanceDatapathDesc,
                          hpicfOpenFlowInstanceSourceMacGrpTable,
                          hpicfOpenFlowInstanceDestMacGrpTable
              }
      STATUS      deprecated
      DESCRIPTION "A collection of objects used to define an 
                  OpenFlow instance."
      ::= { hpicfOpenFlowGroups   20 }

 hpicfOpenFlowInstanceGroup3 OBJECT-GROUP
              OBJECTS {
                          hpicfOpenFlowInstanceAdminStatus,
                          hpicfOpenFlowInstanceListenPortCfg,
                          hpicfOpenFlowInstanceListenPort,
                          hpicfOpenFlowInstanceListenPortIsOobm,
                          hpicfOpenFlowInstanceMode,
                          hpicfOpenFlowInstanceFlowLocationMode,
                          hpicfOpenFlowConnectionInterruptionMode,
                          hpicfOpenFlowInstanceHwRateLimit,
                          hpicfOpenFlowInstanceSwRateLimit,
                          hpicfOpenFlowInstanceDatapathID,
                          hpicfOpenFlowInstanceNumOfHwFlows,
                          hpicfOpenFlowInstanceNumOfSwFlows,
                          hpicfOpenFlowInstanceOperStatus,
                          hpicfOpenFlowInstanceMaxBackOffInterval,
                          hpicfOpenFlowInstanceRowStatus,
                          hpicfOpenFlowInstanceProbeInterval,
                          hpicfOpenFlowInstanceProtoVersion,
                          hpicfOpenFlowInstanceProtoVersionOnly,
                          hpicfOpenFlowInstanceNumOfSwFlowTable,
                          hpicfOpenFlowInstanceOperStatusReason,
                          hpicfOpenFlowInstanceEgressOnlyPorts,
                          hpicfOpenFlowInstanceCapabilities,
                          hpicfOpenFlowInstanceHwTableMissCount,
                          hpicfOpenFlowInstanceTableModel,
                          hpicfOpenFlowInstanceMembers,
                          hpicfOpenFlowInstancePipelineModel,
                          hpicfOpenFlowInstanceDatapathDesc,
                          hpicfOpenFlowInstanceSourceMacGrpTable,
                          hpicfOpenFlowInstanceDestMacGrpTable,
                          hpicfOpenFlowInstanceMissRuleDefaultAction,
                          hpicfOpenFlowInstanceOverrideProtocol,
                          hpicfOpenFlowInstancePktInVlanTagging
              }
      STATUS      current
      DESCRIPTION "A collection of objects used to define an
                  OpenFlow instance."
      ::= { hpicfOpenFlowGroups   21 }

  hpicfOpenFlowControllerGroup1 OBJECT-GROUP
      OBJECTS     {
                  hpicfOpenFlowControllerInetAddressType,
                  hpicfOpenFlowControllerInetAddress,
                  hpicfOpenFlowControllerPort,
                  hpicfOpenFlowControllerInterface,
                  hpicfOpenFlowControllerRowStatus,
                  hpicfOpenFlowControllerSourceAddressType,
                  hpicfOpenFlowControllerSourceAddress
                  }
      STATUS      current
      DESCRIPTION "A collection of objects used to define
                  controllers."
      ::= { hpicfOpenFlowGroups   22 }

-- =============================================================
-- OpenFlow - Compliance Statements
-- =============================================================

  hpicfOpenFlowCompliance MODULE-COMPLIANCE
      STATUS              deprecated
      DESCRIPTION         "This compliance statement is for devices 
                          supporting OpenFlow. The basic support for 
                          OpenFlow requires implementation of the 
                          objects listed in the mandatory groups."

      MODULE
          MANDATORY-GROUPS {
                          hpicfOpenFlowGlobalConfigGroup, 
                          hpicfOpenFlowInstanceGroup, 
                          hpicfOpenFlowInstanceMembershipGroup, 
                          hpicfOpenFlowControllerGroup 
                          }

      GROUP               hpicfOpenFlowInstanceControllerGroup
      DESCRIPTION         "This group is optional whose objects are used
                          to monitor the status and state of connection
                          between an OpenFlow instance and a controller."
                                     
      GROUP              hpicfOpenFlowInstanceMeterGroup
      DESCRIPTION        "A collection of objects used to retrieve 
                          details about instance-specific meters."  
                                     
      GROUP              hpicfOpenFlowInstanceMeterBandGroup
      DESCRIPTION        "A collection of objects used to retrieve 
                          details about meter band types."    
                                     
      GROUP              hpicfOpenFlowScalarsGroup    
      DESCRIPTION        "A collection of scalar objects."                    
                                                                  
      ::= { hpicfOpenFlowCompliances      1 }

  hpicfOpenFlowCompliance1 MODULE-COMPLIANCE
      STATUS              deprecated
      DESCRIPTION         "This compliance statement is for devices 
                          supporting OpenFlow. The basic support for 
                          OpenFlow requires implementation of the 
                          objects listed in the mandatory groups."

      MODULE
          MANDATORY-GROUPS {
                          hpicfOpenFlowGlobalConfigGroup, 
                          hpicfOpenFlowInstanceGroup1, 
                          hpicfOpenFlowControllerGroup 
                          }

      GROUP               hpicfOpenFlowInstanceControllerGroup
      DESCRIPTION         "This group is optional whose objects are used
                          to monitor the status and state of connection
                          between an OpenFlow instance and a controller."
                                     
      GROUP              hpicfOpenFlowInstanceMeterGroup
      DESCRIPTION        "A collection of objects used to retrieve 
                          details about instance-specific meters."  
                                     
      GROUP              hpicfOpenFlowInstanceMeterBandGroup
      DESCRIPTION        "A collection of objects used to retrieve 
                          details about meter band types."    
                                     
      GROUP              hpicfOpenFlowScalarsGroup1
      DESCRIPTION        "A collection of scalar objects."                    
                                                                  
      ::= { hpicfOpenFlowCompliances 2 }


  hpicfOpenFlowCompliance2 MODULE-COMPLIANCE
      STATUS              deprecated
      DESCRIPTION         "This compliance statement is for devices 
                          supporting OpenFlow. The basic support for 
                          OpenFlow requires implementation of the 
                          objects listed in the mandatory groups."

      MODULE
          MANDATORY-GROUPS {
                          hpicfOpenFlowGlobalConfigGroup, 
                          hpicfOpenFlowInstanceGroup2, 
                          hpicfOpenFlowControllerGroup 
                          }

      GROUP               hpicfOpenFlowInstanceControllerGroup
      DESCRIPTION         "This group is optional whose objects are used
                          to monitor the status and state of connection
                          between an OpenFlow instance and a controller."
                                     
      GROUP              hpicfOpenFlowInstanceMeterGroup
      DESCRIPTION        "A collection of objects used to retrieve 
                          details about instance-specific meters."  
                                     
      GROUP              hpicfOpenFlowInstanceMeterBandGroup
      DESCRIPTION        "A collection of objects used to retrieve 
                          details about meter band types."    
                                     
      GROUP              hpicfOpenFlowScalarsGroup1
      DESCRIPTION        "A collection of scalar objects."                    
                                                                  
      ::= { hpicfOpenFlowCompliances 3 }


  hpicfOpenFlowCompliance3 MODULE-COMPLIANCE
      STATUS              deprecated
      DESCRIPTION         "This compliance statement is for devices
                          supporting OpenFlow. The basic support for
                          OpenFlow requires implementation of the
                          objects listed in the mandatory groups."

      MODULE
          MANDATORY-GROUPS {
                          hpicfOpenFlowGlobalConfigGroup,
                          hpicfOpenFlowInstanceGroup3,
                          hpicfOpenFlowControllerGroup
                          }

      GROUP               hpicfOpenFlowInstanceControllerGroup
      DESCRIPTION         "This group is optional whose objects are used
                          to monitor the status and state of connection
                          between an OpenFlow instance and a controller."

      GROUP              hpicfOpenFlowInstanceMeterGroup
      DESCRIPTION        "A collection of objects used to retrieve
                          details about instance-specific meters."

      GROUP              hpicfOpenFlowInstanceMeterBandGroup
      DESCRIPTION        "A collection of objects used to retrieve
                          details about meter band types."

      GROUP              hpicfOpenFlowScalarsGroup1
      DESCRIPTION        "A collection of scalar objects."

      ::= { hpicfOpenFlowCompliances 4 }

  hpicfOpenFlowCompliance4 MODULE-COMPLIANCE
      STATUS              current
      DESCRIPTION         "This compliance statement is for devices
                          supporting OpenFlow. The basic support for
                          OpenFlow requires implementation of the
                          objects listed in the mandatory groups."

      MODULE
          MANDATORY-GROUPS {
                          hpicfOpenFlowGlobalConfigGroup,
                          hpicfOpenFlowInstanceGroup3,
                          hpicfOpenFlowControllerGroup1
                          }

      GROUP               hpicfOpenFlowInstanceControllerGroup
      DESCRIPTION         "This group is optional whose objects are used
                          to monitor the status and state of connection
                          between an OpenFlow instance and a controller."

      GROUP              hpicfOpenFlowInstanceMeterGroup
      DESCRIPTION        "A collection of objects used to retrieve
                          details about instance-specific meters."

      GROUP              hpicfOpenFlowInstanceMeterBandGroup
      DESCRIPTION        "A collection of objects used to retrieve
                          details about meter band types."

      GROUP              hpicfOpenFlowScalarsGroup1
      DESCRIPTION        "A collection of scalar objects."

      ::= { hpicfOpenFlowCompliances 5 }
END
