-- =====================================================================
-- Copyright (c) 2004-2021 New H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: SAVAP MIB
-- Reference:
-- Version: V1.1
-- History:
--   V1.0 2021-10-9
--     Initial version
--   V1.1 2021-12-31 updated by ys3886
--     Add the following MIB nodes:
--       hh3cSavapPrefixVpn
-- =====================================================================
HH3C-SAVAP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    hh3cCommon
        FROM HH3C-OID-MIB
    OBJECT-TYPE, MODULE-IDENTITY, Unsigned32, Counter64,IpAddress
        FROM SNMPv2-SMI
    TruthValue
        FROM SNMPv2-TC
    InterfaceIndex
        FROM IF-MIB                         --RFC2863
    InetVersion,InetAddressType
        FROM INET-ADDRESS-MIB               --RFC4001
    Ipv6AddressPrefix
        FROM IPV6-TC                         --RFC2465
        ;


hh3cSavap MODULE-IDENTITY
    LAST-UPDATED "202112310000Z"
    ORGANIZATION
        "New H3C Tech. Co., Ltd."
    CONTACT-INFO
        "Platform Team New H3C Tech. Co., Ltd.
        Hai-Dian District Beijing P.R. China
        http://www.h3c.com
        Zip:100085
        "
    DESCRIPTION
        "The MIB module is for configuring and monitoring of
         the Source Address Validation Architecture protocol (SAVAP) module.
        "
    REVISION "202112310000Z"
    DESCRIPTION
        "Add MIB nodes hh3cSavapPrefixVpn."
    REVISION "202110090000Z"
    DESCRIPTION
        "The initial revision of this MIB module."
    ::= { hh3cCommon 210 }
--
-- Node definitions
--
hh3cSavapObjects OBJECT IDENTIFIER ::= { hh3cSavap 1 }

-- Enable spoofing log for SAVAP

hh3cSavapLogEnableTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapLogEnableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table is for enabling SAVAP spoofing logging."
    ::= { hh3cSavapObjects 1 }


hh3cSavapLogEnableEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapLogEnableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing SAVAP spoofing log parameters for a
            particular IP version.
           "
    INDEX { hh3cSavapLogEnableIPVersion  }
    ::=   { hh3cSavapLogEnableTable 1 }

Hh3cSavapLogEnableEntry ::=
    SEQUENCE {
        hh3cSavapLogEnableIPVersion        InetVersion,
        hh3cSavapLogEnable                 TruthValue
    }

hh3cSavapLogEnableIPVersion OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The IP version."
    ::= { hh3cSavapLogEnableEntry 1 }


hh3cSavapLogEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "A log switch for spoofing notification.
            true: The attribute is set.
            false: The attribute is not set.
          "
    ::= { hh3cSavapLogEnableEntry 2 }

-- Config spoofing log for SAVAP

hh3cSavapLogConfigTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapLogConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table contains SAVAP spoofing log parameters."
    ::= { hh3cSavapObjects 2 }


hh3cSavapLogConfigEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapLogConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing SAVAP spoofing log parameters for a
            particular IP version.
           "
    INDEX { hh3cSavapLogConfigIPVersion  }
    ::=   { hh3cSavapLogConfigTable 1 }

Hh3cSavapLogConfigEntry ::=
    SEQUENCE {
        hh3cSavapLogConfigIPVersion        InetVersion,
        hh3cSavapLogNotifyInterval         Unsigned32,
        hh3cSavapLogNotifyNumber           Unsigned32
    }

hh3cSavapLogConfigIPVersion OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The IP version."
    ::= { hh3cSavapLogConfigEntry 1 }

hh3cSavapLogNotifyInterval OBJECT-TYPE
    SYNTAX     Unsigned32 (0|5..3600)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "Interval for logging."
    ::= { hh3cSavapLogConfigEntry 2 }


hh3cSavapLogNotifyNumber OBJECT-TYPE
    SYNTAX     Unsigned32 (1..128)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "Maximum number of SAVAP spoofing logs."
    ::= { hh3cSavapLogConfigEntry 3 }

-- Enable system SAVAP

hh3cSavapSystemEnableTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapSystemEnableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table enables system SAVAP."
    ::= { hh3cSavapObjects 3 }


hh3cSavapSystemEnableEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapSystemEnableEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing SAVAP system-wide parameters for a
            particular IP version.
           "
    INDEX { hh3cSavapSystemEnableIPVersion  }
    ::=   { hh3cSavapSystemEnableTable 1 }

Hh3cSavapSystemEnableEntry ::=
    SEQUENCE {
        hh3cSavapSystemEnableIPVersion        InetVersion,
        hh3cSavapSystemEnable                 TruthValue
    }

hh3cSavapSystemEnableIPVersion OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The IP version."
    ::= { hh3cSavapSystemEnableEntry 1 }


hh3cSavapSystemEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "An attribute defined in SAVAP.
            true: The attribute is set.
            false: The attribute is not set.
          "
    ::= { hh3cSavapSystemEnableEntry 2 }

-- System parameters for SAVAP

hh3cSavapSystemConfigTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapSystemConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table contains SAVAP system-wide parameters."
    ::= { hh3cSavapObjects 4 }


hh3cSavapSystemConfigEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapSystemConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing SAVAP system-wide parameters for a
            particular IP version.
           "
    INDEX { hh3cSavapSystemConfigIPVersion  }
    ::=   { hh3cSavapSystemConfigTable 1 }

Hh3cSavapSystemConfigEntry ::=
    SEQUENCE {
        hh3cSavapSystemConfigIPVersion        InetVersion,
        hh3cSavapSystemID                     IpAddress,
        hh3cSavapSystemTransportAddress       Ipv6AddressPrefix
    }

hh3cSavapSystemConfigIPVersion OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The IP version."
    ::= { hh3cSavapSystemConfigEntry 1 }

hh3cSavapSystemID OBJECT-TYPE
    SYNTAX     IpAddress
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "The Router ID."
    ::= { hh3cSavapSystemConfigEntry 2 }


hh3cSavapSystemTransportAddress OBJECT-TYPE
    SYNTAX     Ipv6AddressPrefix
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "The transport address."
    ::= { hh3cSavapSystemConfigEntry 3 }

-- interface parameters for SAVAP

hh3cSavapPortTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapPortEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table contains SAVAP parameters for each interface."
    ::= { hh3cSavapObjects 5 }

hh3cSavapPortEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapPortEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing SAVAP running parameters of an interface."
    INDEX {
            hh3cSavapPortIPVersion,
            hh3cSavapPortIfIndex
          }
    ::= { hh3cSavapPortTable 1 }


Hh3cSavapPortEntry ::=
    SEQUENCE {
        hh3cSavapPortIPVersion          InetVersion,
        hh3cSavapPortIfIndex            InterfaceIndex,
        hh3cSavapPortType               INTEGER
    }

hh3cSavapPortIPVersion      OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The IP version."
    ::= { hh3cSavapPortEntry 1 }

hh3cSavapPortIfIndex  OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The index value that uniquely identifies the interface to
            which this entry is applicable. The interface identified by
            a particular value of this index is the same interface as
            identified by the same value of the IF-MIB's ifIndex.
           "
    ::= { hh3cSavapPortEntry 2 }

hh3cSavapPortType OBJECT-TYPE
    SYNTAX      INTEGER  {
                   normal(1),
                   nni(2),
                   uni(3)
              }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
           "The interface type of SAVAP."
    ::= { hh3cSavapPortEntry 3 }

-- prefix Table for SAVAP

hh3cSavapPrefixTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapPrefixEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table contains prefix information for SAVAP.
           "
    ::= { hh3cSavapObjects 6 }

hh3cSavapPrefixEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapPrefixEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing the prefix for SAVAP.
            Entries are keyed on the source IP address type,
            binding type, anchor, and source IP address.
           "
    INDEX {
            hh3cSavapPrefixAddressType,
            hh3cSavapPrefixIfIndex,
            hh3cSavapPrefixAddress,
            hh3cSavapPrefixLength,
            hh3cSavapPrefixVpn
          }
    ::= { hh3cSavapPrefixTable 1 }

Hh3cSavapPrefixEntry ::=
    SEQUENCE {
        hh3cSavapPrefixAddressType  InetAddressType,
        hh3cSavapPrefixIfIndex      InterfaceIndex,
        hh3cSavapPrefixAddress      Ipv6AddressPrefix,
        hh3cSavapPrefixLength       Unsigned32,
        hh3cSavapPrefixVpn          Unsigned32,
        hh3cSavapPrefixStatus       INTEGER
     }

hh3cSavapPrefixAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "IP address type of the prefix."
    ::= { hh3cSavapPrefixEntry 1 }

hh3cSavapPrefixIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The index value that uniquely identifies the interface to
            which this entry is applicable. The interface identified by
            a particular value of this index is the same interface as
            identified by the same value of the IF-MIB's ifIndex.
           "
    ::= { hh3cSavapPrefixEntry 2 }

hh3cSavapPrefixAddress OBJECT-TYPE
    SYNTAX     Ipv6AddressPrefix
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The prefix's IP address."
    ::= { hh3cSavapPrefixEntry 3 }

hh3cSavapPrefixLength OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "Length of prefix."
    ::= { hh3cSavapPrefixEntry 4 }

hh3cSavapPrefixVpn OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "VPN of the prefix."
    ::= { hh3cSavapPrefixEntry 5 }

hh3cSavapPrefixStatus OBJECT-TYPE
    SYNTAX      INTEGER  {
                   deactive(1),
                   active(2),
                   reload(3)
              }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "Status of prefix."
    ::= { hh3cSavapPrefixEntry 6 }

-- Count of packets dropped because of validation failure for each interface.

hh3cSavapStatisticsTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF Hh3cSavapStatisticsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The table contains statistics on the packets dropped because of validation failure."
    ::= { hh3cSavapObjects 7 }

hh3cSavapStatisticsEntry OBJECT-TYPE
    SYNTAX     Hh3cSavapStatisticsEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "An entry containing the number of packets dropped because of validation failure on an interface."
    INDEX { hh3cSavapStatisticsIPVersion,
            hh3cSavapStatisticsIfIndex
          }
    ::= { hh3cSavapStatisticsTable 1 }

Hh3cSavapStatisticsEntry ::=
    SEQUENCE {
        hh3cSavapStatisticsIPVersion          InetVersion,
        hh3cSavapStatisticsIfIndex            InterfaceIndex,
        hh3cSavapStatisticsPkt                Counter64,
        hh3cSavapStatisticsByte               Counter64
    }

hh3cSavapStatisticsIPVersion      OBJECT-TYPE
    SYNTAX     InetVersion
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
           "The IP version."
    ::= { hh3cSavapStatisticsEntry 1 }

hh3cSavapStatisticsIfIndex            OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
           "The interface."
    ::= { hh3cSavapStatisticsEntry 2 }


hh3cSavapStatisticsPkt OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "Number of packets dropped."
    ::= { hh3cSavapStatisticsEntry 3 }


hh3cSavapStatisticsByte  OBJECT-TYPE
    SYNTAX     Counter64
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
           "Number of octets of packets dropped."
    ::= { hh3cSavapStatisticsEntry 4 }
END
