SOFTWIRE-MESH-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, mib-2 FROM SNMPv2-SMI

    OBJECT-GROUP, MODULE-COMPLIANCE             FROM SNMPv2-CONF

    InetAddress, InetAddressType, InetAddressPrefixLength

    FROM INET-ADDRESS-MIB

    ifIndex                                FROM IF-MIB

    IANAtunnelType                         FROM IANAifType-MIB;

    swmMIB MODULE-IDENTITY
    LAST-UPDATED "201605110000Z"        -- May 11, 2016
    ORGANIZATION "Softwire Working Group"
    CONTACT-INFO
             "Yong Cui
              Email:  yong@csnet1.cs.tsinghua.edu.cn

              Jiang Dong
              Email:  knight.dongjiang@gmail.com

              Peng Wu
              Email:  weapon9@gmail.com

              Mingwei Xu
              Email:  xmw@cernet.edu.cn

              Antti Yla-Jaaski
              Email:  antti.yla-jaaski@aalto.fi

              Email comments directly to the Softwire WG Mailing
              List at softwires@ietf.org
             "
    DESCRIPTION
           "This MIB module contains managed object definitions for
            the softwire mesh framework.

            Copyright (c) 2016 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
            (http://trustee.ietf.org/license-info)."
    REVISION    "201605110000Z"
    DESCRIPTION "Initial version, published as RFC 7856"
    ::= { mib-2 239 }

swmObjects OBJECT IDENTIFIER ::= { swmMIB 1 }

-- swmSupportedTunnelTable
swmSupportedTunnelTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SwmSupportedTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that show what kinds of tunnels
        can be supported by the AFBR."
    ::= { swmObjects 1 }

swmSupportedTunnelEntry  OBJECT-TYPE
    SYNTAX      SwmSupportedTunnelEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of objects that show what kinds of tunnels
        can be supported in the AFBR.  If the AFBR supports
        multiple tunnel types, the swmSupportedTunnelTable
        would have several entries."
    INDEX { swmSupportedTunnelType }
    ::= { swmSupportedTunnelTable 1 }

SwmSupportedTunnelEntry ::= SEQUENCE {
    swmSupportedTunnelType              IANAtunnelType
}

swmSupportedTunnelType OBJECT-TYPE
    SYNTAX      IANAtunnelType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Represents the tunnel type that can be used for softwire
        mesh scenarios, such as L2TPv3 over IP, GRE, Transmit
        tunnel endpoint, IPsec in Tunnel-mode, IP in IP tunnel with
        IPsec Transport Mode, MPLS-in-IP tunnel with IPsec Transport
        Mode, and IP in IP.  There is no restriction on the tunnel
        type the softwire mesh can use."
     REFERENCE



        "L2TPv3 over IP, GRE, and IP in IP in RFC 5512.
        Transmit tunnel endpoint, IPsec in Tunnel-mode, IP in IP
        tunnel with IPsec Transport Mode, MPLS-in-IP tunnel with
        IPsec Transport Mode in RFC 5566."
    ::= { swmSupportedTunnelEntry 1 }

-- end of swmSupportedTunnelTable

--swmEncapsTable
swmEncapsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SwmEncapsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that display the
        softwire mesh encapsulation information."
    ::= { swmObjects 2 }

swmEncapsEntry  OBJECT-TYPE
    SYNTAX      SwmEncapsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that manage the softwire mesh I-IP
         encapsulation destination based on the E-IP destination
         prefix."
    INDEX { ifIndex,
            swmEncapsEIPDstType,
            swmEncapsEIPDst,
            swmEncapsEIPPrefixLength
          }
    ::= { swmEncapsTable 1 }

SwmEncapsEntry ::=      SEQUENCE {
    swmEncapsEIPDstType       InetAddressType,
    swmEncapsEIPDst           InetAddress,
    swmEncapsEIPPrefixLength  InetAddressPrefixLength,
    swmEncapsIIPDstType       InetAddressType,
    swmEncapsIIPDst           InetAddress
}

swmEncapsEIPDstType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object specifies the address type used for
        swmEncapsEIPDst.  It is different from the



        tunnelIfAddressType in the tunnelIfTable.  The
        swmEncapsEIPDstType is IPv6 (2) if it is IPv6-over-IPv4
        tunneling.  The swmEncapsEIPDstType is
        IPv4 (1) if it is IPv4-over-IPv6 tunneling."
    REFERENCE
        "IPv4 and IPv6 in RFC 4001."
    ::= { swmEncapsEntry 1 }

swmEncapsEIPDst OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The E-IP destination prefix, which is
        used for I-IP encapsulation destination looking up.
        The type of this address is determined by the
        value of swmEncapsEIPDstType"
    REFERENCE
        "E-IP and I-IP in RFC 5565."
    ::= { swmEncapsEntry 2 }

swmEncapsEIPPrefixLength OBJECT-TYPE
    SYNTAX      InetAddressPrefixLength
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The prefix length of the E-IP destination prefix."
    ::= { swmEncapsEntry 3 }

swmEncapsIIPDstType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object specifies the address type used for
         swmEncapsIIPDst.  It is the same as the tunnelIfAddressType
         in the tunnelIfTable."
    REFERENCE
        "IPv4 and IPv6 in RFC 4001."
    ::= { swmEncapsEntry 4 }

swmEncapsIIPDst OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The I-IP destination address, which is used as the
        encapsulation destination for the corresponding E-IP



        prefix.  Since the tunnelIfRemoteInetAddress in the
        tunnelIfTable should be 0.0.0.0 or ::, swmEncapIIPDst
        should be the destination address used in the outer
        IP header."
    REFERENCE
        "E-IP and I-IP in RFC 5565."
    ::= { swmEncapsEntry 5 }
-- End of swmEncapsTable

-- swmBGPNeighborTable
swmBGPNeighborTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SwmBGPNeighborEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of objects that display the softwire mesh
        BGP neighbor information."
    ::= { swmObjects 3 }

swmBGPNeighborEntry  OBJECT-TYPE
    SYNTAX      SwmBGPNeighborEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A set of objects that display the softwire mesh
        BGP neighbor information."
    INDEX {
            ifIndex,
            swmBGPNeighborInetAddressType,
            swmBGPNeighborInetAddress
          }
    ::= { swmBGPNeighborTable 1 }

SwmBGPNeighborEntry ::= SEQUENCE {
        swmBGPNeighborInetAddressType    InetAddressType,
        swmBGPNeighborInetAddress        InetAddress,
        swmBGPNeighborTunnelType         IANAtunnelType
}

swmBGPNeighborInetAddressType OBJECT-TYPE
    SYNTAX      InetAddressType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object specifies the address type used for
         swmBGPNeighborInetAddress."
    ::= { swmBGPNeighborEntry 1 }




swmBGPNeighborInetAddress OBJECT-TYPE
    SYNTAX      InetAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The address of the AFBR's BGP neighbor.  The
        address type is the same as the tunnelIfAddressType
        in the tunnelIfTable."
    ::= { swmBGPNeighborEntry 2 }

swmBGPNeighborTunnelType OBJECT-TYPE
    SYNTAX      IANAtunnelType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Represents the type of tunnel that the AFBR
        chooses to transmit traffic with another AFBR/BGP
        neighbor."
    ::= { swmBGPNeighborEntry 3 }
-- End of swmBGPNeighborTable


-- conformance information
swmConformance
                    OBJECT IDENTIFIER ::= { swmMIB 2 }
swmCompliances
                    OBJECT IDENTIFIER ::= { swmConformance 1 }
swmGroups
                    OBJECT IDENTIFIER ::= { swmConformance 2 }

 -- compliance statements
swmCompliance MODULE-COMPLIANCE
   STATUS current
   DESCRIPTION
       "Describes the requirements for conformance to the Softwire
       Mesh MIB.

       The following index objects cannot be added as OBJECT
       clauses but nevertheless have compliance requirements:
       "
       -- OBJECT  swmEncapsEIPDstType
       -- SYNTAX  InetAddressType { ipv4(1), ipv6(2) }
       -- DESCRIPTION
       -- "An implementation is required to support
       --  global IPv4 and/or IPv6 addresses, depending
       --  on its support for IPv4 and IPv6."

       -- OBJECT  swmEncapsEIPDst



       -- SYNTAX  InetAddress (SIZE(4|16))
       -- DESCRIPTION
       -- "An implementation is required to support
       --  global IPv4 and/or IPv6 addresses, depending
       --  on its support for IPv4 and IPv6."

       -- OBJECT  swmEncapsEIPPrefixLength
       -- SYNTAX  InetAddressPrefixLength (Unsigned32 (0..128))
       -- DESCRIPTION
       -- "An implementation is required to support
       --  global IPv4 and/or IPv6 addresses, depending
       --  on its support for IPv4 and IPv6."

       -- OBJECT  swmBGPNeighborInetAddressType
       -- SYNTAX  InetAddressType { ipv4(1), ipv6(2) }
       -- DESCRIPTION
       -- "An implementation is required to support
       --  global IPv4 and/or IPv6 addresses, depending
       --  on its support for IPv4 and IPv6."

       -- OBJECT  swmBGPNeighborInetAddress
       -- SYNTAX  InetAddress (SIZE(4|16))
       -- DESCRIPTION
       -- "An implementation is required to support
       --  global IPv4 and/or IPv6 addresses, depending
       --  on its support for IPv4 and IPv6."

   MODULE -- this module
   MANDATORY-GROUPS    {
                         swmSupportedTunnelGroup,
                         swmEncapsGroup,
                         swmBGPNeighborGroup
                       }
   ::= { swmCompliances 1 }

swmSupportedTunnelGroup    OBJECT-GROUP
   OBJECTS {
       swmSupportedTunnelType
   }
   STATUS  current
   DESCRIPTION
       "The collection of objects that are used to show
       what kind of tunnel the AFBR supports."
   ::= { swmGroups 1 }

swmEncapsGroup    OBJECT-GROUP
   OBJECTS {
        swmEncapsIIPDst,



        swmEncapsIIPDstType
   }
   STATUS  current
   DESCRIPTION
       "The collection of objects that are used to display
       softwire mesh encapsulation information."
   ::= { swmGroups 2 }

swmBGPNeighborGroup    OBJECT-GROUP
   OBJECTS {
        swmBGPNeighborTunnelType
   }
   STATUS  current
   DESCRIPTION
       "The collection of objects that are used to display
        softwire mesh BGP neighbor information."
   ::= { swmGroups 3 }

END
