MAP-E-MIB DEFINITIONS  ::=  BEGIN


      IMPORTS
         MODULE-IDENTITY, OBJECT-TYPE, mib-2,
         Unsigned32, Counter64
            FROM SNMPv2-SMI                 --RFC 2578
         TEXTUAL-CONVENTION
            FROM SNMPv2-TC                  --RFC 2579
         ifIndex
            FROM IF-MIB                     --RFC 2863
         InetAddressIPv6, InetAddressIPv4,
         InetAddressPrefixLength
            FROM INET-ADDRESS-MIB           --RFC 4001
         OBJECT-GROUP, MODULE-COMPLIANCE
            FROM SNMPv2-CONF;               --RFC 2580

      mapMIB MODULE-IDENTITY
      LAST-UPDATED "201811260000Z"
      ORGANIZATION
         "IETF Softwire Working Group"
      CONTACT-INFO
         "Yu Fu
          CNNIC
          No. 4 South 4th Street, Zhongguancun
          Beijing 100190
          China
          Email: eleven711711@foxmail.com

          Sheng Jiang
          Huawei Technologies Co., Ltd
          Q14, Huawei Campus, No. 156 Beiqing Road
          Hai-Dian District, Beijing 100095
          China
          Email: jiangsheng@huawei.com

          Bing Liu
          Huawei Technologies Co., Ltd
          Q14, Huawei Campus, No. 156 Beiqing Road





          Hai-Dian District, Beijing 100095
          China
          Email: leo.liubing@huawei.com

          Jiang Dong
          Tsinghua University
          Department of Computer Science, Tsinghua University
          Beijing 100084
          China
          Email: knight.dongjiang@gmail.com

          Yuchi Chen
          Tsinghua University
          Department of Computer Science, Tsinghua University
          Beijing 100084
          China
          Email: chenycmx@gmail.com"

      DESCRIPTION
         "This MIB module is defined for management of objects for
          MAP-E BRs or CEs.

          Copyright (c) 2018 IETF Trust and the persons identified as
          authors of the code.  All rights reserved.

          Redistribution and use in source and binary forms, with or
          without modification, is permitted pursuant to, and subject to
          the license terms contained in, the Simplified BSD License set
          forth in Section 4.c of the IETF Trust's Legal Provisions
          Relating to IETF Documents
          (https://trustee.ietf.org/license-info)."
      REVISION    "201811260000Z"
      DESCRIPTION
        "Initial version.  Published as RFC 8389."
       ::=  {  mib-2 242  }

      mapMIBObjects OBJECT IDENTIFIER ::= {mapMIB 1}

      mapRule   OBJECT IDENTIFIER
         ::=  { mapMIBObjects 1 }

      mapSecurityCheck   OBJECT IDENTIFIER
         ::=  { mapMIBObjects 2 }

      -- ==============================================================
      -- Textual Conventions Used in This MIB Module
      -- ==============================================================






      RulePSID ::= TEXTUAL-CONVENTION
         DISPLAY-HINT "0x:"
         STATUS       current
         DESCRIPTION
             "Indicates that the Port Set ID (PSID) is represented as
              hexadecimal for clarity."
         SYNTAX       OCTET STRING (SIZE (2))

      RuleType ::= TEXTUAL-CONVENTION
         STATUS       current
         DESCRIPTION
            "Enumerates the type of the mapping rule.  It
             defines three types of mapping rules here:
               bmr: Basic Mapping Rule (not Forwarding Mapping Rule)
               fmr: Forwarding Mapping Rule (not Basic Mapping Rule)
               bmrAndfmr: Basic and Forwarding Mapping Rule
             The Basic Mapping Rule may also be a Forwarding Mapping
             Rule for mesh mode."
         REFERENCE   "bmr, fmr: Section 5 of RFC 7597.
                      bmrAndfmr: Section 5 of RFC 7597, Section 4.1
                      of RFC 7598."
         SYNTAX       INTEGER {
             bmr(1),
             fmr(2),
             bmrAndfmr(3)
             }

      mapRuleTable OBJECT-TYPE
         SYNTAX     SEQUENCE OF MapRuleEntry
         MAX-ACCESS  not-accessible
         STATUS     current
         DESCRIPTION
            "The (conceptual) table containing rule information for
             a specific mapping rule.  It can also be used for row
             creation."
         ::=  { mapRule 1 }

      mapRuleEntry OBJECT-TYPE
         SYNTAX     MapRuleEntry
         MAX-ACCESS  not-accessible
         STATUS     current
         DESCRIPTION
            "Each entry in this table contains the information on a
             particular mapping rule."
             INDEX   {  ifIndex,
                        mapRuleID }
         ::=  { mapRuleTable 1 }






      MapRuleEntry  ::=
         SEQUENCE {
          mapRuleID                   Unsigned32,
          mapRuleIPv6Prefix           InetAddressIPv6,
          mapRuleIPv6PrefixLen        InetAddressPrefixLength,
          mapRuleIPv4Prefix           InetAddressIPv4,
          mapRuleIPv4PrefixLen        InetAddressPrefixLength,
          mapRuleBRIPv6Address        InetAddressIPv6,
          mapRulePSID                 RulePSID,
          mapRulePSIDLen              Unsigned32,
          mapRuleOffset               Unsigned32,
          mapRuleEALen                Unsigned32,
          mapRuleType                 RuleType
      }

      mapRuleID OBJECT-TYPE
          SYNTAX Unsigned32 (1..4294967295)
          MAX-ACCESS not-accessible
          STATUS current
          DESCRIPTION
             "A unique identifier used to distinguish mapping
              rules."
          ::= { mapRuleEntry 1 }

     -- The object mapRuleIPv6Prefix is IPv6 specific; hence, it does
     -- not use the version-agnostic InetAddress.

     mapRuleIPv6Prefix OBJECT-TYPE
          SYNTAX     InetAddressIPv6
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The IPv6 prefix defined in the mapping rule that will be
              assigned to CEs."
          ::= { mapRuleEntry 2 }

      mapRuleIPv6PrefixLen OBJECT-TYPE
          SYNTAX     InetAddressPrefixLength
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The length of the IPv6 prefix defined in the mapping rule
              that will be assigned to CEs."
          ::= { mapRuleEntry 3 }

     -- The object mapRuleIPv4Prefix is IPv4 specific; hence, it does
     -- not use the version-agnostic InetAddress.






      mapRuleIPv4Prefix OBJECT-TYPE
          SYNTAX     InetAddressIPv4
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The IPv4 prefix defined in the mapping rule that will be
              assigned to CEs."
          ::= { mapRuleEntry 4 }

      mapRuleIPv4PrefixLen OBJECT-TYPE
          SYNTAX     InetAddressPrefixLength
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The length of the IPv4 prefix defined in the mapping
              rule that will be assigned to CEs."
          ::= { mapRuleEntry 5 }

     -- The object mapRuleBRIPv6Address is IPv6 specific; hence, it does
     -- not use the version-agnostic InetAddress.

      mapRuleBRIPv6Address OBJECT-TYPE
          SYNTAX     InetAddressIPv6
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The IPv6 address of the BR that will be conveyed to CEs.
              If the BR IPv6 address is anycast, the relay must use
              this anycast IPv6 address as the source address in
              packets relayed to CEs."
          ::= { mapRuleEntry 6 }

       mapRulePSID  OBJECT-TYPE
          SYNTAX     RulePSID
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The PSID value algorithmically identifies a set of
              ports assigned to a CE."
          REFERENCE
               "PSID: Section 5.1 of RFC 7597."
          ::= { mapRuleEntry 7 }

      mapRulePSIDLen  OBJECT-TYPE
          SYNTAX     Unsigned32(0..16)
          MAX-ACCESS read-only
          STATUS     current






          DESCRIPTION
             "The bit length value of the number of significant bits in
              the PSID field.  When it is set to 0, the PSID
              field is to be ignored."
          ::= { mapRuleEntry 8 }

      mapRuleOffset OBJECT-TYPE
          SYNTAX     Unsigned32(0..15)
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The number of the mapRuleOffset is 6 by default to
              exclude the system ports (0-1023).  It is provided via
              the Rule Port Mapping Parameters in the Basic Mapping
              Rule."
          DEFVAL {6}
          ::= { mapRuleEntry 9 }

      mapRuleEALen OBJECT-TYPE
          SYNTAX     Unsigned32(0..48)
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "The length of the Embedded Address (EA) defined in
              mapping rule that will be assigned to CEs."
         REFERENCE
               "EA: Section 3 of RFC 7597."
          ::= { mapRuleEntry 10 }

     mapRuleType OBJECT-TYPE
          SYNTAX     RuleType
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "Indicates the type of mapping rule.
              '1' represents a BMR.
              '2' represents an FMR.
              '3' represents a BMR that is also an FMR for mesh mode."
           REFERENCE
               "bmr, fmr: Section 5 of RFC 7597.
                bmrAndfmr: Section 5 of RFC 7597, Section 4.1 of
                RFC 7598."
          ::= { mapRuleEntry 11 }

      mapSecurityCheckTable OBJECT-TYPE
         SYNTAX     SEQUENCE OF MapSecurityCheckEntry
         MAX-ACCESS  not-accessible
         STATUS     current





         DESCRIPTION
            "The (conceptual) table containing information on
             MAP security checks.  This table can be used for
             statistics on the number of invalid packets that
             have been identified."
         ::=  { mapSecurityCheck 1 }

      mapSecurityCheckEntry OBJECT-TYPE
         SYNTAX     MapSecurityCheckEntry
         MAX-ACCESS  not-accessible
         STATUS     current
         DESCRIPTION
            "Each entry in this table contains information on a
             particular MAP security check."
             INDEX   { ifIndex }
         ::=  { mapSecurityCheckTable 1 }

      MapSecurityCheckEntry  ::=
         SEQUENCE {
          mapSecurityCheckInvalidv4       Counter64,
          mapSecurityCheckInvalidv6       Counter64
      }

      mapSecurityCheckInvalidv4 OBJECT-TYPE
          SYNTAX     Counter64
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "Indicates the number of received IPv4 packets
              that do not have a payload source IPv4 address or
              port within the range defined in the matching MAP
              rule.  It corresponds to the second kind of
              invalid packet described in Section 4.1.2."
          ::= { mapSecurityCheckEntry 1 }

      mapSecurityCheckInvalidv6 OBJECT-TYPE
          SYNTAX     Counter64
          MAX-ACCESS read-only
          STATUS     current
          DESCRIPTION
             "Indicates the number of received IPv6 packets that
              do not have a source or destination IPv6 address
              matching a Basic Mapping Rule.  It corresponds
              to the first kind of invalid packet described
              in Section 4.1.2."
          ::= { mapSecurityCheckEntry 2 }

      -- Conformance Information





      mapMIBConformance OBJECT IDENTIFIER ::= {mapMIB 2}
      mapMIBCompliances OBJECT IDENTIFIER ::= { mapMIBConformance 1 }
      mapMIBGroups OBJECT IDENTIFIER ::= { mapMIBConformance 2 }

      -- compliance statements
      mapMIBCompliance MODULE-COMPLIANCE
         STATUS current
         DESCRIPTION
            "Describes the minimal requirements for conformance
             to the MAP-E MIB."
         MODULE -- this module
             MANDATORY-GROUPS { mapMIBRuleGroup , mapMIBSecurityGroup }
        ::= { mapMIBCompliances 1 }

      -- Units of Conformance
      mapMIBRuleGroup OBJECT-GROUP
         OBJECTS {
                 mapRuleIPv6Prefix,
                 mapRuleIPv6PrefixLen,
                 mapRuleIPv4Prefix,
                 mapRuleIPv4PrefixLen,
                 mapRuleBRIPv6Address,
                 mapRulePSID,
                 mapRulePSIDLen,
                 mapRuleOffset,
                 mapRuleEALen,
                 mapRuleType  }
         STATUS current
         DESCRIPTION
            "The group of objects used to describe the MAP-E mapping
             rule."
         ::= { mapMIBGroups 1 }

     mapMIBSecurityGroup OBJECT-GROUP
        OBJECTS {
           mapSecurityCheckInvalidv4,
           mapSecurityCheckInvalidv6 }
       STATUS current
       DESCRIPTION
          "The group of objects used to provide information on the
           MAP-E security checks."
       ::= { mapMIBGroups 2 }

       END








