--
HP-ICF-ARP-PROTECT DEFINITIONS ::= BEGIN

    IMPORTS
        hpSwitch            
            FROM HP-ICF-OID            
        ifIndex            
            FROM IF-MIB            
    InetAddressType            
        FROM INET-ADDRESS-MIB            
    InetAddress            
        FROM INET-ADDRESS-MIB             
        VlanIndex            
            FROM Q-BRIDGE-MIB            
        OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP            
            FROM SNMPv2-CONF            
    Counter32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE            
            FROM SNMPv2-SMI            
        TruthValue, MacAddress            
            FROM SNMPv2-TC;


    -- 1.3.6.1.4.1.11.2.14.11.5.1.37
    hpicfArpProtect MODULE-IDENTITY 
    LAST-UPDATED "200708290000Z"      -- August 29, 2007 at 00:00 GMT
        ORGANIZATION 
            "Hewlett-Packard Company
            ProCurve Networking Business"
        CONTACT-INFO 
            "Hewlett-Packard Company
            8000 Foothills Blvd.
            Roseville, CA 95747"
        DESCRIPTION 
            "This MIB module contains HP proprietary
            objects for managing Dynamic ARP
            Protection."
    REVISION "200708290000Z"      -- August 29, 2007 at 00:00 GMT
        DESCRIPTION 
            "Added hpicfArpProtectNotification and associated objects."
        REVISION "200605030027Z"      -- May 03, 2006 at 00:27 GMT
        DESCRIPTION 
            "Initial revision."
        ::= { hpSwitch 37 }

    
--
-- Node definitions
--

    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.0
    hpicfArpProtectNotifications OBJECT IDENTIFIER ::= { hpicfArpProtect 0 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.0.1
    hpicfArpProtectErrantReply NOTIFICATION-TYPE
    OBJECTS { hpicfArpProtectErrantCnt, hpicfArpProtectErrantSrcMac, 
        hpicfArpProtectErrantSrcIpType, hpicfArpProtectErrantSrcIp, 
        hpicfArpProtectErrantDestMac, hpicfArpProtectErrantDestIpType, 
        hpicfArpProtectErrantDestIp }
        STATUS current
        DESCRIPTION 
            "An hpicfArpProtectErrantReply notification signifies that
            the ARP protection entity is enabled and has detected
            an errant ARP reply packet.  The source and
            destination addresses from the packet header are included
            in the notification."
        ::= { hpicfArpProtectNotifications 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1
    hpicfArpProtectObjects OBJECT IDENTIFIER ::= { hpicfArpProtect 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1
    hpicfArpProtectConfig OBJECT IDENTIFIER ::= { hpicfArpProtectObjects 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.1
    hpicfArpProtectGlobalCfg OBJECT IDENTIFIER ::= { hpicfArpProtectConfig 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.1.1
    hpicfArpProtectEnable OBJECT-TYPE
        SYNTAX TruthValue
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The administrative status of the ARP Protection
            feature."
        ::= { hpicfArpProtectGlobalCfg 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.1.2
    hpicfArpProtectVlanEnable OBJECT-TYPE
        SYNTAX OCTET STRING (SIZE (512))
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "The administrative status for Dynamic ARP Protection
            on each VLAN.  There will be one bit in this string
            for each possible VLAN ID.  Each octet within this
            value specifies a set of eight VLANs, with the first
            octet specifying VLAN IDs 1 through 8, the second
            octet specifying VLAN IDs 9 through 16, etc.  Within
            each octet, the most significant bit represents the
            lowest numbered VLAN ID, and the least significant
            bit represents the highest numbered VLAN ID.  Thus,
            each possible VLAN ID of the bridge is represented by
            a single bit within the value of this object.  If
            that bit has a value of '1', then Dynamic ARP
            Protection is enabled on that VLAN; Dynamic ARP
            Protection is not enabled on the VLAN its bit has a
            value of '0'."
        ::= { hpicfArpProtectGlobalCfg 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.1.3
    hpicfArpProtectValidation OBJECT-TYPE
        SYNTAX BITS
            {
            srcMac(0),
            dstMac(1),
            ip(2)
            }
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "Additional validation checks to perform on ARP
            packets during Dynamic ARP Protection.
              srcMac - Drop any ARP request or response
                       packet where the source MAC address in
                       the Ethernet header does not match the
                       sender MAC address in the body of the
                       ARP packet.
              dstMac - Drop any unicast ARP response packet
                       where the destination MAC address in the
                       Ethernet header does not match the target
                       MAC address in the body of the ARP packet.
              ip     - Drop any ARP packet where the sender IP
                       address is invalid.  Drop any ARP response
                       packet where the target IP address is
                       invalid.  Invalid addresses include
                       0.0.0.0, 255.255.255.255, all IP multicast
                       addresses, and all class E IP addresses.
            These checks are only performed for ARP packets
            received on untrusted ports in VLANs that are enabled
            for Dynamic ARP Protection.  ARP packets received on
            trusted ports, and ARP packets in VLANs for which
            Dynamic ARP Protection is disabled, are forwarded
            without validation."
        ::= { hpicfArpProtectGlobalCfg 3 }

    
-- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.1.4
hpicfArpProtectErrantNotifyEnable OBJECT-TYPE
    SYNTAX INTEGER
        {
        enabled(1),
        disabled(2)
        }
    MAX-ACCESS read-write
    STATUS current
    DESCRIPTION
        "Provides operational control of hpicfArpProtectErrantReply."
    ::= { hpicfArpProtectGlobalCfg 4 }


    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.2
    hpicfArpProtectPortTable OBJECT-TYPE
        SYNTAX SEQUENCE OF HpicfArpProtectPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Per-interface configuration for Dynamic ARP
            Protection."
        ::= { hpicfArpProtectConfig 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.2.1
    hpicfArpProtectPortEntry OBJECT-TYPE
        SYNTAX HpicfArpProtectPortEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Dynamic ARP Protection configuration information for
            a single port."
        INDEX { ifIndex }
        ::= { hpicfArpProtectPortTable 1 }

    
    HpicfArpProtectPortEntry ::=
        SEQUENCE { 
            hpicfArpProtectPortTrust
                TruthValue
         }

    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.1.2.1.1
    hpicfArpProtectPortTrust OBJECT-TYPE
        SYNTAX TruthValue
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "This object indicates whether this port is
            trusted for Dynamic ARP Protection."
        ::= { hpicfArpProtectPortEntry 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2
    hpicfArpProtectStatus OBJECT IDENTIFIER ::= { hpicfArpProtectObjects 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1
    hpicfArpProtectVlanStatTable OBJECT-TYPE
        SYNTAX SEQUENCE OF HpicfArpProtectVlanStatEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Per-VLAN statistics for Dynamic ARP Protection."
        ::= { hpicfArpProtectStatus 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1
    hpicfArpProtectVlanStatEntry OBJECT-TYPE
        SYNTAX HpicfArpProtectVlanStatEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Dynamic ARP Protection statistics for a single VLAN."
        INDEX { hpicfArpProtectVlanStatIndex }
        ::= { hpicfArpProtectVlanStatTable 1 }

    
    HpicfArpProtectVlanStatEntry ::=
        SEQUENCE { 
            hpicfArpProtectVlanStatIndex
                VlanIndex,
            hpicfArpProtectVlanStatForwards
                Counter32,
            hpicfArpProtectVlanStatBadPkts
                Counter32,
            hpicfArpProtectVlanStatBadBindings
                Counter32,
            hpicfArpProtectVlanStatBadSrcMacs
                Counter32,
            hpicfArpProtectVlanStatBadDstMacs
                Counter32,
            hpicfArpProtectVlanStatBadIpAddrs
                Counter32
         }

    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.1
    hpicfArpProtectVlanStatIndex OBJECT-TYPE
        SYNTAX VlanIndex
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "This variable uniquely identifies the VLAN that
            the counters in this entry apply to.  The VLAN
            identified by this object is the same VLAN as
            identified by the identical value in the
            dot1qVlanIndex object."
        ::= { hpicfArpProtectVlanStatEntry 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.2
    hpicfArpProtectVlanStatForwards OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The number of ARP packets received on untrusted
            ports in this VLAN that were successfully validated
            and forwarded.  This count does not increment for
            VLANs for which Dynamic ARP Protection is not
            enabled."
        ::= { hpicfArpProtectVlanStatEntry 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.3
    hpicfArpProtectVlanStatBadPkts OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The number of ARP packets received on untrusted
            ports that were dropped because they were malformed
            in some way.  This may include an unrecognized
            opcode, an unrecognized protocol type, an
            unrecognized hardware type, an invalid protocol
            address length, or an invalid hardware address
            length.  This count does not increment for VLANs
            for which Dynamic ARP Protection is not enabled."
        ::= { hpicfArpProtectVlanStatEntry 3 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.4
    hpicfArpProtectVlanStatBadBindings OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The number of ARP packets received on untrusted
            ports that were dropped because they advertized
            a source IP-to-MAC binding that did not match a
            known, valid binding.  This count does not increment
            for VLANs for which Dynamic ARP Protection is not
            enabled."
        ::= { hpicfArpProtectVlanStatEntry 4 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.5
    hpicfArpProtectVlanStatBadSrcMacs OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The number of ARP packets received on untrusted
            ports that were dropped because the source MAC
            address in the Ethernet header did not match the
            sender MAC address in the body of the ARP packet.
            This count does not increment when source MAC
            validation is not enabled.  This count does not
            increment for VLANs for which Dynamic ARP Protection
            is not enabled."
        ::= { hpicfArpProtectVlanStatEntry 5 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.6
    hpicfArpProtectVlanStatBadDstMacs OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The number of unicast ARP response packets received
            on untrusted ports that were dropped because the
            destination MAC address in the Ethernet header did
            not match the target MAC address in the body of the
            ARP packet.  This count does not increment when
            destination address validation is not enabled.
            This count does not increment for VLANs for which
            Dynamic ARP Protection is not enabled."
        ::= { hpicfArpProtectVlanStatEntry 6 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.2.1.1.7
    hpicfArpProtectVlanStatBadIpAddrs OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS current
        DESCRIPTION
            "The number of ARP packets received on untrusted
            ports that were dropped because they contained
            an invalid sender IP address, or they contained
            an invalid target IP address in an ARP response.
            This count does not increment when IP address
            validation is not enabled. This count does not
            increment for VLANs for which Dynamic ARP Protection
            is not enabled."
        ::= { hpicfArpProtectVlanStatEntry 7 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.3
    hpicfArpProtectErrantCnt OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
        "A count of hpicfArpProtectErrantReply sent 
        from the ARP Protection entity to the SNMP
        entity.  This count may differ from the count
        of notifications transmitted due to rate 
        limiting or configuration."
        ::= { hpicfArpProtectObjects 3 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.4
    hpicfArpProtectErrantSrcMac OBJECT-TYPE
        SYNTAX MacAddress
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
            "Errant source MAC address included in a
            hpicfArpProtectNotification."
        ::= { hpicfArpProtectObjects 4 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.5
hpicfArpProtectErrantSrcIpType OBJECT-TYPE
    SYNTAX InetAddressType
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "IP Address type reported in hpicfArpProtectErrantSrcIp."
    ::= { hpicfArpProtectObjects 5 }


-- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.6
    hpicfArpProtectErrantSrcIp OBJECT-TYPE
    SYNTAX InetAddress
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
            "Errant source IP address included in a
            hpicfArpProtectNotification."
    ::= { hpicfArpProtectObjects 6 }


-- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.7
    hpicfArpProtectErrantDestMac OBJECT-TYPE
        SYNTAX MacAddress
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
            "Errant destination MAC address included in a
            hpicfArpProtectNotification."
    ::= { hpicfArpProtectObjects 7 }


-- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.8
hpicfArpProtectErrantDestIpType OBJECT-TYPE
    SYNTAX InetAddressType
    MAX-ACCESS accessible-for-notify
    STATUS current
    DESCRIPTION
        "IP Address type reported in hpicfArpProtectErrantDestIp."
    ::= { hpicfArpProtectObjects 8 }


-- 1.3.6.1.4.1.11.2.14.11.5.1.37.1.9
    hpicfArpProtectErrantDestIp OBJECT-TYPE
    SYNTAX InetAddress
        MAX-ACCESS accessible-for-notify
        STATUS current
        DESCRIPTION
            "Errant destination IP address included in a
            hpicfArpProtectNotification."
    ::= { hpicfArpProtectObjects 9 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.2
    hpicfArpProtectConformance OBJECT IDENTIFIER ::= { hpicfArpProtect 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.2.1
    hpicfArpProtectGroups OBJECT IDENTIFIER ::= { hpicfArpProtectConformance 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.2.1.1
    hpicfArpProtectBaseGroup OBJECT-GROUP
    OBJECTS { hpicfArpProtectEnable, hpicfArpProtectVlanEnable, 
    hpicfArpProtectValidation, hpicfArpProtectPortTrust, 
    hpicfArpProtectVlanStatForwards, hpicfArpProtectVlanStatBadPkts, 
    hpicfArpProtectVlanStatBadBindings, hpicfArpProtectVlanStatBadSrcMacs, 
    hpicfArpProtectVlanStatBadDstMacs, hpicfArpProtectVlanStatBadIpAddrs, 
        hpicfArpProtectErrantSrcMac, hpicfArpProtectErrantSrcIp, 
        hpicfArpProtectErrantDestMac, hpicfArpProtectErrantSrcIpType, 
        hpicfArpProtectErrantDestIpType, hpicfArpProtectErrantDestIp, 
        hpicfArpProtectErrantCnt, hpicfArpProtectErrantNotifyEnable }
        STATUS current
        DESCRIPTION 
            "A collection of objects for configuring and
            monitoring the base Dynamic ARP Protection
            functionality."
        ::= { hpicfArpProtectGroups 1 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.2.1.2
    hpicfArpProtectionNotifications NOTIFICATION-GROUP
        NOTIFICATIONS { hpicfArpProtectErrantReply }
        STATUS current
        DESCRIPTION 
        "A group of Notifications whose implementation is 
        mandatory when HP-ICF-ARP-PROTECTION is 
        implemented."
        ::= { hpicfArpProtectGroups 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.2.2
    hpicfArpProtectCompliances OBJECT IDENTIFIER ::= { hpicfArpProtectConformance 2 }

    
    -- 1.3.6.1.4.1.11.2.14.11.5.1.37.2.2.1
    hpicfArpProtectCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION 
            "The compliance statement for HP ProCurve switches
            that support Dynamic ARP Protection."
        MODULE -- this module
            MANDATORY-GROUPS { hpicfArpProtectBaseGroup, hpicfArpProtectionNotifications }
        ::= { hpicfArpProtectCompliances 1 }

    

END

