HP-ICF-DHCPv6-RELAY DEFINITIONS ::= BEGIN

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


hpicfDhcpv6Relay MODULE-IDENTITY
    LAST-UPDATED "201402120000Z"      -- Feb 12, 2014 
    ORGANIZATION "HP Networking"
    CONTACT-INFO
        "Hewlett-Packard Company
        8000 Foothills Blvd.
        Roseville, CA 95747"
    DESCRIPTION
        "The Dynamic Host Configuration Protocol (DHCPv6) is one of 
         the options available for a Device to obtain IPv6 address 
         automatically. In a trivial deployment, this is achieved 
         by having the Client and Server on the same local network. 
         DHCPv6 Relay is a feature that facilitates IPv6 address 
         assignment across multiple networks or subnets by forwarding
         client service requests and server responses in a transparent
         manner.This MIB provides a means to configure and monitor
         DHCPv6 Relay feature on the Switch."

    REVISION     "201402120000Z"
    DESCRIPTION  "Added hpicfDhcpv6RelayOptions scalar group 
                  and added the following object,
                    hpicfDhcpv6RelayOption79Status.
                    Added hpicfDhcpRelayConfigGroup1 and
                    hpicfDhcpRelayCompliance2.
                    deprecated hpicfDhcpRelayConfigGroup and
                    hpicfDhcpRelayCompliance1."

    REVISION     "201204240000Z"
    DESCRIPTION  "Added hpicfDhcpRelayGlobalStatistics scalar group 
                  and added the following statistical objects,
                    hpicfDhcpRelayPktsDropped,
                    hpicfDhcpRelayErrorPktsDropped,
                    hpicfDhcpRelayTotalPktsReceived,
                    hpicfDhcpRelaySolicitPktsReceived,
                    hpicfDhcpRelayRequestPktsReceived,
                    hpicfDhcpRelayConfirmPktsReceived,
                    hpicfDhcpRelayRenewPktsReceived,
                    hpicfDhcpRelayRebindPktsReceived,
                    hpicfDhcpRelayReleasePktsReceived,
                    hpicfDhcpRelayDeclinePktsReceived,
                    hpicfDhcpRelayInformationReqPktsReceived,
                    hpicfDhcpRelayRelayForwardPktsReceived,
                    hpicfDhcpRelayRelayReplyPktsReceived,
                    hpicfDhcpRelayTotalPktsSent,
                    hpicfDhcpRelayAdvertisePktsSent,
                    hpicfDhcpRelayReconfigurePktsSent,
                    hpicfDhcpRelayReplyPktsSent,
                    hpicfDhcpRelayRelayForwardPktsSent,
                    hpicfDhcpRelayRelayReplyPktsSent.
		    Added hpicfDhcpRelayStatsGroup1 and 
                    hpicfDhcpRelayCompliance1.
                    deprecated hpicfDhcpRelayStatsGroup and
                    hpicfDhcpRelayCompliance."

    REVISION     "200804080605Z" 
    DESCRIPTION  "Initial Revision"

    ::= { hpSwitch 50 }


hpicfDhcpv6RelayAdminStatus OBJECT-TYPE
    SYNTAX INTEGER  { 
        enabled (1),
        disabled (2)
    }
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "The global administrative status of the DHCPv6 relay. This object
         indicates if the DHCPv6 relay has been administratively enabled or
         disabled on the device."
    ::= { hpicfDhcpv6Relay 1 }


hpicfDhcpRelayHelperAddressTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpicfDhcpRelayHelperAddressEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Table of helper addresses configurable on the DHCP relay."
    ::= { hpicfDhcpv6Relay 2 }


hpicfDhcpRelayHelperAddressEntry OBJECT-TYPE
    SYNTAX HpicfDhcpRelayHelperAddressEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "An instance of a DHCP relay helper address."
    INDEX { ifIndex,
            hpicfDhcpRelayHelperAddressType, 
            hpicfDhcpRelayHelperAddress }
    ::= { hpicfDhcpRelayHelperAddressTable 1 }

HpicfDhcpRelayHelperAddressEntry ::=
    SEQUENCE {
        hpicfDhcpRelayHelperAddressType       InetAddressType,
        hpicfDhcpRelayHelperAddress           InetAddress,
        hpicfDhcpRelayHelperAddressEgressInterface   InterfaceIndex,
        hpicfDhcpRelayHelperAddressStatus     RowStatus
     }

hpicfDhcpRelayHelperAddressType OBJECT-TYPE
    SYNTAX InetAddressType
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Type of the helper address being configured."
    ::= { hpicfDhcpRelayHelperAddressEntry 1 }

hpicfDhcpRelayHelperAddress OBJECT-TYPE
    SYNTAX InetAddress
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "The helper address being configured.The address type of this object
         is specified in hpicfDhcpRelayHelperAddressType"
    ::= { hpicfDhcpRelayHelperAddressEntry 2 }

hpicfDhcpRelayHelperAddressEgressInterface OBJECT-TYPE
    SYNTAX InterfaceIndex
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The egress interface through which the DHCP relay must send out
         its packets if the helper address is a multicast address. In case of
         a unicast helper address, this object must be set to zero.By default,
         this value is zero"
    DEFVAL { 0 }
    ::= { hpicfDhcpRelayHelperAddressEntry 3 }

hpicfDhcpRelayHelperAddressStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION
        "The row status of this helper address instance."
    ::= { hpicfDhcpRelayHelperAddressEntry 4 }

hpicfDhcpRelayPerInterfaceStatsTable OBJECT-TYPE
    SYNTAX SEQUENCE OF HpicfDhcpRelayPerInterfaceStatsEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "Table of DHCP relay statistics per Vlan."
    ::= { hpicfDhcpv6Relay 3 }

hpicfDhcpRelayPerInterfaceStatsEntry OBJECT-TYPE
    SYNTAX HpicfDhcpRelayPerInterfaceStatsEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION
        "An instance of the per Vlan statistics table"
    INDEX { ifIndex }
    ::= { hpicfDhcpRelayPerInterfaceStatsTable 1 }

HpicfDhcpRelayPerInterfaceStatsEntry ::=
    SEQUENCE {
        hpicfDhcpRelayPerInterfaceClientPktsRecd       Counter32,
        hpicfDhcpRelayPerInterfaceClientPktsDropped    Counter32,
        hpicfDhcpRelayPerInterfaceClientPktsXmitFail   Counter32,
        hpicfDhcpRelayPerInterfaceServerPktsRecd       Counter32,
        hpicfDhcpRelayPerInterfaceServerPktsDropped    Counter32,
        hpicfDhcpRelayPerInterfaceServerPktsXmitFail   Counter32
     }

hpicfDhcpRelayPerInterfaceClientPktsRecd OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of valid DHCPv6 client requests received on 
         this interface."
    ::= { hpicfDhcpRelayPerInterfaceStatsEntry 1 }

hpicfDhcpRelayPerInterfaceClientPktsDropped OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of DHCPv6 client requests that were dropped at ingress."
    ::= { hpicfDhcpRelayPerInterfaceStatsEntry 2 }

hpicfDhcpRelayPerInterfaceClientPktsXmitFail OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of DHCPv6 client requests that failed to get relayed 
         at egress."
    ::= { hpicfDhcpRelayPerInterfaceStatsEntry 3 }

hpicfDhcpRelayPerInterfaceServerPktsRecd OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of valid DHCPv6 server responses received on this 
         interface."
    ::= { hpicfDhcpRelayPerInterfaceStatsEntry 4 }

hpicfDhcpRelayPerInterfaceServerPktsDropped OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of DHCPv6 server responses dropped on this interface 
         at ingress."
    ::= { hpicfDhcpRelayPerInterfaceStatsEntry 5 }

hpicfDhcpRelayPerInterfaceServerPktsXmitFail OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
        "The number of DHCPv6 server responses that failed to get relayed 
         at egress."
    ::= { hpicfDhcpRelayPerInterfaceStatsEntry 6 }


hpicfDhcpRelayGlobalStatistics OBJECT IDENTIFIER
                            ::= { hpicfDhcpv6Relay 5 }

hpicfDhcpv6RelayOptions OBJECT IDENTIFIER
                            ::= { hpicfDhcpv6Relay 6 }

hpicfDhcpRelayPktsDropped OBJECT-TYPE
    SYNTAX Counter32 
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of discarded DHCPv6 Relay packets." 
    ::= { hpicfDhcpRelayGlobalStatistics 1 }

hpicfDhcpRelayErrorPktsDropped OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of discarded DHCPv6 Relay ERROR packets."
    ::= { hpicfDhcpRelayGlobalStatistics 2 }

hpicfDhcpRelayTotalPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay packets."
    ::= { hpicfDhcpRelayGlobalStatistics 3 }

hpicfDhcpRelaySolicitPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay SOLICIT packets."
    ::= { hpicfDhcpRelayGlobalStatistics 4 }

hpicfDhcpRelayRequestPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay REQUEST packets."
    ::= { hpicfDhcpRelayGlobalStatistics 5 }

hpicfDhcpRelayConfirmPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay CONFIRM packets."
    ::= { hpicfDhcpRelayGlobalStatistics 6 }

hpicfDhcpRelayRenewPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay RENEW packets."
    ::= { hpicfDhcpRelayGlobalStatistics 7 }

hpicfDhcpRelayRebindPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay REBIND packets."
    ::= { hpicfDhcpRelayGlobalStatistics 8 }

hpicfDhcpRelayReleasePktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay RELEASE packets."
    ::= { hpicfDhcpRelayGlobalStatistics 9 }

hpicfDhcpRelayDeclinePktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay DECLINE packets."
    ::= { hpicfDhcpRelayGlobalStatistics 10 }

hpicfDhcpRelayInformationReqPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay INFORMATION REQUEST packets."
    ::= { hpicfDhcpRelayGlobalStatistics 11 }

hpicfDhcpRelayRelayForwardPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay RELAY-FORWARD packets."
    ::= { hpicfDhcpRelayGlobalStatistics 12 }

hpicfDhcpRelayRelayReplyPktsReceived OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of received DHCPv6 Relay RELAY-REPLY packets."
    ::= { hpicfDhcpRelayGlobalStatistics 13 }

hpicfDhcpRelayTotalPktsSent OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of DHCPv6 Relay packets sent."
    ::= { hpicfDhcpRelayGlobalStatistics 14 }

hpicfDhcpRelayAdvertisePktsSent OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of DHCPv6 Relay ADVERTISE packets sent."
    ::= { hpicfDhcpRelayGlobalStatistics 15 }

hpicfDhcpRelayReconfigurePktsSent OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of DHCPv6 Relay RECONFIGURE packets sent."
    ::= { hpicfDhcpRelayGlobalStatistics 16 }

hpicfDhcpRelayReplyPktsSent OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of DHCPv6 Relay REPLY packets sent."
    ::= { hpicfDhcpRelayGlobalStatistics 17 }

hpicfDhcpRelayRelayForwardPktsSent OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of DHCPv6 Relay RELAY-FORWARD packets sent."
    ::= { hpicfDhcpRelayGlobalStatistics 18 }

hpicfDhcpRelayRelayReplyPktsSent OBJECT-TYPE
    SYNTAX Counter32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION
         "The number of DHCPv6 Relay RELAY-REPLY packets sent."
    ::= { hpicfDhcpRelayGlobalStatistics 19 }

hpicfDhcpv6RelayOption79Status OBJECT-TYPE
    SYNTAX INTEGER {
        enabled (1),
        disabled (2)
    }
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
         "This object provides the status of option 79 in DHCPv6 relay. When
          Option 79 is enabled, DHCPv6 relay message carries the link-layer 
          address of the client. The inclusion of client link-layer address in 
          the DHCPv6 relay message is required in a dual stack environment where
          the device acts as DHCPv4 and DHCPv6 client. The client link-layer 
          address acts as an identifier and helps to recognize and service the
          specific customers by providing additional information for event 
          debugging and logging."
    ::= { hpicfDhcpv6RelayOptions 1 }


   -- -------------------------------------------------------------
   -- Conformance Information
   -- -------------------------------------------------------------

hpicfDhcpRelayConformance OBJECT IDENTIFIER
                            ::= { hpicfDhcpv6Relay 4 }

hpicfDhcpRelayGroups OBJECT IDENTIFIER
                            ::= { hpicfDhcpRelayConformance 1}

hpicfDhcpRelayCompliances OBJECT IDENTIFIER
                            ::= { hpicfDhcpRelayConformance 2}

   -- -------------------------------------------------------------
   -- Units of Conformance
   -- -------------------------------------------------------------

hpicfDhcpRelayConfigGroup OBJECT-GROUP
    OBJECTS {
        hpicfDhcpv6RelayAdminStatus,
        hpicfDhcpRelayHelperAddressEgressInterface,
        hpicfDhcpRelayHelperAddressStatus
    }
    STATUS deprecated
    DESCRIPTION
        "A collection of objects related to configuration for DHCP relay"
    ::= { hpicfDhcpRelayGroups 1 }

hpicfDhcpRelayConfigGroup1 OBJECT-GROUP
    OBJECTS {
        hpicfDhcpv6RelayAdminStatus,
        hpicfDhcpRelayHelperAddressEgressInterface,
        hpicfDhcpRelayHelperAddressStatus,
        hpicfDhcpv6RelayOption79Status
    }
    STATUS current
    DESCRIPTION
        "A collection of objects related to configuration for DHCP relay"
    ::= { hpicfDhcpRelayGroups 4 }


hpicfDhcpRelayStatsGroup OBJECT-GROUP
    OBJECTS {
        hpicfDhcpRelayPerInterfaceClientPktsRecd,
        hpicfDhcpRelayPerInterfaceClientPktsDropped,
        hpicfDhcpRelayPerInterfaceClientPktsXmitFail,
        hpicfDhcpRelayPerInterfaceServerPktsRecd,
        hpicfDhcpRelayPerInterfaceServerPktsDropped,
        hpicfDhcpRelayPerInterfaceServerPktsXmitFail
    }
    STATUS deprecated
    DESCRIPTION
        "###DEPRECATED###
         A collection of objects providing statistics about the DHCP relay

         This conformance is deprecated and replaced by 
         hpicfDhcpRelayStatsGroup1"
    ::= { hpicfDhcpRelayGroups 2 }

hpicfDhcpRelayStatsGroup1 OBJECT-GROUP
    OBJECTS {
        hpicfDhcpRelayPerInterfaceClientPktsRecd,
        hpicfDhcpRelayPerInterfaceClientPktsDropped,
        hpicfDhcpRelayPerInterfaceClientPktsXmitFail,
        hpicfDhcpRelayPerInterfaceServerPktsRecd,
        hpicfDhcpRelayPerInterfaceServerPktsDropped,
        hpicfDhcpRelayPerInterfaceServerPktsXmitFail,
        hpicfDhcpRelayPktsDropped,
        hpicfDhcpRelayErrorPktsDropped,
        hpicfDhcpRelayTotalPktsReceived,
        hpicfDhcpRelaySolicitPktsReceived,
        hpicfDhcpRelayRequestPktsReceived,
        hpicfDhcpRelayConfirmPktsReceived,
        hpicfDhcpRelayRenewPktsReceived,
        hpicfDhcpRelayRebindPktsReceived,
        hpicfDhcpRelayReleasePktsReceived,
        hpicfDhcpRelayDeclinePktsReceived,
        hpicfDhcpRelayInformationReqPktsReceived,
        hpicfDhcpRelayRelayForwardPktsReceived,
        hpicfDhcpRelayRelayReplyPktsReceived,
        hpicfDhcpRelayTotalPktsSent,
        hpicfDhcpRelayAdvertisePktsSent,
        hpicfDhcpRelayReconfigurePktsSent,
        hpicfDhcpRelayReplyPktsSent,
        hpicfDhcpRelayRelayForwardPktsSent,
        hpicfDhcpRelayRelayReplyPktsSent
    }
    STATUS current 
    DESCRIPTION
        "A collection of objects providing statistics about the DHCP relay"
    ::= { hpicfDhcpRelayGroups 3 }

   -- -------------------------------------------------------------
   -- compliance Statements
   -- -------------------------------------------------------------

 hpicfDhcpRelayCompliance MODULE-COMPLIANCE
    STATUS deprecated 
    DESCRIPTION
        "The compliance statement for SNMP entities which implement the
         hpicfDhcpv6Relay MIB with support for writable objects. Such an
         implementation can be both monitored and configured via SNMP."
    MODULE -- this module
    MANDATORY-GROUPS {
        hpicfDhcpRelayConfigGroup,
        hpicfDhcpRelayStatsGroup
    }

    ::= {hpicfDhcpRelayCompliances 1 }

 hpicfDhcpRelayCompliance1 MODULE-COMPLIANCE
    STATUS deprecated 
    DESCRIPTION
        "The compliance statement for SNMP entities which implement the
         hpicfDhcpv6Relay MIB with support for writable objects. Such an
         implementation can be both monitored and configured via SNMP."
    MODULE -- this module
    MANDATORY-GROUPS {
        hpicfDhcpRelayConfigGroup,
        hpicfDhcpRelayStatsGroup1
    }
    ::= {hpicfDhcpRelayCompliances 2 }

  hpicfDhcpRelayCompliance2 MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The compliance statement for SNMP entities which implement the
         hpicfDhcpv6Relay MIB with support for writable objects. Such an
         implementation can be both monitored and configured via SNMP."
    MODULE -- this module
    MANDATORY-GROUPS {
        hpicfDhcpRelayConfigGroup1,
        hpicfDhcpRelayStatsGroup1
    }
    ::= {hpicfDhcpRelayCompliances 3 }
END
