TE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    NOTIFICATION-TYPE, mib-2,
    Integer32, Gauge32, Counter32,
    Counter64, Unsigned32, TimeTicks     FROM SNMPv2-SMI

    RowStatus, StorageType, TimeStamp,
    TruthValue                           FROM SNMPv2-TC

    SnmpAdminString                      FROM SNMP-FRAMEWORK-MIB

    MODULE-COMPLIANCE, OBJECT-GROUP,
    NOTIFICATION-GROUP                   FROM SNMPv2-CONF

    TeHopAddress, TeHopAddressType,
    MplsBitRate                          FROM MPLS-TC-STD-MIB;

teMIB MODULE-IDENTITY
    LAST-UPDATED "200501040000Z"         -- 01 January 2005
    ORGANIZATION "IETF Traffic Engineering Working Group"
    CONTACT-INFO "
                  Editor:         Kireeti Kompella
                          Postal: Juniper Networks, Inc.
                                  1194 Mathilda Ave

                                  Sunnyvale, CA 94089
                          Tel:    +1 408 745 2000
                          E-mail: kireeti@juniper.net

                  The IETF Traffic Engineering Working Group is
                  chaired by Jim Boyle and Ed Kern.

                  WG Mailing List information:

                    General Discussion: te-wg@ops.ietf.org
                      To Subscribe:     te-wg-request@ops.ietf.org
                         In Body:       subscribe
                      Archive:          ftp://ops.ietf.org/pub/lists

                  Comments on the MIB module should be sent to the
                  mailing list.  The archives for this mailing list
                  should be consulted for previous discussion on
                  this MIB.
                 "
    DESCRIPTION  "The Traffic Engineering MIB module.

                  Copyright (C) The Internet Society (2005).  This
                  version of this MIB module is part of RFC 3970;
                  see the RFC itself for full legal notices.
                 "

    -- revision history

    REVISION     "200501040000Z"         -- 01 January 2005
    DESCRIPTION  "Initial version, published as RFC 3970."
    ::= { mib-2 122 }

-- Top level objects

teMIBNotifications  OBJECT IDENTIFIER ::= { teMIB 0 }
teMIBObjects        OBJECT IDENTIFIER ::= { teMIB 1 }
teMIBConformance    OBJECT IDENTIFIER ::= { teMIB 2 }

-- ****************************************************************
--
-- TE MIB Objects
--

-- TE Info

teInfo OBJECT IDENTIFIER ::= { teMIBObjects 1 }

teDistProtocol   OBJECT-TYPE
    SYNTAX       BITS {
                     other(0),
                     isis(1),
                     ospf(2)
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "IGP used to distribute Traffic Engineering
                 information and topology to each device for the
                 purpose of automatic path computation.  More than
                 one IGP may be used to distribute TE information.
                "
    ::= { teInfo 1 }

teSignalingProto OBJECT-TYPE
    SYNTAX       BITS {
                     other(0),
                     rsvpte(1),
                     crldp(2),
                     static(3)    -- static configuration
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "Traffic Engineering signaling protocols supported
                 by this device.  More than one protocol may be
                 supported.
                "
    REFERENCE   "For a description of RSVP-TE, see RFC 3209;
                 for CR-LDP, see RFC 3212.
                "
    ::= { teInfo 2 }

teNotificationEnable OBJECT-TYPE
    SYNTAX       TruthValue
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION "If this object is true, then it enables the
                 generation of notifications from this MIB module.
                 Otherwise notifications are not generated.
                "
    DEFVAL { false }
    ::= { teInfo 3 }

teNextTunnelIndex OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "An integer that may be used as a new Index in the

                 teTunnelTable.

                 The special value of 0 indicates that no more new
                 entries can be created in that table.

                 When this MIB module is used for configuration, this
                 object always contains a legal value (if non-zero)
                 for an index that is not currently used in that
                 table.  The Command Generator (Network Management
                 Application) reads this variable and uses the
                 (non-zero) value read when creating a new row with
                 an SNMP SET.  When the SET is performed, the Command
                 Responder (agent) must determine whether the value
                 is indeed still unused; Two Network Management
                 Applications may attempt to create a row
                 (configuration entry) simultaneously and use the
                 same value.  If it is currently unused, the SET
                 succeeds, and the Command Responder (agent) changes
                 the value of this object according to an
                 implementation-specific algorithm.  If the value is
                 in use, however, the SET fails.  The Network
                 Management Application must then re-read this
                 variable to obtain a new usable value.
                "
    ::= { teInfo 4 }

teNextPathHopIndex OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "An integer that may be used as a new Index in the
                 tePathHopTable.

                 The special value of 0 indicates that no more new
                 entries can be created in that table.

                 When this MIB module is used for configuration, this
                 object always contains a legal value (if non-zero)
                 for an index that is not currently used in that
                 table.  The Command Generator (Network Management
                 Application) reads this variable and uses the
                 (non-zero) value read when creating a new row with
                 an SNMP SET.  When the SET is performed, the Command
                 Responder (agent) must determine whether the value
                 is indeed still unused; Two Network Management
                 Applications may attempt to create a row
                 (configuration entry) simultaneously and use the
                 same value.  If it is currently unused, the SET

                 succeeds, and the Command Responder (agent) changes
                 the value of this object according to an
                 implementation-specific algorithm.  If the value is
                 in use, however, the SET fails.  The Network
                 Management Application must then re-read this
                 variable to obtain a new usable value.
                "
    ::= { teInfo 5 }

teConfiguredTunnels OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "Number of currently configured Tunnels."
    ::= { teInfo 6 }

teActiveTunnels  OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "Number of currently active Tunnels."
    ::= { teInfo 7 }

tePrimaryTunnels OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "Number of currently active Tunnels running on
                 their primary paths.
                "
    ::= { teInfo 8 }

teAdminGroupTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF TeAdminGroupEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "A mapping of configured administrative groups.  Each
                 entry represents an Administrative Group and
                 provides a name and index for the group.
                 Administrative groups are used to label links in the
                 Traffic Engineering topology in order to place
                 constraints (include and exclude) on Tunnel paths.

                 A groupName can only be linked to one group number.
                 The groupNumber is the number assigned to the
                 administrative group used in constraints,
                 such as tePathIncludeAny or tePathIncludeAll.
                "
    ::= { teInfo 9 }

teAdminGroupEntry OBJECT-TYPE
    SYNTAX       TeAdminGroupEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "A mapping between a configured group number and
                 its human-readable name.  The group number should
                 be between 1 and 32, inclusive.  Group number n
                 represents bit number (n-1) in the bit vector for
                 Include/Exclude constraints.

                 All entries in this table MUST be kept in stable
                 storage so that they will re-appear in case of a
                 restart/reboot.
                "
    INDEX       { teAdminGroupNumber }
    ::= { teAdminGroupTable 1 }

TeAdminGroupEntry ::=
    SEQUENCE {
        teAdminGroupNumber    Integer32,
        teAdminGroupName      SnmpAdminString,
        teAdminGroupRowStatus RowStatus
    }

teAdminGroupNumber OBJECT-TYPE
    SYNTAX       Integer32 (1..32)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Index of the administrative group."
    ::= { teAdminGroupEntry 1 }

teAdminGroupName OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE (1..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "Name of the administrative group."
    ::= { teAdminGroupEntry 2 }

teAdminGroupRowStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 The value of this object has no effect on whether
                 other objects in this conceptual row can be

                 modified.
                "
    ::= { teAdminGroupEntry 3 }

-- Tunnel Table

teTunnelTable    OBJECT-TYPE
    SYNTAX       SEQUENCE OF TeTunnelEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Table of Configured Traffic Tunnels."
    ::= { teMIBObjects 2 }

teTunnelEntry    OBJECT-TYPE
    SYNTAX       TeTunnelEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Entry containing information about a particular
                 Traffic Tunnel.
                "
    INDEX       { teTunnelIndex }
    ::= { teTunnelTable 1 }

TeTunnelEntry ::=
    SEQUENCE {
        teTunnelIndex                   Unsigned32,
        teTunnelName                    SnmpAdminString,
        teTunnelNextPathIndex           Unsigned32,
     -- Conceptual row information:
        teTunnelRowStatus               RowStatus,
        teTunnelStorageType             StorageType,
     -- Address information:
        teTunnelSourceAddressType       TeHopAddressType,
        teTunnelSourceAddress           TeHopAddress,
        teTunnelDestinationAddressType  TeHopAddressType,
        teTunnelDestinationAddress      TeHopAddress,
     -- State/performance information:
        teTunnelState                   INTEGER,
        teTunnelDiscontinuityTimer      TimeStamp,
        teTunnelOctets                  Counter64,
        teTunnelPackets                 Counter64,
        teTunnelLPOctets                Counter32,
        teTunnelLPPackets               Counter32,
        teTunnelAge                     TimeTicks,
        teTunnelTimeUp                  TimeTicks,
        teTunnelPrimaryTimeUp           TimeTicks,
        teTunnelTransitions             Counter32,
        teTunnelLastTransition          TimeTicks,
        teTunnelPathChanges             Counter32,
        teTunnelLastPathChange          TimeTicks,
        teTunnelConfiguredPaths         Gauge32,
        teTunnelStandbyPaths            Gauge32,
        teTunnelOperationalPaths        Gauge32
    }

teTunnelIndex    OBJECT-TYPE
    SYNTAX       Unsigned32 (1..4294967295)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "A unique index that identifies a Tunnel.  If the TE
                 Tunnel is considered an interface, then this index
                 must match the interface index of the corresponding
                 interface.  Otherwise, this index must be at least
                 2^24, so that it does not overlap with any existing
                 interface index.
                "
    ::= { teTunnelEntry 1 }

teTunnelName     OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE (1..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "Name of the Traffic Tunnel.

                 Note that the name of a Tunnel MUST be unique.
                 When a SET request contains a name that is already
                 in use for another entry, then the implementation
                 must return an inconsistentValue error.

                 The value of this object cannot be changed if the
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { teTunnelEntry 2 }

teTunnelNextPathIndex  OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "An integer that may be used as a new Index for the
                 next Path in this Tunnel.

                 The special value of 0 indicates that no more Paths
                 can be created for this Tunnel, or that no more new
                 entries can be created in tePathTable.

                 When this MIB module is used for configuration, this
                 object always contains a legal value (if non-zero)
                 for an index that is not currently used in that
                 table.  The Command Generator (Network Management
                 Application) reads this variable and uses the
                 (non-zero) value read when creating a new row with
                 an SNMP SET.  When the SET is performed, the Command
                 Responder (agent) must determine whether the value
                 is indeed still unused; Two Network Management
                 Applications may attempt to create a row
                 (configuration entry) simultaneously and use the
                 same value.  If it is currently unused, the SET
                 succeeds, and the Command Responder (agent) changes
                 the value of this object according to an
                 implementation-specific algorithm.  If the value is
                 in use, however, the SET fails.  The Network
                 Management Application must then re-read this
                 variable to obtain a new usable value.
                "
    ::= { teTunnelEntry 3 }

teTunnelRowStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 When the value of this object is 'active', then
                 the values for the corresponding objects
                 teTunnelName, teTunnelSourceAddressType,
                 teTunnelSourceAddress,
                 teTunnelDestinationAddressType, and
                 teTunnelDestinationAddress cannot be changed.
                "
    ::= { teTunnelEntry 4 }

teTunnelStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row.

                 Conceptual rows having the value 'permanent' need
                 not allow write-access to any columnar objects
                 in the row.
                "
    ::= { teTunnelEntry 5 }

teTunnelSourceAddressType OBJECT-TYPE
    SYNTAX       TeHopAddressType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The type of Traffic Engineered Tunnel hop address
                 for the source of this Tunnel.  Typically, this
                 address type is IPv4 or IPv6, with a prefix length
                 of 32 or 128, respectively.  If the TE Tunnel path
                 is being computed by a path computation server,
                 however, it is possible to use more flexible source
                 address types, such as AS numbers or prefix lengths
                 less than host address lengths.

                 The value of this object cannot be changed
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { teTunnelEntry 6 }

teTunnelSourceAddress OBJECT-TYPE
    SYNTAX       TeHopAddress
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The Source Traffic Engineered Tunnel hop address of
                 this Tunnel.

                 The type of this address is determined by the value
                 of the corresponding teTunnelSourceAddressType.

                 Note that the source and destination addresses of a
                 Tunnel can be different address types.

                 The value of this object cannot be changed
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { teTunnelEntry 7 }

teTunnelDestinationAddressType OBJECT-TYPE
    SYNTAX       TeHopAddressType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The type of Traffic Engineered Tunnel hop address
                 for the destination of this Tunnel.

                 The value of this object cannot be changed
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { teTunnelEntry 8 }

teTunnelDestinationAddress OBJECT-TYPE
    SYNTAX       TeHopAddress
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The Destination Traffic Engineered Tunnel hop
                 address of this Tunnel.

                 The type of this address is determined by the value
                 of the corresponding teTunnelDestinationAddressType.

                 Note that source and destination addresses of a
                 Tunnel can be different address types.

                 The value of this object cannot be changed
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { teTunnelEntry 9 }

teTunnelState    OBJECT-TYPE
    SYNTAX       INTEGER {
                     unknown(1),
                     up(2),
                     down(3),
                     testing(4)
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The operational state of the Tunnel."
    ::= { teTunnelEntry 10 }

teTunnelDiscontinuityTimer OBJECT-TYPE
    SYNTAX       TimeStamp
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The value of sysUpTime on the most recent occasion
                 at which any one or more of this tunnel's counters
                 suffered a discontinuity.  The relevant counters
                 are teTunnelOctets, teTunnelPackets,
                 teTunnelLPOctets, and teTunnelLPPackets.  If no such
                 discontinuities have occurred since the last
                 re-initialization of the local management subsystem
                 then this object contains a zero value.
                "
    ::= { teTunnelEntry 11 }

teTunnelOctets   OBJECT-TYPE
    SYNTAX       Counter64
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of octets that have been forwarded over
                 the Tunnel.

                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system,
                 and at other times, as indicated by the value of
                 teTunnelDiscontinuityTimer.
                "
    ::= { teTunnelEntry 12 }

teTunnelPackets  OBJECT-TYPE
    SYNTAX       Counter64
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of packets that have been forwarded over
                 the Tunnel.

                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times, as indicated by the value of
                 teTunnelDiscontinuityTimer.
                "
    ::= { teTunnelEntry 13 }

teTunnelLPOctets OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of octets that have been forwarded over
                 the Tunnel.

                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times, as indicated by the value of
                 teTunnelDiscontinuityTimer.
                "
    ::= { teTunnelEntry 14 }

teTunnelLPPackets OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of packets that have been forwarded over
                 the Tunnel.

                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times, as indicated by the value of
                 teTunnelDiscontinuityTimer.
                "
    ::= { teTunnelEntry 15 }

teTunnelAge      OBJECT-TYPE
    SYNTAX       TimeTicks
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The age (i.e., time from creation of this conceptual
                 row till now) of this Tunnel in hundredths of a
                 second.  Note that because TimeTicks wrap in about
                 16 months, this value is best used in interval
                 measurements.
                "
    ::= { teTunnelEntry 16 }

teTunnelTimeUp   OBJECT-TYPE
    SYNTAX       TimeTicks
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The total time in hundredths of a second that this
                 Tunnel has been operational.  Note that because
                 TimeTicks wrap in about 16 months, this value is
                 best used in interval measurements.

                 An example of usage of this object would be to
                 compute the percentage up time over a period of time
                 by obtaining values of teTunnelAge and
                 teTunnelTimeUp at two points in time and computing
                 the following ratio:
                 ((teTunnelTimeUp2 - teTunnelTimeUp1)/
                 (teTunnelAge2 - teTunnelAge1)) * 100 %.  In doing
                 so, the management station must account for
                 wrapping of the values of teTunnelAge and
                 teTunnelTimeUp between the two measurements.
                "
    ::= { teTunnelEntry 17 }

teTunnelPrimaryTimeUp OBJECT-TYPE
    SYNTAX       TimeTicks
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The total time in hundredths of a second that this
                 Tunnel's primary path has been operational.  Note
                 that because TimeTicks wrap in about 16 months, this

                 value is best used in interval measurements.

                 An example of usage of this field would be to
                 compute what percentage of time that a TE Tunnel was
                 on the primary path over a period of time by
                 computing
                 ((teTunnelPrimaryTimeUp2 - teTunnelPrimaryTimeUp1)/
                 (teTunnelTimeUp2 - teTunnelTimeUp1))*100 %.  In
                 doing so, the management station must account for
                 wrapping of the values of teTunnelPrimaryTimeUp and
                 teTunnelTimeUp between the two measurements.
                "
    ::= { teTunnelEntry 18 }

teTunnelTransitions OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of operational state transitions
                 (up -> down and down -> up) this Tunnel has
                 undergone.
                "
    ::= { teTunnelEntry 19 }

teTunnelLastTransition OBJECT-TYPE
    SYNTAX       TimeTicks
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The time in hundredths of a second since the last
                 operational state transition occurred on this
                 Tunnel.

                 Note that if the last transition was over 16
                 months ago, this value will be inaccurate.
                "
    ::= { teTunnelEntry 20 }

teTunnelPathChanges OBJECT-TYPE
    SYNTAX       Counter32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of path changes this Tunnel has had."
    ::= { teTunnelEntry 21 }

teTunnelLastPathChange OBJECT-TYPE
    SYNTAX       TimeTicks
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The time in hundredths of a second since the last
                 path change occurred on this Tunnel.

                 Note that if the last transition was over 16
                 months ago, this value will be inaccurate.

                 Path changes may be caused by network events or by
                 reconfiguration that affects the path.
                "
    ::= { teTunnelEntry 22 }

teTunnelConfiguredPaths OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of paths configured for this Tunnel."
    ::= { teTunnelEntry 23 }

teTunnelStandbyPaths OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of standby paths configured for this
                 Tunnel.
                "
    ::= { teTunnelEntry 24 }

teTunnelOperationalPaths OBJECT-TYPE
    SYNTAX       Gauge32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The number of operational paths for this Tunnel.
                 This includes the path currently active, as
                 well as operational standby paths.
                "
    ::= { teTunnelEntry 25 }

-- ****************************************************************
--
-- Tunnel Path Table
--

tePathTable      OBJECT-TYPE
    SYNTAX       SEQUENCE OF TePathEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Table of Configured Traffic Tunnels."
    ::= { teMIBObjects 3 }

tePathEntry      OBJECT-TYPE
    SYNTAX       TePathEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Entry containing information about a particular
                 Traffic Tunnel.  Each Traffic Tunnel can have zero
                 or more Traffic Paths.

                 As a Traffic Path can only exist over an existing
                 Traffic Tunnel, all tePathEntries with
                 a value of n for teTunnelIndex MUST be removed by
                 the implementation when the corresponding
                 teTunnelEntry with a value of n for teTunnelIndex
                 is removed.
                "
    INDEX       { teTunnelIndex, tePathIndex }
    ::= { tePathTable 1 }

TePathEntry ::=
    SEQUENCE {
        tePathIndex                Unsigned32,
        tePathName                 SnmpAdminString,
     -- Conceptual row information
        tePathRowStatus            RowStatus,
        tePathStorageType          StorageType,
     -- Path properties
        tePathType                 INTEGER,
        tePathConfiguredRoute      Unsigned32,
        tePathBandwidth            MplsBitRate,
        tePathIncludeAny           Unsigned32,
        tePathIncludeAll           Unsigned32,
        tePathExclude              Unsigned32,
        tePathSetupPriority        Integer32,
        tePathHoldPriority         Integer32,
        tePathProperties           BITS,
     -- Path status
        tePathOperStatus           INTEGER,
        tePathAdminStatus          INTEGER,
        tePathComputedRoute        Unsigned32,
        tePathRecordedRoute        Unsigned32
    }

tePathIndex      OBJECT-TYPE
    SYNTAX       Unsigned32 (1..4294967295)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An index that uniquely identifies a path within
                 a Tunnel.

                 The combination of <teTunnelIndex, tePathIndex> thus
                 uniquely identifies a path among all paths on this
                 router.
                "
    ::= { tePathEntry 1 }

tePathName       OBJECT-TYPE
    SYNTAX       SnmpAdminString (SIZE(0..32))
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The name of this path.

                 A pathName must be unique within the set of paths
                 over a single tunnel.  If a SET request is received
                 with a duplicate name, then the implementation MUST
                 return an inconsistentValue error.

                 The value of this object cannot be changed
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { tePathEntry 2 }

tePathRowStatus  OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 When the value of this object is 'active', then
                 the value of tePathName cannot be changed.  All
                 other writable objects may be changed; however,
                 these changes may affect traffic going over the TE
                 tunnel or require the path to be computed and/or
                 re-signaled.
                "
    ::= { tePathEntry 3 }

tePathStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row.

                 Conceptual rows having the value 'permanent' need
                 not allow write-access to any columnar objects
                 in the row.
                "
    ::= { tePathEntry 4 }

tePathType OBJECT-TYPE
    SYNTAX       INTEGER {
                     other(1),
                     primary(2),
                     standby(3),
                     secondary(4)
                 }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The type for this PathEntry; i.e., whether this path
                 is a primary path, a standby path, or a secondary
                 path.
                "
    ::= { tePathEntry 5 }

tePathConfiguredRoute OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The route that this TE path is configured to follow;
                 i.e., an ordered list of hops.  The value of this
                 object gives the primary index into the Hop Table.
                 The secondary index is the hop count in the path, so
                 to get the route, one could get the first hop with
                 index <tePathConfiguredRoute, 1> in the Hop Table
                 and do a getnext to get subsequent hops.
                "
    ::= { tePathEntry 6 }

tePathBandwidth  OBJECT-TYPE
    SYNTAX       MplsBitRate
    UNITS       "Kilobits per second"
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The configured bandwidth for this Tunnel,
                 in units of thousands of bits per second (Kbps).
                "
    DEFVAL      { 0 }
    ::= { tePathEntry 7 }

tePathIncludeAny OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "This is a configured set of administrative groups
                 specified as a bit vector (i.e., bit n is 1 if group

                 n is in the set, where n = 0 is the LSB).  For each
                 link that this path goes through, the link must have
                 at least one of the groups specified in IncludeAny
                 to be acceptable.  If IncludeAny is zero, all links
                 are acceptable.
                "
    DEFVAL      { 0 }
    ::= { tePathEntry 8 }

tePathIncludeAll OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "This is a configured set of administrative groups
                 specified as a bit vector (i.e., bit n is 1 if group
                 n is in the set, where n = 0 is the LSB).  For each
                 link that this path goes through, the link must have
                 all of the groups specified in IncludeAll to be
                 acceptable.  If IncludeAll is zero, all links are
                 acceptable.
                "
    DEFVAL      { 0 }
    ::= { tePathEntry 9 }

tePathExclude    OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "This is a configured set of administrative groups
                 specified as a bit vector (i.e., bit n is 1 if group
                 n is in the set, where n = 0 is the LSB).  For each
                 link that this path goes through, the link MUST have
                 groups associated with it, and the intersection of
                 the link's groups and the 'exclude' set MUST be
                 null.
                "
    DEFVAL      { 0 }
    ::= { tePathEntry 10 }

tePathSetupPriority OBJECT-TYPE
    SYNTAX       Integer32 (0..7)
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The setup priority configured for this path, with 0
                 as the highest priority and 7 as the lowest.
                "
    DEFVAL      { 7 }
    ::= { tePathEntry 11 }

tePathHoldPriority OBJECT-TYPE
    SYNTAX       Integer32 (0..7)
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The hold priority configured for this path, with 0
                 as the highest priority and 7 as the lowest.
                "
    DEFVAL      { 0 }
    ::= { tePathEntry 12 }

tePathProperties OBJECT-TYPE
    SYNTAX       BITS {
                     recordRoute(0),
                     cspf(1),
                     makeBeforeBreak(2),
                     mergeable(3),
                     fastReroute(4),
                     protected(5)
                 }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The set of configured properties for this path,
                 expressed as a bit map.  For example, if the path
                 supports 'make before break', then bit 2 is set.
                "
    ::= { tePathEntry 13 }

tePathOperStatus OBJECT-TYPE
    SYNTAX       INTEGER {
                     unknown(0),
                     down(1),
                     testing(2),
                     dormant(3),
                     ready(4),
                     operational(5)
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The operational status of the path:
                 unknown:
                 down:        Signaling failed.
                 testing:     Administratively set aside for testing.
                 dormant:     Not signaled (for a backup tunnel).
                 ready:       Signaled but not yet carrying traffic.
                 operational: Signaled and carrying traffic.
                "
    ::= { tePathEntry 14 }

tePathAdminStatus OBJECT-TYPE
    SYNTAX       INTEGER {
                     normal(1),
                     testing(2)
                 }
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The operational status of the path:
                 normal:      Used normally for forwarding.
                 testing:     Administratively set aside for testing.
                "
    ::= { tePathEntry 15 }

tePathComputedRoute OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The route computed for this path, perhaps using
                 some form of Constraint-based Routing.  The
                 algorithm is implementation dependent.

                 This object returns the computed route as an ordered
                 list of hops.  The value of this object gives the
                 primary index into the Hop Table.  The secondary
                 index is the hop count in the path, so to get the
                 route, one could get the first hop with index
                 <tePathComputedRoute, 1> in the Hop Table and do a
                 getnext to get subsequent hops.

                 A value of zero (0) means there is no computedRoute.
                "
    ::= { tePathEntry 16 }

tePathRecordedRoute OBJECT-TYPE
    SYNTAX       Unsigned32
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The route actually used for this path, as recorded
                 by the signaling protocol.  This is again an ordered
                 list of hops; each hop is expected to be strict.

                 The value of this object gives the primary index
                 into the Hop Table.  The secondary index is the hop
                 count in the path, so to get the route, one can get
                 the first hop with index <tePathRecordedRoute, 1>
                 in the Hop Table and do a getnext to get subsequent

                 hops.

                 A value of zero (0) means there is no recordedRoute.
                "
    ::= { tePathEntry 17 }

-- ****************************************************************
--
-- Tunnel Path Hop Table
--

tePathHopTable   OBJECT-TYPE
    SYNTAX       SEQUENCE OF TePathHopEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Table of Tunnel Path Hops."
    ::= { teMIBObjects 4 }

tePathHopEntry   OBJECT-TYPE
    SYNTAX       TePathHopEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "Entry containing information about a particular
                 hop.
                "
    INDEX       { teHopListIndex, tePathHopIndex }
    ::= { tePathHopTable 1 }

TePathHopEntry ::=
    SEQUENCE {
        teHopListIndex              Unsigned32,
        tePathHopIndex              Unsigned32,
     -- Conceptual row information
        tePathHopRowStatus          RowStatus,
        tePathHopStorageType        StorageType,
        tePathHopAddrType           TeHopAddressType,
        tePathHopAddress            TeHopAddress,
        tePathHopType               INTEGER
    }

teHopListIndex   OBJECT-TYPE
    SYNTAX       Unsigned32 (1..4294967295)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An index that identifies a list of hops.  This is
                 the primary index to access hops.
                "
    ::= { tePathHopEntry 1 }

tePathHopIndex   OBJECT-TYPE
    SYNTAX       Unsigned32 (1..4294967295)
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION "An index that identifies a particular hop among the
                 list of hops for a path.  An index of i identifies
                 the ith hop.  This is the secondary index for a hop
                 entry.
                "
    ::= { tePathHopEntry 2 }

tePathHopRowStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The status of this conceptual row.

                 Any field in this table can be changed, even if the
                 value of this object is 'active'.  However, such a
                 change may cause traffic to be rerouted or even
                 disrupted.
                "
    ::= { tePathHopEntry 3 }

tePathHopStorageType OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The storage type for this conceptual row.

                 Conceptual rows having the value 'permanent' need
                 not allow write-access to any columnar objects
                 in the row.
                "
    ::= { tePathHopEntry 4 }

tePathHopAddrType OBJECT-TYPE
    SYNTAX       TeHopAddressType
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The type of Traffic Engineered Tunnel hop Address
                 of this hop.

                 The value of this object cannot be changed
                 if the value of the corresponding tePathRowStatus
                 object is 'active'.
                "
    ::= { tePathHopEntry 5 }

tePathHopAddress OBJECT-TYPE
    SYNTAX       TeHopAddress
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION "The Traffic Engineered Tunnel hop Address of this
                 hop.

                 The type of this address is determined by the value
                 of the corresponding tePathHopAddressType.

                 The value of this object cannot be changed
                 if the value of the corresponding teTunnelRowStatus
                 object is 'active'.
                "
    ::= { tePathHopEntry 6 }

tePathHopType    OBJECT-TYPE
    SYNTAX       INTEGER {
                     unknown(0),
                     loose(1),
                     strict(2)
                 }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION "The type of hop:
                 unknown:
                 loose:    This hop is a LOOSE hop.
                 strict:   This hop is a STRICT hop.
                "
    ::= { tePathHopEntry 7 }

-- ****************************************************************
--
-- TE Notifications
--

teTunnelUp       NOTIFICATION-TYPE
    OBJECTS      { teTunnelName,
                   tePathName }  -- TunnelPath
    STATUS       current
    DESCRIPTION "A teTunnelUp notification is generated when the
                 Tunnel indexed by teTunnelName transitions to the
                 'up' state.

                 A tunnel is up when at least one of its paths is up.
                 The tePathName is the name of the path whose
                 transition to up made the tunnel go up.

                 This notification MUST be limited to at most one
                 every minute, in case the tunnel flaps up and down.
                "
    ::= { teMIBNotifications 1 }

teTunnelDown     NOTIFICATION-TYPE
    OBJECTS      { teTunnelName,
                   tePathName }  -- TunnelPath
    STATUS       current
    DESCRIPTION "A teTunnelDown notification is generated when the
                 Tunnel indexed by teTunnelName transitions to the
                 'down' state.

                 A tunnel is up when at least one of its paths is up.
                 The tePathName is the name of the path whose
                 transition to down made the tunnel go down.

                 This notification MUST be limited to at most one
                 every minute, in case the tunnel flaps up and down.
                "
    ::= { teMIBNotifications 2 }

teTunnelChanged  NOTIFICATION-TYPE
    OBJECTS      { teTunnelName,
                   tePathName }  -- toTunnelPath
    STATUS       current
    DESCRIPTION "A teTunnelChanged notification is generated when an
                 active path on the Tunnel indexed by teTunnelName
                 changes or a new path becomes active.  The value
                 of tePathName is the new active path.

                 This notification MUST be limited to at most one
                 every minute, in case the tunnel changes quickly.
                "
    ::= { teMIBNotifications 3 }

teTunnelRerouted NOTIFICATION-TYPE
    OBJECTS      { teTunnelName,
                   tePathName }  -- toTunnelPath
    STATUS       current
    DESCRIPTION "A teTunnelRerouted notification is generated when
                 an active path for the Tunnel indexed by
                 teTunnelName stays the same, but its route changes.

                 This notification MUST be limited to at most one
                 every minute, in case the tunnel reroutes quickly.
                "
    ::= { teMIBNotifications 4 }

-- End of TE-MIB objects

-- ****************************************************************
--
-- TE Compliance Statements
--

teGroups
    OBJECT IDENTIFIER ::= { teMIBConformance 1 }

teModuleCompliance
    OBJECT IDENTIFIER ::= { teMIBConformance 2 }

-- ****************************************************************
--
-- TE object groups
--

teTrafficEngineeringGroup OBJECT-GROUP
    OBJECTS {
        teTunnelName,
        teTunnelNextPathIndex,
        teTunnelRowStatus,
        teTunnelStorageType,
        teTunnelSourceAddressType,
        teTunnelSourceAddress,
        teTunnelDestinationAddressType,
        teTunnelDestinationAddress,
        teTunnelState,
        teTunnelDiscontinuityTimer,
        teTunnelOctets,
        teTunnelPackets,
        teTunnelLPOctets,
        teTunnelLPPackets,
        teTunnelAge,
        teTunnelTimeUp,
        teTunnelPrimaryTimeUp,
        teTunnelTransitions,
        teTunnelLastTransition,
        teTunnelPathChanges,
        teTunnelLastPathChange,
        teTunnelConfiguredPaths,
        teTunnelStandbyPaths,
        teTunnelOperationalPaths,
        tePathBandwidth,
        tePathIncludeAny,
        tePathIncludeAll,
        tePathExclude,
        tePathSetupPriority,
        tePathHoldPriority,
        tePathProperties,
        tePathOperStatus,
        tePathAdminStatus,
        tePathComputedRoute,
        tePathRecordedRoute,
        teDistProtocol,
        teSignalingProto,
        teNotificationEnable,
        teNextTunnelIndex,
        teNextPathHopIndex,
        teAdminGroupName,
        teAdminGroupRowStatus,
        teConfiguredTunnels,
        teActiveTunnels,
        tePrimaryTunnels,
        tePathName,
        tePathType,
        tePathRowStatus,
        tePathStorageType,
        tePathConfiguredRoute,
        tePathHopRowStatus,
        tePathHopStorageType,
        tePathHopAddrType,
        tePathHopAddress,
        tePathHopType
    }
    STATUS       current
    DESCRIPTION "Objects for Traffic Engineering in this MIB module."
    ::= { teGroups 1 }

teNotificationGroup NOTIFICATION-GROUP
   NOTIFICATIONS {
       teTunnelUp,
       teTunnelDown,
       teTunnelChanged,
       teTunnelRerouted
   }
   STATUS       current
   DESCRIPTION "Notifications specified in this MIB module."
   ::= { teGroups 2 }

-- ****************************************************************
--
-- TE compliance statements
--
--    There are four compliance statements: read-only and full

--    compliance for regular TE devices, and read-only and full
--    compliance for path computation servers.
--

teModuleReadOnlyCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION "When this MIB module is implemented without support
                 for read-create (i.e., in read-only mode), then such
                 an implementation can claim read-only compliance.
                 Such a device can be monitored but cannot be
                 configured with this MIB module.
                "

    MODULE       -- enclosing module, i.e., TE-MIB

        MANDATORY-GROUPS {
            teTrafficEngineeringGroup
        }

        GROUP        teNotificationGroup
        DESCRIPTION "Implementation of this group is optional."

        OBJECT       teNotificationEnable
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teAdminGroupName
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teAdminGroupRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelName
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelStorageType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelSourceAddressType
        SYNTAX       TeHopAddressType { ipv4(1), ipv6(2) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required.  An
                     implementation is only required to support
                     IPv4 and IPv6 host addresses."

        OBJECT       teTunnelSourceAddress
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelDestinationAddressType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelDestinationAddress
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathName
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathStorageType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathConfiguredRoute
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathBandwidth
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathIncludeAny
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathIncludeAll
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathExclude
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathSetupPriority
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHoldPriority
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathProperties
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathAdminStatus
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopStorageType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopAddrType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopAddress
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."
    ::= { teModuleCompliance 1 }

teModuleFullCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION "When this MIB module is implemented with support for
                 read-create, then the implementation can claim
                 full compliance.  Such devices can be both

                 monitored and configured with this MIB module.
                "

    MODULE       -- enclosing module, i.e., TE-MIB

        MANDATORY-GROUPS {
            teTrafficEngineeringGroup
        }

        GROUP        teNotificationGroup
        DESCRIPTION "Implementation of this group is optional."

        OBJECT       teAdminGroupRowStatus
        SYNTAX       RowStatus { active(1) }
        WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
        DESCRIPTION "Support for notInService, createAndWait and
                     notReady is not required.
                    "

        OBJECT       teTunnelRowStatus
        SYNTAX       RowStatus { active(1), notInService(2) }
        WRITE-SYNTAX RowStatus { active(1), notInService(2),
                                 createAndGo(4), destroy(6)
                               }
        DESCRIPTION "Support for createAndWait and notReady is not
                     required.
                    "

        OBJECT       teTunnelSourceAddressType
        SYNTAX       TeHopAddressType { ipv4(1), ipv6(2) }
        DESCRIPTION "Write access is required.  An implementation is
                     only required to support IPv4 and IPv6 host
                     addresses.
                    "

        OBJECT       tePathRowStatus
        SYNTAX       RowStatus { active(1), notInService(2) }
        WRITE-SYNTAX RowStatus { active(1), notInService(2),
                                 createAndGo(4), destroy(6)
                               }
        DESCRIPTION "Support for createAndWait and notReady is not
                     required.
                    "

        OBJECT       tePathHopRowStatus
        SYNTAX       RowStatus { active(1), notInService(2) }
        WRITE-SYNTAX RowStatus { active(1), notInService(2),
                                 createAndGo(4), destroy(6)
                               }
        DESCRIPTION "Support for createAndWait and notReady is not
                     required.
                    "
    ::= { teModuleCompliance 2 }

teModuleServerReadOnlyCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION "When this MIB module is implemented by a path
                 computation server without support for read-create
                 (i.e., in read-only mode), then the implementation
                 can claim read-only compliance.  Such
                 a device can be monitored but cannot be
                 configured with this MIB module.
                "

    MODULE       -- enclosing module, i.e., TE-MIB

        MANDATORY-GROUPS {
            teTrafficEngineeringGroup
        }

        GROUP        teNotificationGroup
        DESCRIPTION "Implementation of this group is optional."

        OBJECT       teNotificationEnable
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teAdminGroupName
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teAdminGroupRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelName
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelStorageType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelSourceAddressType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required.  A path
                     computation server SHOULD implement all types
                     of tunnel source address types.
                    "

        OBJECT       teTunnelSourceAddress
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelDestinationAddressType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       teTunnelDestinationAddress
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathName
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathStorageType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathConfiguredRoute
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathBandwidth
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathIncludeAny
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathIncludeAll
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathExclude
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathSetupPriority
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHoldPriority
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathProperties
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathAdminStatus
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopRowStatus
        SYNTAX       RowStatus { active(1) }
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopStorageType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopAddrType
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."

        OBJECT       tePathHopAddress
        MIN-ACCESS   read-only
        DESCRIPTION "Write access is not required."
    ::= { teModuleCompliance 3 }

teModuleServerFullCompliance MODULE-COMPLIANCE
    STATUS       current
    DESCRIPTION "When this MIB module is implemented by a path
                 computation server with support for read-create,
                 then the implementation can claim full
                 compliance.
                "

    MODULE       -- enclosing module, i.e., TE-MIB
        MANDATORY-GROUPS {
            teTrafficEngineeringGroup
        }

        GROUP        teNotificationGroup
        DESCRIPTION "Implementation of this group is optional."

        OBJECT       teAdminGroupRowStatus
        SYNTAX       RowStatus { active(1) }
        WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
        DESCRIPTION "Support for notInService, createAndWait, and
                     notReady is not required.
                    "

        OBJECT       teTunnelRowStatus
        SYNTAX       RowStatus { active(1), notInService(2) }
        WRITE-SYNTAX RowStatus { active(1), notInService(2),
                                 createAndGo(4), destroy(6)
                               }
        DESCRIPTION "Support for createAndWait and notReady is not
                     required.
                    "

        OBJECT       teTunnelSourceAddressType
        DESCRIPTION "Write access is required.  An implementation
                     of a path computation server SHOULD support all
                     types of tunnel source address types.
                    "

        OBJECT       tePathRowStatus
        SYNTAX       RowStatus { active(1), notInService(2) }
        WRITE-SYNTAX RowStatus { active(1), notInService(2),
                                 createAndGo(4), destroy(6)
                               }
        DESCRIPTION "Support for createAndWait and notReady is not
                     required.
                    "

        OBJECT       tePathHopRowStatus
        SYNTAX       RowStatus { active(1), notInService(2) }
        WRITE-SYNTAX RowStatus { active(1), notInService(2),
                                 createAndGo(4), destroy(6)
                               }
        DESCRIPTION "Support for createAndWait and notReady is not
                     required.
                    "
    ::= { teModuleCompliance 4 }

END
