-- =================================================================
-- Copyright (C) 2005 by  HUAWEI 3COM TECHNOLOGIES. All rights reserved.
--
-- Description: Generic Routing Encapsulation configuration MIB
-- Reference: INET-ADDRESS-MIB, IPV6-FLOW-LABEL-MIB, IF-MIB
-- Version: V1.0
-- History:
-- V1.0 created by Sun Ludong
--   2005-06-04 Initial version
-- =================================================================
A3COM-HUAWEI-TUNNEL-MIB DEFINITIONS ::= BEGIN

IMPORTS
    h3cCommon
        FROM A3COM-HUAWEI-OID-MIB        
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, IpAddress
        FROM SNMPv2-SMI
    RowStatus, StorageType, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    InetAddressType, InetAddress
        FROM INET-ADDRESS-MIB
    IPv6FlowLabelOrAny
        FROM IPV6-FLOW-LABEL-MIB
    ifIndex, InterfaceIndexOrZero
        FROM IF-MIB;

h3cTunnel MODULE-IDENTITY
    LAST-UPDATED
        "200506040000Z"                              -- June 4, 2005 at 00:00 GMT
    ORGANIZATION
        "Huawei 3Com Technologies Co., Ltd.
        "
    CONTACT-INFO
        "Platform Team Huawei 3Com Technologies Co., Ltd.
        Hai-Dian District Beijing P.R. China
        http://www.huawei-3com.com
        Zip:100085
        "
    DESCRIPTION
        "This MIB contains objects to Manage configuration and Monitor tunnel.
        "
    REVISION
        "200506040000Z"                              -- June 4, 2005 at 00:00 GMT
    DESCRIPTION
        "The initial revision of this MIB module.
        "
    ::= { h3cCommon 53 }
    
H3cTunnelType ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "Tunnel type defination.
        "
    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
        tunnelModeReserve(35),               -- 15 to 35 are reserved
        tunnelModeIPv4Gre(36),               -- GRE tunnel, IPv4 as transport protocol
        tunnelModeIPv6Gre(37),               -- GRE tunnel, IPv6 as transport protocol
        tunnelModeIPv4IPv4(38),             -- IPv4 over IPv4 tunnel
        tunnelModeIPv4IPv6Config(39),        -- IPv6 over IPv4 manual tunnel
        tunnelModeIPv4IPv6Auto(40),          -- IPv6 over IPv4 auto tunnel
        tunnelModeIPv4IPv66to4(41),          -- IPv6 over IPv4 6to4 tunnel
        tunnelModeIPv4IPv6Isatap(42),        -- IPv6 over IPv4 isatap tunnel
        tunnelModeIPv6IPv4(43),              -- IPv4 over IPv6
        tunnelModeIPv6IPv6(44),              -- IPv6 over IPv6 tunnel
        tunnelModeIPv4UdpDVPN(45),           -- IPv4 DVPN tunnelUDP method
        tunnelModeIPv4GreDVPN(46),           -- IPv4 DVPN tunnelGRE method
        tunnelModeIPv6UdpDVPN(47),           -- IPv6 DVPN tunnelUDP method
        tunnelModeIPv6GreDVPN(48),           -- IPv6 DVPN tunnelGRE method
        tunnelModeCrLsp(49),                 -- IPv4 CRLSP tunnel
        tunnelModeMax(50) 
    }

h3cTunnelMIBObjects OBJECT IDENTIFIER ::= { h3cTunnel 1 }

h3cTunnelTables      OBJECT IDENTIFIER ::= { h3cTunnelMIBObjects 1 }

h3cTunnelIfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF H3cTunnelIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The (conceptual) table containing information on configured tunnels.
        "
    ::= { h3cTunnelTables 1 }

h3cTunnelIfEntry OBJECT-TYPE
    SYNTAX     H3cTunnelIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry (conceptual row) containing the information on a 
        particular configured tunnel.
        "
    INDEX      { ifIndex }
    ::= { h3cTunnelIfTable 1 }

H3cTunnelIfEntry ::= SEQUENCE {
    h3cTunnelIfEncapsMethod         H3cTunnelType, 
    h3cTunnelIfHopLimit             Integer32,
    h3cTunnelIfSecurity             INTEGER,
    h3cTunnelIfTOS                  Integer32,
    h3cTunnelIfFlowLabel            IPv6FlowLabelOrAny,
    h3cTunnelIfAddressType          InetAddressType,
    h3cTunnelIfLocalInetAddress     InetAddress,
    h3cTunnelIfRemoteInetAddress    InetAddress,
    h3cTunnelIfEncapsLimit          Integer32
}

h3cTunnelIfEncapsMethod OBJECT-TYPE
    SYNTAX     H3cTunnelType
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The encapsulation method used by the tunnel.
        "
    ::= { h3cTunnelIfEntry 3 }

h3cTunnelIfHopLimit OBJECT-TYPE
    SYNTAX     Integer32 (0 | 1..255)
    MAX-ACCESS read-only
    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.
        "
    ::= { h3cTunnelIfEntry 4 }

h3cTunnelIfSecurity 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 module for the
        security protocol in use.
        "
    ::= { h3cTunnelIfEntry 5 }

h3cTunnelIfTOS OBJECT-TYPE
    SYNTAX     Integer32 (-2..63)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The method used to set the high 6 bits (the
        differentiated services codepoint) 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 module.
        A value between 0 and 63 inclusive indicates that the
        bit field is set to the indicated value.
        "
    ::= { h3cTunnelIfEntry 6 }

h3cTunnelIfFlowLabel OBJECT-TYPE
    SYNTAX     IPv6FlowLabelOrAny
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The method used to set the IPv6 Flow Label value.
        This object need not be present in rows where
        h3cTunnelIfAddressType indicates the tunnel is not 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.
        "
    ::= { h3cTunnelIfEntry 7 }

h3cTunnelIfAddressType OBJECT-TYPE
    SYNTAX     InetAddressType
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The type of address in the corresponding
        h3cTunnelIfLocalInetAddress and h3cTunnelIfRemoteInetAddress
        objects.
        "
    ::= { h3cTunnelIfEntry 8 }

h3cTunnelIfLocalInetAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-write
    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. The type of this
        object is given by h3cTunnelIfAddressType.
        "
    ::= { h3cTunnelIfEntry 9 }

h3cTunnelIfRemoteInetAddress OBJECT-TYPE
    SYNTAX     InetAddress
    MAX-ACCESS read-write
    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. The type of this object is
        given by h3cTunnelIfAddressType.
        "
    ::= { h3cTunnelIfEntry 10 }

h3cTunnelIfEncapsLimit OBJECT-TYPE
    SYNTAX     Integer32 (-1 | 0..255)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The maximum number of additional encapsulations
        permitted for packets undergoing encapsulation at this
        node. A value of -1 indicates that no limit is
        present (except as a result of the packet size).
        "
    REFERENCE
        "RFC 2473, section 4.1.1
        "
    ::= { h3cTunnelIfEntry 11 }

h3cTunnelInetConfigTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF H3cTunnelInetConfigEntry
    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. Note
        that every row in the h3cTunnelIfTable with a fixed
        destination address should have a corresponding row in
        the h3cTunnelInetConfigTable, regardless of whether it
        was created via SNMP.
        "
    ::= { h3cTunnelTables 3 }

h3cTunnelInetConfigEntry OBJECT-TYPE
    SYNTAX     H3cTunnelInetConfigEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry (conceptual row) containing the information
        on a particular configured tunnel.
        "
    INDEX { 
        h3cTunnelInetConfigSlot, 
        h3cTunnelInetConfigSubSlot, 
        h3cTunnelInetConfigTunnNum
    }
    ::= { h3cTunnelInetConfigTable 1 }

H3cTunnelInetConfigEntry ::= SEQUENCE {
    h3cTunnelInetConfigSlot                Integer32, 
    h3cTunnelInetConfigSubSlot             Integer32, 
    h3cTunnelInetConfigTunnNum             Integer32, 
    h3cTunnelInetConfigIfIndex             InterfaceIndexOrZero,
    h3cTunnelInetConfigStatus              RowStatus
}

h3cTunnelInetConfigSlot OBJECT-TYPE
    SYNTAX     Integer32 (0..255)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Slot number. h3cTunnelInetConfigSlot, h3cTunnelInetConfigSubSlot 
        and h3cTunnelInetConfigTunnNum descirbe a tunnel interface. 
        For Example, interface tunnel 0/0/25 would be configured as:
        h3cTunnelInetConfigSlot          0
        h3cTunnelInetConfigSubSlot       0
        h3cTunnelInetConfigTunnNum      25
        "
    ::= { h3cTunnelInetConfigEntry 1 }

h3cTunnelInetConfigSubSlot OBJECT-TYPE
    SYNTAX     Integer32 (0..255)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Sub slot number. As described in h3cTunnelInetConfigSlot's description.
        "
    ::= { h3cTunnelInetConfigEntry 2 }
    
h3cTunnelInetConfigTunnNum OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Tunnel number. As described in h3cTunnelInetConfigSlot's description.
        "
    ::= { h3cTunnelInetConfigEntry 3 }

h3cTunnelInetConfigIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndexOrZero
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "If the value of h3cTunnelInetConfigStatus 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.
        "
    ::= { h3cTunnelInetConfigEntry 6 }

h3cTunnelInetConfigStatus 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. The
        agent need not support setting this object to
        createAndWait or notInService since there are no other
        writable objects in this table, and writable objects
        in rows of corresponding tables such as the
        h3cTunnelIfTable may be modified while this row is
        active.

        To create a row in this table, the management
        station should set h3cTunnelInetConfigSlot, 
        h3cTunnelInetConfigSubSlot, h3cTunnelInetConfigTunnNum, 
        and set h3cTunnelInetConfigStatus to createAndGo. 

        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
        h3cTunnelIfTable. 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 h3cTunnelIfTable.
        "
    ::= { h3cTunnelInetConfigEntry 7 }
    
END
