-- HP Enterprise Service Tunnel MIB

HP-ICF-SERVICE-TUNNEL-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, 
    Unsigned32, Counter64, NOTIFICATION-TYPE,
    TimeTicks
        FROM SNMPv2-SMI             -- [RFC2578]
    OBJECT-GROUP, MODULE-COMPLIANCE, 
    NOTIFICATION-GROUP
        FROM SNMPv2-CONF
   TruthValue
        FROM SNMPv2-TC              -- [RFC2579]
   ifIndex, ifAlias  FROM IF-MIB    -- [RFC2863]
    SnmpAdminString
         FROM SNMP-FRAMEWORK-MIB
    tunnelIfEntry, tunnelInetConfigEntry
            FROM TUNNEL-MIB
    hpSwitch
        FROM HP-ICF-OID;

    hpicfServiceTunnel  MODULE-IDENTITY
        LAST-UPDATED "201406170000Z"
        ORGANIZATION "HP Networking"
        CONTACT-INFO 
            "Hewlett-Packard Company
             8000 Foothills Blvd.
             Roseville, CA 95747"
        DESCRIPTION 
        "This MIB module contains HP proprietary objects for managing 
	 service tunnels."

        REVISION      "201406170000Z"   -- June 17, 2014
        DESCRIPTION
             "Added support for Tap Tunnels"

        REVISION "201306130000Z"       -- June 13, 2013 at 00:00 GMT
        DESCRIPTION
            "Initial Revision."
        ::= { hpSwitch 100 }

--
--- MIB objects
--
   hpicfServiceTunnelNotifications           OBJECT IDENTIFIER ::= 
                                                 {hpicfServiceTunnel 0}
   hpicfServiceTunnelConfigurationObjects    OBJECT IDENTIFIER ::= 
                                                 {hpicfServiceTunnel 1}
   hpicfServiceTunnelStatisticsObjects	     OBJECT IDENTIFIER ::= 
                                                 {hpicfServiceTunnel 2}                                              
   hpicfServiceTunnelConformance	     OBJECT IDENTIFIER ::= 
                                                 {hpicfServiceTunnel 3}                                              
   hpicfServiceTunnelScalars    	     OBJECT IDENTIFIER ::= 
                                                 {hpicfServiceTunnelConfigurationObjects 1}
   hpicfServiceTunnelScalarStats             OBJECT IDENTIFIER ::= 
                                                 {hpicfServiceTunnelStatisticsObjects 1}


--
--- Service Tunnel  Scalars
--

   hpicfMaxIPv4ServiceTunnels OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum number of IPv4 service tunnels supported 
                 on the device which is a sum of maximum Inspect 
                 and Tap tunnels."
    ::= { hpicfServiceTunnelScalars 1 }

   hpicfTotalIPv4ServiceTunnels OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Total number of IPv4 service tunnels configured 
                 on the device.This includes both Inspect and 
                 Tap tunnels"
    ::= { hpicfServiceTunnelScalars 2 }

   hpicfMaxInterceptServiceTunnels OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum number of Inspect service tunnels supported 
                 on the device."
    ::= { hpicfServiceTunnelScalars 3 }

   hpicfTotalIPv4InterceptServiceTunnels OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Total number of IPv4 service tunnels of type Inspect configured 
                 on the device."
    ::= { hpicfServiceTunnelScalars 4 }

   hpicfMaxIPv4TapServiceTunnels  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Maximum number of IPv4 service tunnels of type Tap supported 
                 on the device." 
    ::= { hpicfServiceTunnelScalars 5 }

   hpicfTotalIPv4TapServiceTunnels  OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Total number of IPv4 service tunnels of type Tap configured 
                 on the device."
    ::= { hpicfServiceTunnelScalars 6 }

--
--- Service Tunnel configuration Table
--
   hpicfServiceTunnelTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF HpicfServiceTunnelEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION "Table containing information on service tunnels. These are
                class of IP tunnels that can be used to encapsulate Ethernet
                frames along with the MAC and VLAN headers."
   ::= { hpicfServiceTunnelConfigurationObjects 2 }

   hpicfServiceTunnelEntry OBJECT-TYPE
   SYNTAX      HpicfServiceTunnelEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION "An entry containing the information on a particular service 
                tunnel."
   AUGMENTS    { tunnelInetConfigEntry }
   ::= { hpicfServiceTunnelTable 1 }

   HpicfServiceTunnelEntry ::=
   SEQUENCE {
            hpicfServiceTunnelType                  INTEGER,
            hpicfServiceTunnelName                  SnmpAdminString
        }

   hpicfServiceTunnelType OBJECT-TYPE
    SYNTAX INTEGER {
                     none(0),
                     intercept(1),
                     tap(2)                    
                   }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION  "This object is used to configure the service tunnel type.

                  A value of none(0) indicates that this is not a service tunnel.

                  A value of intercept(1) indicates that the service tunnel type
                  is intercept. Intercept tunnels are to be used by applications
                  that want to intercept and inspect traffic flowing through a
                  device and re-insert traffic back to the device for
                  forwarding after inspection.
				 
				  A value of tap(2) indicates that the service tunnel is of type  
                  Tap. Tap tunnels are used by applications that want to mirror 
                  traffic flowing through the device."

    DEFVAL { none }
    ::= { hpicfServiceTunnelEntry 1 }
    
  hpicfServiceTunnelName OBJECT-TYPE
   SYNTAX      SnmpAdminString 
   MAX-ACCESS  read-create
   STATUS      current
   DESCRIPTION "This object is used to assign a textual name to the tunnel 
                interface."
      ::= { hpicfServiceTunnelEntry 2 }    

--
--- Service Tunnel Interface Configuration - Table
--

   hpicfServiceTunnelIfTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF HpicfServiceTunnelIfEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION "Table containing information on service tunnels. These are  
                IP tunnels that can be used to encapsulate Ethernet frames
                along with the MAC and VLAN headers."
   ::= { hpicfServiceTunnelConfigurationObjects 3 }

   hpicfServiceTunnelIfEntry OBJECT-TYPE
   SYNTAX      HpicfServiceTunnelIfEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION "An entry containing the information on a particular service 
                tunnel."
   AUGMENTS    { tunnelIfEntry }
   ::= { hpicfServiceTunnelIfTable 1 }

   HpicfServiceTunnelIfEntry ::=
   SEQUENCE {
       hpicfServiceTunnelIfMTU                 Unsigned32,
       hpicfServiceTunnelInterfaceStatus       INTEGER,
       hpicfServiceTunnelInterfaceDownReason   INTEGER,
       hpicfServiceTunnelInterfaceTruncate     INTEGER 
     }

   hpicfServiceTunnelIfMTU    OBJECT-TYPE
   SYNTAX      Unsigned32
   MAX-ACCESS  read-create   
   STATUS      current
   DESCRIPTION "The size of the largest packet which can be sent or 
                received on the interface, specified in octets.  For   
                interfaces that are used for transmitting network  
                datagrams, this is the size of the largest network 
                datagram that can be sent on the interface."
  
   ::= { hpicfServiceTunnelIfEntry 1 }

   hpicfServiceTunnelInterfaceStatus OBJECT-TYPE
   SYNTAX      INTEGER {up (1), down (2)}
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "This object indicates the operational state of the  
                tunnel interface."
   ::= { hpicfServiceTunnelIfEntry 2 }

   hpicfServiceTunnelInterfaceDownReason OBJECT-TYPE
   SYNTAX    INTEGER {
               	  notApplicable        (0),
               	  resourceUnavailable  (1),
                  noRouteToDestination (2),
                  ifAdminDown          (3)
                  }
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION "If the tunnelinterface state is DOWN, this object 
             indicates the reason for which it is down."
    ::= { hpicfServiceTunnelIfEntry 3 } 

   hpicfServiceTunnelInterfaceTruncate OBJECT-TYPE
   SYNTAX      INTEGER {
                   enabled(1),
                   disabled(2)
               }
   MAX-ACCESS  read-write
   STATUS      current
   DESCRIPTION "Enables partial payloads to be sent on the Tap tunnels in case 
                of MTU violations."
   DEFVAL { disabled }
   ::= { hpicfServiceTunnelIfEntry 4 }  

--
--- Service Tunnel Statistics - Scalars
--

   hpicfServiceTunnelStatsRxInvalidKey OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of encapsulated packets to un-configured tunnel interfaces
                of type Intercept. This is not applicable to Tap tunnels."
   ::= { hpicfServiceTunnelScalarStats 1 }

   hpicfServiceTunnelStatsRxFragmentDrops OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of fragmented packets received and dropped 
                on tunnel interface. This is not applicable to Tap tunnels."
   ::= { hpicfServiceTunnelScalarStats 2 }

   hpicfServiceTunnelStatsTxMTUViolationDrop OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of packets not transmitted on the tunnel 
                   interface for MTU violation reasons. This is common to all
                   service tunnel types."
   ::= { hpicfServiceTunnelScalarStats 3 }

   hpicfServiceTunnelStatsUnknownSrcMac OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of packets received on tunnel interfaces 
                but dropped because the source MAC address 
                of the frame is not present in the FDB.
                This is not applicable to Tap tunnels."
   ::= { hpicfServiceTunnelScalarStats 4 }


   hpicfServiceTunnelStatsScalarClear OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write    
    STATUS      current
    DESCRIPTION "This object clears  tunnel statistics when set to 
                 TRUE. A GET request for this object always returns FALSE."
   ::= { hpicfServiceTunnelScalarStats 5 }

   
--
--- Service Tunnel Interface Statistics - Table
--

   hpicfServiceTunnelStatsIfTable OBJECT-TYPE
   SYNTAX      SEQUENCE OF HpicfServiceTunnelStatsIfEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION "Table containing statistics information on service 
                tunnels. Service Tap tunnels are uni-directional  
                and will not receive packets. Hence the MIB objects 
                for Rx Statistics are not applicable for Tap tunnels
                and will always be 0."
   ::= { hpicfServiceTunnelStatisticsObjects 2 }

   hpicfServiceTunnelStatsIfEntry OBJECT-TYPE
   SYNTAX      HpicfServiceTunnelStatsIfEntry
   MAX-ACCESS  not-accessible
   STATUS      current
   DESCRIPTION "An entry containing  statistics information on a 
                particular service tunnel."
   AUGMENTS    { tunnelIfEntry }
   ::= { hpicfServiceTunnelStatsIfTable 1 }

   HpicfServiceTunnelStatsIfEntry ::=
   SEQUENCE {
      hpicfServiceTunnelStatsRxPackets               Counter64,
      hpicfServiceTunnelStatsTxPackets               Counter64,
      hpicfServiceTunnelStatsRxHeartbeat             Counter64,
      hpicfServiceTunnelStatsTxHeartbeat             Counter64,      
      hpicfServiceTunnelLastHeartbeatPacketTimestamp TimeTicks,
      hpicfServiceTunnelStatsClear                   TruthValue
     }

   hpicfServiceTunnelStatsRxPackets OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of packets received on the tunnel interface."
   ::= { hpicfServiceTunnelStatsIfEntry 1 }

   hpicfServiceTunnelStatsTxPackets OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of packets transmitted out of the tunnel interface."
   ::= { hpicfServiceTunnelStatsIfEntry 2 }
   
   hpicfServiceTunnelStatsRxHeartbeat OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of heartbeat packets received on the tunnel interface."
   ::= { hpicfServiceTunnelStatsIfEntry 3 }

  hpicfServiceTunnelStatsTxHeartbeat OBJECT-TYPE
   SYNTAX      Counter64
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "Number of heartbeat packets transmitted out of 
                the tunnel interface."
   ::= { hpicfServiceTunnelStatsIfEntry 4 }

   hpicfServiceTunnelLastHeartbeatPacketTimestamp OBJECT-TYPE
   SYNTAX      TimeTicks
   MAX-ACCESS  read-only
   STATUS      current
   DESCRIPTION "The value of 'SysUpTime' correspondign to last heartbeat
               packet that was received on this tunnel."
   ::= { hpicfServiceTunnelStatsIfEntry 5 }   


   hpicfServiceTunnelStatsClear    OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION "This object clears  tunnel interface statistics when set to  
                 TRUE. A GET request for this object always returns FALSE."
   ::= { hpicfServiceTunnelStatsIfEntry 6 }


--
--   service Tunnel Notifications
--

   hpicfServiceTunnelIfUp NOTIFICATION-TYPE
   OBJECTS      {
                   ifIndex,
                   ifAlias
                }
  STATUS       current
  DESCRIPTION "An hpicfServiceTunnelIfUp trap is sent when the 
               the hpicfServiceTunnelInterfaceStatus object for a tunnel  
               changes from DOWN to UP."
   ::= { hpicfServiceTunnelNotifications 1 }


   hpicfServiceTunnelIfDown NOTIFICATION-TYPE
   OBJECTS    {
                 ifIndex,   
                 ifAlias,
                 hpicfServiceTunnelInterfaceDownReason                  
              }
  STATUS       current
  DESCRIPTION "An hpicfServiceTunnelIfDown trap is sent when the 
               hpicfServiceTunnelInterfaceStatus object for a tunnel
               changes from UP to DOWN state."
   ::= { hpicfServiceTunnelNotifications 2 }


-- =============================================================
-- service tunnel - Conformance Information
-- =============================================================
    hpicfServiceTunnelCompliances
    OBJECT IDENTIFIER ::= { hpicfServiceTunnelConformance   1 }
    hpicfServiceTunnelGroups
    OBJECT IDENTIFIER ::= { hpicfServiceTunnelConformance   2 }

-- ============================================================

--  service tunnel - units of conformance
-- =============================================================
      
   hpicfServiceTunnelCompliance MODULE-COMPLIANCE
   STATUS  current
   DESCRIPTION
          "The compliance statement for the service tunnel MIB."
   MODULE  -- this module
   MANDATORY-GROUPS { hpicfServiceScalarsGroup,
                      hpicfServiceScalarsStatsGroup, 
                      hpicfServiceTunnelGroup, 
                      hpicfServiceTunnelStatsGroup, 
                      hpicfServiceTunnelNotificationGroup,
                      hpicfServiceScalarsGroup1,
					  hpicfServiceTunnelGroup1
                   }
   ::= { hpicfServiceTunnelCompliances 1 }

    hpicfServiceScalarsGroup OBJECT-GROUP
    OBJECTS  {
              hpicfMaxIPv4ServiceTunnels,
              hpicfTotalIPv4ServiceTunnels
             }
    STATUS   current
    DESCRIPTION
        "The collection of objects providing information about the service tunnel."
      ::= { hpicfServiceTunnelGroups 1 }

    hpicfServiceScalarsGroup1 OBJECT-GROUP
    OBJECTS  {
              hpicfMaxIPv4ServiceTunnels,
              hpicfTotalIPv4ServiceTunnels,
              hpicfMaxInterceptServiceTunnels,
              hpicfTotalIPv4InterceptServiceTunnels,
              hpicfMaxIPv4TapServiceTunnels,
              hpicfTotalIPv4TapServiceTunnels
             }
    STATUS   current
    DESCRIPTION
        "The collection of objects providing information about the service tunnel."
      ::= { hpicfServiceTunnelGroups 6 }

    hpicfServiceScalarsStatsGroup OBJECT-GROUP
    OBJECTS  {
              hpicfServiceTunnelStatsRxInvalidKey,
              hpicfServiceTunnelStatsRxFragmentDrops,
              hpicfServiceTunnelStatsTxMTUViolationDrop,
              hpicfServiceTunnelStatsUnknownSrcMac,
              hpicfServiceTunnelStatsScalarClear
             }
    STATUS   current
    DESCRIPTION
        "The collection of objects providing information about the service tunnel statistics."
      ::= { hpicfServiceTunnelGroups 2 }


    hpicfServiceTunnelGroup OBJECT-GROUP
    OBJECTS  {  
               hpicfServiceTunnelType,
               hpicfServiceTunnelName,
               hpicfServiceTunnelIfMTU,
               hpicfServiceTunnelInterfaceStatus,
               hpicfServiceTunnelInterfaceDownReason 
           }
    STATUS   current
    DESCRIPTION
	"The collection of objects providing information about the service tunnel."
      ::= { hpicfServiceTunnelGroups 3 }

    hpicfServiceTunnelGroup1 OBJECT-GROUP
    OBJECTS  {  
               hpicfServiceTunnelType,
               hpicfServiceTunnelName,
               hpicfServiceTunnelIfMTU,
               hpicfServiceTunnelInterfaceStatus,
               hpicfServiceTunnelInterfaceDownReason,
               hpicfServiceTunnelInterfaceTruncate 
           }
    STATUS   current
    DESCRIPTION
	"The collection of objects providing information about the service tunnel."
      ::= { hpicfServiceTunnelGroups 7 }

    hpicfServiceTunnelStatsGroup OBJECT-GROUP
    OBJECTS  {
              hpicfServiceTunnelStatsRxPackets,
              hpicfServiceTunnelStatsTxPackets,
              hpicfServiceTunnelStatsRxHeartbeat,
              hpicfServiceTunnelStatsTxHeartbeat,
              hpicfServiceTunnelLastHeartbeatPacketTimestamp,
              hpicfServiceTunnelStatsClear  
            }
	STATUS   current
   	DESCRIPTION
	"The collection of objects providing information about the service tunnel statistics."
      ::= { hpicfServiceTunnelGroups 4}

    hpicfServiceTunnelNotificationGroup   NOTIFICATION-GROUP
            NOTIFICATIONS {
                            hpicfServiceTunnelIfUp,
                            hpicfServiceTunnelIfDown
                          }

            STATUS          current
            DESCRIPTION   "Group of notifications."
            ::= { hpicfServiceTunnelGroups 5 }


END 
