-- Copyright (C) 2008-2014 Super Micro Computer Inc. All Rights Reserved

-- /*****************************************************************
--  *                                                               *
--  * $RCSfile: fsmptunl.mib,v $                                      *
--  *                                                               *
--  * $Date: 2012/09/07 09:52:05 $                                  *
--  *                                                               *
--  * $Revision: 1.1 - IPv4/IPv6 Tunnel MIB based on draft          *
--                     <draft-thaler-inet-tunnel-mib-00.txt>        *
--  *                                                               *
--  ****************************************************************/


SUPERMICRO-MPTUNNEL-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32, Unsigned32, enterprises             FROM SNMPv2-SMI
    RowStatus, TEXTUAL-CONVENTION, DisplayString, TruthValue   FROM SNMPv2-TC
    InetAddressType, InetAddress                   FROM INET-ADDRESS-MIB
    InterfaceIndexOrZero   FROM IF-MIB
    fsMIStdIpContextId     FROM SUPERMICRO-MISTD-IPVX-MIB;

fsMITunlMIB MODULE-IDENTITY
    LAST-UPDATED "201209050000Z"
    ORGANIZATION "Super Micro Computer Inc."
    CONTACT-INFO "support@Supermicro.com"
    DESCRIPTION
        "The MIB module for management of IP (IPv4 and IPv6) Tunnels,
         independent of the specific encapsulation scheme in use."
    REVISION "201209050000Z"
    DESCRIPTION
        "The MIB module for management of IP (IPv4 and IPv6) Tunnels,
         independent of the specific encapsulation scheme in use."
    ::=  { enterprises supermicro-computer-inc(10876) super-switch(101) extended(2) 39}


FsMITunlType ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
            "The encapsulation method used by a tunnel. The value
            direct indicates that a packet is encapsulated
            directly within a normal IP header, with no
            intermediate header, and unicast to the remote tunnel
            endpoint (e.g., an RFC 2003 IP-in-IP tunnel, or an RFC
            1933 IPv6-in-IPv4 tunnel). The value minimal indicates
            that a Minimal Forwarding Header (RFC 2004) is
            inserted between the outer header and the payload
            packet. The value UDP indicates that the payload
            packet is encapsulated within a normal UDP packet
            (e.g., RFC 1234).

            The values sixToFour, sixOverFour, and isatap
            indicates that an IPv6 packet is encapsulated directly
            within an IPv4 header, with no intermediate header,
            and unicast to the destination determined by the 6to4,
            6over4, or ISATAP protocol.

            The remaining protocol-specific values indicate that a
            header of the protocol of that name is inserted
            between the outer header and the payload header.

            This type is abstracted from the IANAtunnelType."
    SYNTAX     INTEGER {
                   other(1),        -- none of the following
                   direct(2),       -- no intermediate header
                   gre(3),          -- GRE encapsulation
                   minimal(4),      -- Minimal encapsulation
                   l2tp(5),         -- L2TP encapsulation
                   pptp(6),         -- PPTP encapsulation
                   l2f(7),          -- L2F encapsulation
                   udp(8),          -- UDP encapsulation
                   atmp(9),         -- ATMP encapsulation
                   msdp(10),        -- MSDP encapsulation
                   sixToFour(11),   -- 6to4 encapsulation
                   sixOverFour(12), -- 6over4 encapsulation
                   isatap(13),      -- ISATAP encapsulation
                   teredo(14),      -- Teredo encapsulation
                   compat(15),      -- IPv6 Auto-Compatible encapsulation
                   ipv6ip(16)       -- IPv6 over IPV4 Configured encapsulation
               }

FsIPv6FlowLabelOrAny ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS         current
    DESCRIPTION   "The flow identifier or Flow Label in an IPv6
                   packet header that may be used to discriminate
                   traffic flows.  The value of -1 is used to
                   indicate a wildcard, i.e. any value."
    SYNTAX         Integer32 (-1 | 0..1048575)

fsMITunlMIBObjects OBJECT IDENTIFIER ::= { fsMITunlMIB 1 }

fsMITunl      OBJECT IDENTIFIER ::= { fsMITunlMIBObjects 1 }

-- the IP Tunnel MIB-Group
--
-- a collection of objects providing information about
-- IP Tunnels

fsMITunlIfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF FsMITunlIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing virtual router specific
            information on configured tunnels."
    ::= { fsMITunl 1 }

fsMITunlIfEntry OBJECT-TYPE
    SYNTAX     FsMITunlIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The (conceptual) table containing information on
            configured tunnels.  This table can be used to map a
            set of tunnel endpoints to the associated ifIndex
            value.  It can also be used for row creation."
        INDEX  { 
                 fsMIStdIpContextId,
                 fsMITunlIfAddressType,
                 fsMITunlIfLocalInetAddress,
                 fsMITunlIfRemoteInetAddress,
                 fsMITunlIfEncapsMethod,
                 fsMITunlIfConfigID }
    ::= { fsMITunlIfTable 1 }

FsMITunlIfEntry ::= SEQUENCE {
    fsMITunlIfAddressType             InetAddressType,
    fsMITunlIfLocalInetAddress        InetAddress,
    fsMITunlIfRemoteInetAddress       InetAddress,
    fsMITunlIfEncapsMethod            FsMITunlType,
    fsMITunlIfConfigID                Integer32,
    fsMITunlIfHopLimit                Integer32,
    fsMITunlIfSecurity                INTEGER,
    fsMITunlIfTOS                     Integer32,
    fsMITunlIfFlowLabel               FsIPv6FlowLabelOrAny,
    fsMITunlIfMTU                     Integer32,
    fsMITunlIfDirFlag                 INTEGER,
    fsMITunlIfDirection               INTEGER,
    fsMITunlIfEncaplmt                Unsigned32,
    fsMITunlIfEncapOption             INTEGER,
    fsMITunlIfIndex                   InterfaceIndexOrZero,
    fsMITunlIfAlias                   DisplayString,
    fsMITunlIfCksumFlag               TruthValue,  
    fsMITunlIfPmtuFlag                TruthValue,  
    fsMITunlIfStatus                  RowStatus
}

fsMITunlIfAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "The type of address in the corresponding
            fsMITunlIfLocalInetAddress and fsMITunlIfRemoteInetAddress
            objects."
    ::= { fsMITunlIfEntry 1 }

fsMITunlIfLocalInetAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE(16))
    MAX-ACCESS not-accessible 
    STATUS     current
    DESCRIPTION
            "The address of the local endpoint of the tunnel
            (i.e., the source address used in the outer IP
            header).  If the address is unknown, the value is
            0.0.0.0 for IPv4 or :: for IPv6."
    ::= { fsMITunlIfEntry 2 }

fsMITunlIfRemoteInetAddress OBJECT-TYPE
    SYNTAX     InetAddress (SIZE(16))
    MAX-ACCESS not-accessible 
    STATUS     current
    DESCRIPTION
            "The address of the remote endpoint of the tunnel
            (i.e., the destination address used in the outer IP
            header).  If the address is unknown or the tunnel is
            not a point-to-point link (e.g., if it is a 6to4
            tunnel), the value is 0.0.0.0 for tunnels over IPv4 or
            :: for tunnels over IPv6."
    ::= { fsMITunlIfEntry 3 }

fsMITunlIfEncapsMethod OBJECT-TYPE
    SYNTAX     FsMITunlType
    MAX-ACCESS not-accessible 
    STATUS     current
    DESCRIPTION
            "The encapsulation method used by the tunnel."
    ::= { fsMITunlIfEntry 4 }

fsMITunlIfConfigID OBJECT-TYPE
    SYNTAX     Integer32 (1..2147483647)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An identifier used to distinguish between multiple
            tunnels of the same encapsulation method, with the
            same endpoints.  If the encapsulation protocol only
            allows one tunnel per set of endpoint addresses (such
            as for GRE or IP-in-IP), the value of this object is
            1.  For encapsulation methods (such as L2F) which
            allow multiple parallel tunnels, the manager is
            responsible for choosing any ID which does not
            conflict with an existing row, such as choosing a
            random number."
    ::= { fsMITunlIfEntry 5 }

fsMITunlIfHopLimit OBJECT-TYPE
    SYNTAX     Integer32 (0..255)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "The IPv4 TTL or IPv6 Hop Limit to use in the outer IP
            header.  A value of 0 indicates that the value is
            copied from the payload's header."
    ::= { fsMITunlIfEntry 6 }

fsMITunlIfSecurity OBJECT-TYPE
    SYNTAX     INTEGER {
                   none(1),   -- no security
                   ipsec(2),  -- IPSEC security
                   other(3)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The method used by the tunnel to secure the outer IP
            header.  The value ipsec indicates that IPsec is used
            between the tunnel endpoints for authentication or
            encryption or both.  More specific security-related
            information may be available in a MIB for the security
            protocol in use."
    ::= { fsMITunlIfEntry 7 }

fsMITunlIfTOS OBJECT-TYPE
    SYNTAX     Integer32 (-2..63)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "The method used to set the high 6 bits of the IPv4
            TOS or IPv6 Traffic Class in the outer IP header.  A
            value of -1 indicates that the bits are copied from
            the payload's header. A value of -2 indicates that a
            traffic conditioner is invoked and more information
            may be available in a traffic conditioner MIB.  A
            value between 0 and 63 inclusive indicates that the
            bit field is set to the indicated value."
    ::= { fsMITunlIfEntry 8 }

fsMITunlIfFlowLabel OBJECT-TYPE
    SYNTAX     FsIPv6FlowLabelOrAny
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
            "The method used to set the IPv6 Flow Label value.
            This object need not be present in rows where
            fsMITunlIfAddressType indicates the tunnel is over IPv6.
            A value of -1 indicates that a traffic conditioner is
            invoked and more information may be available in a
            traffic conditioner MIB.  Any other value indicates
            that the Flow Label field is set to the indicated
            value."
    ::= { fsMITunlIfEntry 9 }

fsMITunlIfMTU  OBJECT-TYPE
    SYNTAX  Integer32 (0 | 1280..1500)
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
           "Configured MTU of the specific tunnel entry. If set as 0,
            the outgoing Link MTU will be used."
    ::= { fsMITunlIfEntry 10 }

fsMITunlIfDirFlag OBJECT-TYPE 
    SYNTAX  INTEGER
    {
         unidirectional (1),
         bidirectional  (2)
    }
    MAX-ACCESS  read-write
    STATUS  current
    DESCRIPTION
           "Flag defining whether the configured tunnel is
            unidirectional or bi-directional."
    DEFVAL  { bidirectional }
    ::= { fsMITunlIfEntry 11 }

fsMITunlIfDirection OBJECT-TYPE
    SYNTAX  INTEGER
    {
         incoming (1),
         outgoing (2)
    }
    MAX-ACCESS  read-write
    STATUS  current
    DESCRIPTION
         "Flag defining whether the uni-directional tunnel 
          configured is incoming or out going."
    DEFVAL  { outgoing }
    ::= { fsMITunlIfEntry 12 }

fsMITunlIfEncaplmt OBJECT-TYPE
    SYNTAX  Unsigned32
    MAX-ACCESS  read-write
    STATUS  current
    DESCRIPTION
        "The limit on how many further levels of nesting a tunnel
         packet is permitted to undergo - not counting the
         encapsulation in which the option itself is contained.
         Default value recommended is 4. If this option is not to
         be configured set this object to '0xff' else set to
         the value required."
    DEFVAL  { 4 }
    ::= { fsMITunlIfEntry 13 }

fsMITunlIfEncapOption OBJECT-TYPE
    SYNTAX  INTEGER
    {
          enable(1),
          disable(2)
    }
    MAX-ACCESS  read-write
    STATUS  current
    DESCRIPTION
        "Flag indicating if Encapsulation option needs to be added
         or not in a tunnelled packet."
    DEFVAL  { disable }
    ::= { fsMITunlIfEntry 14 }

fsMITunlIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "If the value of fsMITunlIfStatus for this row
            is active, then this object contains the value of
            ifIndex corresponding to the tunnel interface.  A
            value of 0 is not legal in the active state, and means
            that the interface index has not yet been assigned."
    ::= { fsMITunlIfEntry 15 }

fsMITunlIfAlias   OBJECT-TYPE
       SYNTAX      DisplayString (SIZE(0..64))
       MAX-ACCESS  read-write
       STATUS      current
       DESCRIPTION
            "If the value of fsMITunlIfStatus for this row
            is active, then this object contains the value of
            ifAlias corresponding to the tunnel interface.
            The value of fsMITunlIfIndex is assigned based on 
            the corresponding fsMITunlIfAlias entry in ifMainTable."
    ::= { fsMITunlIfEntry 16 }

fsMITunlIfCksumFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "Flag indicating if checksum needs to be set in GRE header
           for GRE encapsulation type"
    DEFVAL  { false }
    ::= { fsMITunlIfEntry 17 }

fsMITunlIfPmtuFlag OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
          "Flag indicating if path-mtu-discovery needs to be enabled on the 
           tunnel interface. When enabled, path-mtu-discovery is done to set 
           the MTU of the tunnel interface. When disabled, the outgoing link
           MTU will be used"
    DEFVAL  { false }
    ::= { fsMITunlIfEntry 18 }

fsMITunlIfStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
            "The status of this row, by which new entries may be
            created, or old entries deleted from this table.
 
            To create a row in this table for an encapsulation
            method which does not support multiple parallel
            tunnels with the same endpoints, the management
            station should simply use a fsMITunlInetConfigID of 1,
            and set fsMITunlInetConfigStatus to createAndGo.  For
            encapsulation methods such as L2F which allow multiple
            parallel tunnels, the management station may select a
            pseudo-random number to use as the fsMITunlInetConfigID
            and set fsMITunlInetConfigStatus to createAndGo.  In the
            event that this ID is already in use and an
            inconsistentValue is returned in response to the set
            operation, the management station should simply select
            a new pseudo-random number and retry the operation.

            Creating a row in this table will cause an interface
            index to be assigned by the agent in an
            implementation-dependent manner, and corresponding
            rows will be instantiated in the ifTable and the
            fsMITunlIfTable.  The status of this row will become
            active as soon as the agent assigns the interface
            index, regardless of whether the interface is
            operationally up.

            Deleting a row in this table will likewise delete the
            corresponding row in the ifTable and in the
            fsMITunlIfTable."
    ::= { fsMITunlIfEntry 19 }
END
