 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
