-- MIB file created 02-May-2002 17:06:25, by
--   SMICng version 2.2.11-beta(PRO)(Solaris), January 20, 2001. Enterprise key cisco.com

MPLS-VPN-MIB DEFINITIONS ::= BEGIN

-- From file: "MPLS-VPN-MIB.my"
-- Compile options "4 7 F H N W 03 06 0B 0G 0N 0T"

IMPORTS
    experimental
            FROM SNMPv2-SMI-v1
    TruthValue, RowStatus, StorageType, TimeStamp, DisplayString
            FROM SNMPv2-TC-v1
    InterfaceIndex
            FROM IF-MIB
    SnmpAdminString
            FROM SNMP-FRAMEWORK-MIB
    InetAddress, InetAddressType
            FROM INET-ADDRESS-MIB
    Counter, Gauge
            FROM RFC1155-SMI
    OBJECT-TYPE
            FROM RFC-1212
    TRAP-TYPE
            FROM RFC-1215;

mplsVpnMIB OBJECT IDENTIFIER ::= { experimental 118 }
-- MODULE-IDENTITY
--  LastUpdated
--    200110151200Z
--  OrgName
--    Provider Provisioned Virtual Private
--     Networks Working Group.
--  ContactInfo
--            Thomas D. Nadeau
--             tnadeau@cisco.com
--    
--             Luyuan Fang
--             luyuanfang@att.com
--    
--             Stephen Brannon
--    
--             Fabio M. Chiussi
--             fabio@bell-labs.com
--    
--             Joseph Dube
--             jdube@avici.com
--    
--             Martin Tatham
--             martin.tatham@bt.com
--    
--             Harmen van der Linde
--             hvdl@att.com
--    
--             Comments and discussion to ppvpn@ietf.org
--  Descr
--    This MIB contains managed object definitions for the
--     Multiprotocol Label Switching (MPLS)/Border Gateway
--    
--    
--     Protocol (BGP) Virtual Private Networks (VPNs) as
--     defined in : Rosen, E., Viswanathan, A., and R.
--     Callon, Multiprotocol Label Switching Architecture,
--     RFC3031, January 2001.
--  RevDate
--    200110151200Z
--  RevDescr
--    Fixed compilation errors from last version. 
--    
--     Changed mplsVpnInterfaceVpnRouteDistProtocol to be a BITS
--     structure to allow more than one to be selected.
--    
--     Changed mplsIfDown -> mplsVrfIfDown
--     Changed mplsIfUp -> mplsVrfIfUp
--     
--  RevDate
--    200110051200Z
--  RevDescr
--    Added integer index and removed route distinguisher index 
--     from mplsVpnVrfRouteTargetTable.
--    
--     Removed mplsVpn ifType; simply use mpls(166) ifType for
--     MPLS VPN-enabled interfaces instead.
--    
--     Removed interface and protocol-related objects from
--     mplsVpnVrfTable.
--    
--     Moved mplsVpnVrfConfMaxPossibleRoutes from 
--     mplsVpnVrfTable to scalar object.
--    
--     Removed mplsVpnActiveVrfInterfaces scalar object.
--     Removed mplsVpnVrfUpTime object from mplsVpnVrfTable.
--    
--     Added MplsVpnVrfBgpNbrPrefixTable providing a linkage with
--     the bgp4PathAttrTable of the BGPv4 MIB.
--  RevDate
--    200107171200Z
--  RevDescr
--    Removed mplsVpnVrfRouteTargetImport/Export from route target
--     table, and modified indexing to better reflect N <> R
--     distribution policy. Also added new object called
--     mplsVpnVrfRouteTargetType which denotes import/export
--     policy for the specified route target. 
--    
--     Added mplsVpnInterfaceConfRowStatus which allows for
--     an interface to be associated with a VPN through SNMP
--     configuration.
--    
--    
--     Added VrfName to index of VrfInterfaceConfEntry which allows
--     interfaces to be associated with the appropriate VRF.
--    
--     Modified description of mplsVpnVrfConfMaxPossibleRoutes and
--     mplsVpnVrfConfMaxRoutes to allow for undetermined value.
--    
--     Removed 'both' enumerated value in mplsVpnVrfBgpNbrRole.
--    
--     Updated example to reflect these changes.
--  RevDate
--    200107101200Z
--  RevDescr
--    Renamed mplsNumVrfSecViolationThreshExceeded to 
--     mplsNumVrfSecIllegalLabelThreshExceeded, and removed
--     mplsVpnInterfaceConfIndex from varbind.
--    
--     Changed MplsVpnId TC from SnmpAdminString to OCTET STRING.
--    
--     Added mplsVpnVrfSecIllegalLabelRcvThresh to 
--     mplsVpnVrfSecEntry.
--    
--     Changed duplicate mplsVpnVrfRouteTargetImport in 
--     mplsVpnVrfRouteTargetEntry INDEX to 
--     mplsVpnVrfRouteTargetExport.
--  RevDate
--    200106191200Z
--  RevDescr
--    Fixed several compile errors.
--  RevDate
--    200105301200Z
--  RevDescr
--    Updated most of document and MIB to reflect comments from WG.
--  RevDate
--    200009301200Z
--  RevDescr
--    Initial draft version.

mplsVpnNotifications OBJECT IDENTIFIER ::= { mplsVpnMIB 0 }
mplsVpnObjects  OBJECT IDENTIFIER ::= { mplsVpnMIB 1 }
mplsVpnScalars  OBJECT IDENTIFIER ::= { mplsVpnObjects 1 }
mplsVpnConf     OBJECT IDENTIFIER ::= { mplsVpnObjects 2 }
mplsVpnPerf     OBJECT IDENTIFIER ::= { mplsVpnObjects 3 }
mplsVpnRoute    OBJECT IDENTIFIER ::= { mplsVpnObjects 4 }
mplsVpnConformance OBJECT IDENTIFIER ::= { mplsVpnMIB 3 }
mplsVpnGroups   OBJECT IDENTIFIER ::= { mplsVpnConformance 1 }
mplsVpnCompliances OBJECT IDENTIFIER ::= { mplsVpnConformance 2 }

MplsVpnId ::= OCTET STRING(SIZE(0..31))
-- TEXTUAL-CONVENTION
--  Status
--    mandatory
--  Descr
--    An identifier that is assigned to each MPLS/BGP VPN and
--     is used to uniquely identify it. This is assigned by the
--     system operator or NMS and SHOULD be unique throughout
--    
--    
--     the MPLS domain. If this is the case, then this identifier
--     can then be used at any LSR within a specific MPLS domain
--     to identify this MPLS/BGP VPN. It may also be possible to
--     preserve the uniqueness of this identifier across MPLS
--     domain boundaries, in which case this identifier can then
--     be used to uniquely identify MPLS/BGP VPNs on a more global
--     basis.
--  Refer
--    RFC 2685 [VPN-RFC2685] Fox B., et al, 'Virtual Private
--     Networks Identifier', September 1999.

MplsVpnRouteDistinguisher ::= OCTET STRING(SIZE(0..256))
-- TEXTUAL-CONVENTION
--  Status
--    mandatory
--  Descr
--    Syntax for a route distinguisher and route target.

mplsVpnConfiguredVrfs OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The number of VRFs which are configured on this node."
    ::= { mplsVpnScalars 1 }

mplsVpnActiveVrfs OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The number of VRFs which are active on this node.
         That is, those VRFs whose corresponding mplsVpnVrfOperStatus 
         object value is equal to operational (1)."
    ::= { mplsVpnScalars 2 }

mplsVpnConnectedInterfaces OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Total number of interfaces connected to a VRF."
    ::= { mplsVpnScalars 3 }

mplsVpnNotificationEnable OBJECT-TYPE
    SYNTAX TruthValue
--    Rsyntax INTEGER {
--        true(1),
--        false(2)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "If this object is true, then it enables the
         generation of all notifications defined in 
         this MIB."
    DEFVAL { false }
    ::= { mplsVpnScalars 4 }

mplsVpnVrfConfMaxPossibleRoutes OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Denotes maximum number of routes which the device
         will allow all VRFs jointly to hold. If this value is
         set to 0, this indicates that the device is 
         unable to determine the absolute maximum. In this
         case, the configured maximum MAY not actually
         be allowed by the device."
    ::= { mplsVpnScalars 5 }

mplsVpnInterfaceConfTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnInterfaceConfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per-interface MPLS capability
         and associated information."
    ::= { mplsVpnConf 1 }

mplsVpnInterfaceConfEntry OBJECT-TYPE
    SYNTAX MplsVpnInterfaceConfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for
         every interface capable of supporting MPLS/BGP VPN.
        
        
         Each entry in this table is meant to correspond to
         an entry in the Interfaces Table."
    INDEX { mplsVpnVrfName, mplsVpnInterfaceConfIndex }
    ::= { mplsVpnInterfaceConfTable 1 }

MplsVpnInterfaceConfEntry ::= SEQUENCE {
    mplsVpnInterfaceConfIndex InterfaceIndex,
    mplsVpnInterfaceLabelEdgeType INTEGER,
    mplsVpnInterfaceVpnClassification INTEGER,
    mplsVpnInterfaceVpnRouteDistProtocol OCTET STRING,
    mplsVpnInterfaceConfStorageType StorageType,
    mplsVpnInterfaceConfRowStatus RowStatus
    }

mplsVpnInterfaceConfIndex OBJECT-TYPE
    SYNTAX InterfaceIndex
--    Rsyntax INTEGER(1..2147483647)
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This is a unique index for an entry in the
         MplsVPNInterfaceConfTable. A non-zero index for an
         entry indicates the ifIndex for the corresponding
         interface entry in the MPLS-VPN-layer in the ifTable.
         Note that this table does not necessarily correspond
         one-to-one with all entries in the Interface MIB
         having an ifType of MPLS-layer; rather, only those
         which are enabled for MPLS/BGP VPN functionality."
    REFERENCE
        "RFC 2233 - The Interfaces Group MIB using SMIv2,
         McCloghrie, K., and F. Kastenholtz, Nov. 1997"
    ::= { mplsVpnInterfaceConfEntry 1 }

mplsVpnInterfaceLabelEdgeType OBJECT-TYPE
    SYNTAX INTEGER {
        providerEdge(1),
        customerEdge(2)
        }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Either the providerEdge(0) (PE) or customerEdge(1)
        (CE) bit MUST be set."
    ::= { mplsVpnInterfaceConfEntry 2 }

mplsVpnInterfaceVpnClassification OBJECT-TYPE
    SYNTAX INTEGER {
        carrierOfCarrier(1),
        enterprise(2),
        interProvider(3)
        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes whether this link participates in a
         carrier-of-carrier's, enterprise, or inter-provider
         scenario."
    ::= { mplsVpnInterfaceConfEntry 3 }

mplsVpnInterfaceVpnRouteDistProtocol OBJECT-TYPE
    SYNTAX OCTET STRING(SIZE(1..2))
        -- BITS are:
        --   dummy(0)
        --   none(1)
        --   bgp(2)
        --   ospf(3)
        --   rip(4)
        --   isis(5)
        --   other(6)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes the route distribution protocol across the
         PE-CE link. Note that more than one routing protocol
         may be enabled at the same time."
    ::= { mplsVpnInterfaceConfEntry 4 }

mplsVpnInterfaceConfStorageType OBJECT-TYPE
    SYNTAX StorageType
--    Rsyntax INTEGER {
--        other(1),
--        volatile(2),
--        nonVolatile(3),
--        permanent(4),
--        readOnly(5)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The storage type for this entry."
    ::= { mplsVpnInterfaceConfEntry 5 }

mplsVpnInterfaceConfRowStatus OBJECT-TYPE
    SYNTAX RowStatus
--    Rsyntax INTEGER {
--        active(1),
--        notInService(2),
--        notReady(3),
--        createAndGo(4),
--        createAndWait(5),
--        destroy(6)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The row status for this entry. This value is
         used to create a row in this table, signifying
         that the specified interface is to be associated
         with the specified interface. If this operation
         succeeds, the interface will have been associated,
         otherwise the agent would not allow the association. 
         If the agent only allows read-only operations on
         this table, it will create entries in this table
         as they are created."
    ::= { mplsVpnInterfaceConfEntry 6 }

mplsVpnVrfTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per-interface MPLS/BGP VPN
         VRF Table capability and associated information.
         Entries in this table define VRF routing instances
         associated with MPLS/VPN interfaces. Note that
         multiple interfaces can belong to the same VRF
         instance. The collection of all VRF instances
         comprises an actual VPN."
    ::= { mplsVpnConf 2 }

mplsVpnVrfEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for
         every VRF capable of supporting MPLS/BGP VPN. The
         indexing provides an ordering of VRFs per-VPN
         interface."
    INDEX { mplsVpnVrfName }
    ::= { mplsVpnVrfTable 1 }

MplsVpnVrfEntry ::= SEQUENCE {
    mplsVpnVrfName MplsVpnId,
    mplsVpnVrfDescription SnmpAdminString,
    mplsVpnVrfRouteDistinguisher MplsVpnRouteDistinguisher,
    mplsVpnVrfCreationTime TimeStamp,
    mplsVpnVrfOperStatus INTEGER,
    mplsVpnVrfActiveInterfaces Gauge,
    mplsVpnVrfAssociatedInterfaces Gauge,
    mplsVpnVrfConfMidRouteThreshold Gauge,
    mplsVpnVrfConfHighRouteThreshold Gauge,
    mplsVpnVrfConfMaxRoutes Gauge,
    mplsVpnVrfConfLastChanged TimeStamp,
    mplsVpnVrfConfRowStatus RowStatus,
    mplsVpnVrfConfStorageType StorageType
    }

mplsVpnVrfName OBJECT-TYPE
    SYNTAX MplsVpnId
--    Rsyntax OCTET STRING(SIZE(0..31))
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "The human-readable name of this VPN. This MAY
         be equivalent to the RFC2685 VPN-ID."
    REFERENCE
        "RFC 2685 [VPN-RFC2685] Fox B., et al, `Virtual
        
        
         Private Networks Identifier`, September 1999."
    ::= { mplsVpnVrfEntry 1 }

mplsVpnVrfDescription OBJECT-TYPE
    SYNTAX SnmpAdminString
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The human-readable description of this VRF."
    ::= { mplsVpnVrfEntry 2 }

mplsVpnVrfRouteDistinguisher OBJECT-TYPE
    SYNTAX MplsVpnRouteDistinguisher
--    Rsyntax OCTET STRING(SIZE(0..256))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The route distinguisher for this VRF."
    ::= { mplsVpnVrfEntry 3 }

mplsVpnVrfCreationTime OBJECT-TYPE
    SYNTAX TimeStamp
--    Rsyntax TimeTicks
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The time at which this VRF entry was created."
    ::= { mplsVpnVrfEntry 4 }

mplsVpnVrfOperStatus OBJECT-TYPE
    SYNTAX INTEGER {
        up(1),
        down(2)
        }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Denotes whether a VRF is operational or not. A VRF is 
         up(1) when at least one interface associated with the
         VRF, which ifOperStatus is up(1). A VRF is down(2) when:
        
         a. There does not exist at least one interface whose
            ifOperStatus is up(1).
        
         b. There are no interfaces associated with the VRF."
    ::= { mplsVpnVrfEntry 5 }

mplsVpnVrfActiveInterfaces OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Total number of interfaces connected to this VRF with 
        
        
         ifOperStatus = up(1). 
        
         This counter should be incremented when:
        
         a. When the ifOperStatus of one of the connected interfaces 
            changes from down(2) to up(1).
        
         b. When an interface with ifOperStatus = up(1) is connected
            to this VRF.
        
         This counter should be decremented when:
        
         a. When the ifOperStatus of one of the connected interfaces 
            changes from up(1) to down(2).
        
         b. When one of the connected interfaces with 
            ifOperStatus = up(1) gets disconnected from this VRF."
    ::= { mplsVpnVrfEntry 6 }

mplsVpnVrfAssociatedInterfaces OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Total number of interfaces connected to this VRF 
         (independent of ifOperStatus type)."
    ::= { mplsVpnVrfEntry 7 }

mplsVpnVrfConfMidRouteThreshold OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes mid-level water marker for the number
         of routes which  this VRF may hold."
    ::= { mplsVpnVrfEntry 8 }

mplsVpnVrfConfHighRouteThreshold OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes high-level water marker for the number of
         routes which  this VRF may hold."
    ::= { mplsVpnVrfEntry 9 }

mplsVpnVrfConfMaxRoutes OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes maximum number of routes which this VRF is
         configured to hold. This value MUST be less than or
         equal to mplsVrfMaxPossibleRoutes unless it is set
         to 0."
    ::= { mplsVpnVrfEntry 10 }

mplsVpnVrfConfLastChanged OBJECT-TYPE
    SYNTAX TimeStamp
--    Rsyntax TimeTicks
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The value of sysUpTime at the time of the last
         change of this table entry, which includes changes of
         VRF parameters defined in this table or addition or
         deletion of interfaces associated with this VRF."
    ::= { mplsVpnVrfEntry 11 }

mplsVpnVrfConfRowStatus OBJECT-TYPE
    SYNTAX RowStatus
--    Rsyntax INTEGER {
--        active(1),
--        notInService(2),
--        notReady(3),
--        createAndGo(4),
--        createAndWait(5),
--        destroy(6)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "This variable is used to create, modify, and/or
         delete a row in this table."
    ::= { mplsVpnVrfEntry 12 }

mplsVpnVrfConfStorageType OBJECT-TYPE
    SYNTAX StorageType
--    Rsyntax INTEGER {
--        other(1),
--        volatile(2),
--        nonVolatile(3),
--        permanent(4),
--        readOnly(5)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The storage type for this entry."
    ::= { mplsVpnVrfEntry 13 }

mplsVpnVrfRouteTargetTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfRouteTargetEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per-VRF route target association.
         Each entry identifies a connectivity policy supported
         as part of a VPN."
    ::= { mplsVpnConf 3 }

mplsVpnVrfRouteTargetEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfRouteTargetEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        " An entry in this table is created by an LSR for
         each route target configured for a VRF supporting
         a MPLS/BGP VPN instance. The indexing provides an
         ordering per-VRF instance."
    INDEX { mplsVpnVrfName, mplsVpnVrfRouteTargetIndex, mplsVpnVrfRouteTargetType }
    ::= { mplsVpnVrfRouteTargetTable 1 }

MplsVpnVrfRouteTargetEntry ::= SEQUENCE {
    mplsVpnVrfRouteTargetIndex Gauge,
    mplsVpnVrfRouteTargetType INTEGER,
    mplsVpnVrfRouteTarget MplsVpnRouteDistinguisher,
    mplsVpnVrfRouteTargetDescr DisplayString,
    mplsVpnVrfRouteTargetRowStatus RowStatus
    }

mplsVpnVrfRouteTargetIndex OBJECT-TYPE
    SYNTAX Gauge
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "Auxiliary index for route-targets configured for a 
         particular VRF."
    ::= { mplsVpnVrfRouteTargetEntry 2 }

mplsVpnVrfRouteTargetType OBJECT-TYPE
    SYNTAX INTEGER {
        import(1),
        export(2),
        both(3)
        }
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "The route target export distribution type."
    ::= { mplsVpnVrfRouteTargetEntry 3 }

mplsVpnVrfRouteTarget OBJECT-TYPE
    SYNTAX MplsVpnRouteDistinguisher
--    Rsyntax OCTET STRING(SIZE(0..256))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The route target distribution policy."
    ::= { mplsVpnVrfRouteTargetEntry 4 }

mplsVpnVrfRouteTargetDescr OBJECT-TYPE
    SYNTAX DisplayString
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Description of the route target."
    ::= { mplsVpnVrfRouteTargetEntry 5 }

mplsVpnVrfRouteTargetRowStatus OBJECT-TYPE
    SYNTAX RowStatus
--    Rsyntax INTEGER {
--        active(1),
--        notInService(2),
--        notReady(3),
--        createAndGo(4),
--        createAndWait(5),
--        destroy(6)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Row status for this entry."
    ::= { mplsVpnVrfRouteTargetEntry 6 }

mplsVpnVrfBgpNbrAddrTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfBgpNbrAddrEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "Each entry in this table specifies a per-interface 
         MPLS/EBGP neighbor."
    ::= { mplsVpnConf 4 }

mplsVpnVrfBgpNbrAddrEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfBgpNbrAddrEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for
         every VRF capable of supporting MPLS/BGP VPN. The
         indexing provides an ordering of VRFs per-VPN
         interface."
    INDEX { mplsVpnVrfName, mplsVpnInterfaceConfIndex, mplsVpnVrfBgpNbrIndex }
    ::= { mplsVpnVrfBgpNbrAddrTable 1 }

MplsVpnVrfBgpNbrAddrEntry ::= SEQUENCE {
    mplsVpnVrfBgpNbrIndex Gauge,
    mplsVpnVrfBgpNbrRole INTEGER,
    mplsVpnVrfBgpNbrType InetAddressType,
    mplsVpnVrfBgpNbrAddr InetAddress,
    mplsVpnVrfBgpNbrRowStatus RowStatus,
    mplsVpnVrfBgpNbrStorageType StorageType
    }

mplsVpnVrfBgpNbrIndex OBJECT-TYPE
    SYNTAX Gauge
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This is a unique tertiary index for an entry in the
         MplsVpnVrfBgpNbrAddrEntry Table."
    ::= { mplsVpnVrfBgpNbrAddrEntry 1 }

mplsVpnVrfBgpNbrRole OBJECT-TYPE
    SYNTAX INTEGER {
        ce(1),
        pe(2)
        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes the role played by this EBGP neighbor
         with respect to this VRF."
    ::= { mplsVpnVrfBgpNbrAddrEntry 2 }

mplsVpnVrfBgpNbrType OBJECT-TYPE
    SYNTAX InetAddressType
--    Rsyntax INTEGER {
--        ?? enum value of zero may cause problems
--        unknown(0),
--        ipv4(1),
--        ipv6(2),
--        dns(16)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes the address family of the PE address."
    ::= { mplsVpnVrfBgpNbrAddrEntry 3 }

mplsVpnVrfBgpNbrAddr OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Denotes the EBGP neighbor address."
    ::= { mplsVpnVrfBgpNbrAddrEntry 4 }

mplsVpnVrfBgpNbrRowStatus OBJECT-TYPE
    SYNTAX RowStatus
--    Rsyntax INTEGER {
--        active(1),
--        notInService(2),
--        notReady(3),
--        createAndGo(4),
--        createAndWait(5),
--        destroy(6)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "This variable is used to create, modify, and/or
         delete a row in this table."
    ::= { mplsVpnVrfBgpNbrAddrEntry 5 }

mplsVpnVrfBgpNbrStorageType OBJECT-TYPE
    SYNTAX StorageType
--    Rsyntax INTEGER {
--        other(1),
--        volatile(2),
--        nonVolatile(3),
--        permanent(4),
--        readOnly(5)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The storage type for this entry."
    ::= { mplsVpnVrfBgpNbrAddrEntry 6 }

mplsVpnVrfBgpNbrPrefixTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfBgpNbrPrefixEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per-VRF vpnv4 multi-protocol
         prefixes supported by BGP."
    ::= { mplsVpnConf 5 }

mplsVpnVrfBgpNbrPrefixEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfBgpNbrPrefixEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for
         every BGP prefix associated with a VRF supporting a 
         MPLS/BGP VPN. The indexing provides an ordering of 
         BGP prefixes per VRF."
    INDEX { mplsVpnVrfName, mplsVpnVrfBgpPathAttrIpAddrPrefix, mplsVpnVrfBgpPathAttrIpAddrPrefixLen, mplsVpnVrfBgpPathAttrPeer }
    ::= { mplsVpnVrfBgpNbrPrefixTable 1 }

MplsVpnVrfBgpNbrPrefixEntry ::= SEQUENCE {
    mplsVpnVrfBgpPathAttrPeer InetAddress,
    mplsVpnVrfBgpPathAttrIpAddrPrefixLen INTEGER,
    mplsVpnVrfBgpPathAttrIpAddrPrefix InetAddress,
    mplsVpnVrfBgpPathAttrOrigin INTEGER,
    mplsVpnVrfBgpPathAttrASPathSegment OCTET STRING,
    mplsVpnVrfBgpPathAttrNextHop InetAddress,
    mplsVpnVrfBgpPathAttrMultiExitDisc INTEGER,
    mplsVpnVrfBgpPathAttrLocalPref INTEGER,
    mplsVpnVrfBgpPathAttrAtomicAggregate INTEGER,
    mplsVpnVrfBgpPathAttrAggregatorAS INTEGER,
    mplsVpnVrfBgpPathAttrAggregatorAddr InetAddress,
    mplsVpnVrfBgpPathAttrCalcLocalPref INTEGER,
    mplsVpnVrfBgpPathAttrBest INTEGER,
    mplsVpnVrfBgpPathAttrUnknown OCTET STRING
    }

mplsVpnVrfBgpPathAttrPeer OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "The IP address of the peer where the path
         information was learned."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 1 }

mplsVpnVrfBgpPathAttrIpAddrPrefixLen OBJECT-TYPE
    SYNTAX INTEGER(0..32)
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "Length in bits of the IP address prefix
         in the Network Layer Reachability
         Information field."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 2 }

mplsVpnVrfBgpPathAttrIpAddrPrefix OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An IP address prefix in the Network Layer
         Reachability Information field.  This object
         is an IP address containing the prefix with
         length specified by mplsVpnVrfBgpPathAttrIpAddrPrefixLen.
         Any bits beyond the length specified by
         mplsVpnVrfBgpPathAttrIpAddrPrefixLen are zeroed."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 3 }

mplsVpnVrfBgpPathAttrOrigin OBJECT-TYPE
    SYNTAX INTEGER {
        igp(1),
        egp(2),
        incomplete(3)
        }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The ultimate origin of the path
         information."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 4 }

mplsVpnVrfBgpPathAttrASPathSegment OBJECT-TYPE
    SYNTAX OCTET STRING(SIZE(2..255))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The sequence of AS path segments.  Each AS
         path segment is represented by a triple
         <type, length, value>.
        
          The type is a 1-octet field which has two
          possible values:
              1      AS_SET: unordered set of ASs a
                     route in the UPDATE
                     message has traversed
              2      AS_SEQUENCE: ordered set of ASs
                     a route in the UPDATE
                     message has traversed.
                     The length is a 1-octet field containing the
        
        
                     number of ASs in the value field.
        
                     The value field contains one or more AS
                     numbers, each AS is represented in the octet
                     string as a pair of octets according to the
                     following algorithm:
        
                     first-byte-of-pair = ASNumber / 256;
                     second-byte-of-pair = ASNumber & 255;"
    ::= { mplsVpnVrfBgpNbrPrefixEntry 5 }

mplsVpnVrfBgpPathAttrNextHop OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The address of the border router that
         should be used for the destination
         network."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 6 }

mplsVpnVrfBgpPathAttrMultiExitDisc OBJECT-TYPE
    SYNTAX INTEGER(-1..2147483647)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "This metric is used to discriminate
         between multiple exit points to an
         adjacent autonomous system.  A value of -1
         indicates the absence of this attribute."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 7 }

mplsVpnVrfBgpPathAttrLocalPref OBJECT-TYPE
    SYNTAX INTEGER(-1..2147483647)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The originating BGP4 speaker's degree of
         preference for an advertised route.  A
         value of -1 indicates the absence of this
         attribute."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 8 }

mplsVpnVrfBgpPathAttrAtomicAggregate OBJECT-TYPE
    SYNTAX INTEGER {
        lessSpecificRrouteNotSelected(1),
        lessSpecificRouteSelected(2)
        }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Whether or not the local system has
         selected a less specific route without
         selecting a more specific route."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 9 }

mplsVpnVrfBgpPathAttrAggregatorAS OBJECT-TYPE
    SYNTAX INTEGER(0..65535)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The AS number of the last BGP4 speaker that
         performed route aggregation.  A value of
         zero (0) indicates the absence of this
         attribute."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 10 }

mplsVpnVrfBgpPathAttrAggregatorAddr OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The IP address of the last BGP4 speaker
         that performed route aggregation.  A value
         of 0.0.0.0 indicates the absence of this
         attribute."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 11 }

mplsVpnVrfBgpPathAttrCalcLocalPref OBJECT-TYPE
    SYNTAX INTEGER(-1..2147483647)
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The degree of preference calculated by the
         receiving BGP4 speaker for an advertised
         route.  A value of -1 indicates the
         absence of this attribute."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 12 }

mplsVpnVrfBgpPathAttrBest OBJECT-TYPE
    SYNTAX INTEGER {
        false(1),
        true(2)
        }
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "An indication of whether or not this route
         was chosen as the best BGP4 route."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 13 }

mplsVpnVrfBgpPathAttrUnknown OBJECT-TYPE
    SYNTAX OCTET STRING(SIZE(0..255))
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "One or more path attributes not understood
         by this BGP4 speaker.  Size zero (0)
         indicates the absence of such
         attribute(s).  Octets beyond the maximum
         size, if any, are not recorded by this
         object."
    ::= { mplsVpnVrfBgpNbrPrefixEntry 14 }

mplsVpnVrfSecTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfSecEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per MPLS/BGP VPN VRF Table security
         features."
    ::= { mplsVpnConf 6 }

mplsVpnVrfSecEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfSecEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for
         every VRF capable of supporting MPLS/BGP VPN. Each
         entry in this table is used to indicate security-related
         information for each VRF entry."
    INDEX { mplsVpnVrfName }
-- Augments mplsVpnVrfEntry
    ::= { mplsVpnVrfSecTable 1 }

MplsVpnVrfSecEntry ::= SEQUENCE {
    mplsVpnVrfSecIllegalLabelViolations Counter,
    mplsVpnVrfSecIllegalLabelRcvThresh Gauge
    }

mplsVpnVrfSecIllegalLabelViolations OBJECT-TYPE
    SYNTAX Counter
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Indicates the number of illegally received labels on this VPN/VRF."
    ::= { mplsVpnVrfSecEntry 1 }

mplsVpnVrfSecIllegalLabelRcvThresh OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The number of illegally received labels above which this 
         notification is issued."
    ::= { mplsVpnVrfSecEntry 2 }

mplsVpnVrfPerfTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfPerfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per MPLS/BGP VPN VRF Table performance
         information."
    ::= { mplsVpnPerf 1 }

mplsVpnVrfPerfEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfPerfEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for
         every VRF capable of supporting MPLS/BGP VPN."
    INDEX { mplsVpnVrfName }
-- Augments mplsVpnVrfEntry
    ::= { mplsVpnVrfPerfTable 1 }

MplsVpnVrfPerfEntry ::= SEQUENCE {
    mplsVpnVrfPerfRoutesAdded Counter,
    mplsVpnVrfPerfRoutesDeleted Counter,
    mplsVpnVrfPerfCurrNumRoutes Gauge
    }

mplsVpnVrfPerfRoutesAdded OBJECT-TYPE
    SYNTAX Counter
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Indicates the number of routes added to this VPN/VRF over the
         coarse of its lifetime."
    ::= { mplsVpnVrfPerfEntry 1 }

mplsVpnVrfPerfRoutesDeleted OBJECT-TYPE
    SYNTAX Counter
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Indicates the number of routes removed from this VPN/VRF."
    ::= { mplsVpnVrfPerfEntry 2 }

mplsVpnVrfPerfCurrNumRoutes OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "Indicates the number of routes currently used by this VRF."
    ::= { mplsVpnVrfPerfEntry 3 }

mplsVpnVrfRouteTable OBJECT-TYPE
    SYNTAX SEQUENCE OF MplsVpnVrfRouteEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "This table specifies per-interface MPLS/BGP VPN VRF Table
         routing information. Entries in this table define VRF routing
         entries associated with the specified MPLS/VPN interfaces. Note
         that this table contains both BGP and IGP routes, as both may
         appear in the same VRF."
    REFERENCE
        "1.  RFC 1213 Section 6.6, The IP Group.
         2.  RFC 2096 "
    ::= { mplsVpnRoute 1 }

mplsVpnVrfRouteEntry OBJECT-TYPE
    SYNTAX MplsVpnVrfRouteEntry
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "An entry in this table is created by an LSR for every route
         present configured (either dynamically or statically) within
         the context of a specific VRF capable of supporting MPLS/BGP
         VPN. The indexing provides an ordering of VRFs per-VPN
         interface."
    INDEX { mplsVpnVrfName, mplsVpnVrfRouteDest, mplsVpnVrfRouteMask, mplsVpnVrfRouteTos, mplsVpnVrfRouteNextHop }
    ::= { mplsVpnVrfRouteTable 1 }

MplsVpnVrfRouteEntry ::= SEQUENCE {
    mplsVpnVrfRouteDest InetAddress,
    mplsVpnVrfRouteDestAddrType InetAddressType,
    mplsVpnVrfRouteMask InetAddress,
    mplsVpnVrfRouteMaskAddrType InetAddressType,
    mplsVpnVrfRouteTos Gauge,
    mplsVpnVrfRouteNextHop InetAddress,
    mplsVpnVrfRouteNextHopAddrType InetAddressType,
    mplsVpnVrfRouteIfIndex InterfaceIndex,
    mplsVpnVrfRouteType INTEGER,
    mplsVpnVrfRouteProto INTEGER,
    mplsVpnVrfRouteAge Gauge,
    mplsVpnVrfRouteInfo OBJECT IDENTIFIER,
    mplsVpnVrfRouteNextHopAS Gauge,
    mplsVpnVrfRouteMetric1 INTEGER,
    mplsVpnVrfRouteMetric2 INTEGER,
    mplsVpnVrfRouteMetric3 INTEGER,
    mplsVpnVrfRouteMetric4 INTEGER,
    mplsVpnVrfRouteMetric5 INTEGER,
    mplsVpnVrfRouteRowStatus RowStatus,
    mplsVpnVrfRouteStorageType StorageType
    }

mplsVpnVrfRouteDest OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "The destination IP address of this route.
         This object may not take a Multicast (Class D)
         address value.
        
         Any assignment (implicit or otherwise) of an
         instance of this object to a value x must be
         rejected if the bit-wise logical-AND of x with
         the value of the corresponding instance of the
         mplsVpnVrfRouteMask object is not equal to x."
    ::= { mplsVpnVrfRouteEntry 1 }

mplsVpnVrfRouteDestAddrType OBJECT-TYPE
    SYNTAX InetAddressType
--    Rsyntax INTEGER {
--        ?? enum value of zero may cause problems
--        unknown(0),
--        ipv4(1),
--        ipv6(2),
--        dns(16)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The address type of the mplsVpnVrfRouteDest
         entry."
    ::= { mplsVpnVrfRouteEntry 2 }

mplsVpnVrfRouteMask OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "Indicate the mask to be logical-ANDed with the
         destination  address  before  being compared to
         the value  in  the  mplsVpnVrfRouteDest field.
         For those  systems  that  do  not support
         arbitrary subnet masks, an agent constructs the
         value of the mplsVpnVrfRouteMask by reference
        
        
         to the IP Address Class.
        
         Any assignment (implicit or otherwise) of an
         instance of this object to a value x must be
         rejected if the bit-wise logical-AND of x with
         the value of the corresponding instance of the
         mplsVpnVrfRouteDest object is not equal to
         mplsVpnVrfRouteDest."
    ::= { mplsVpnVrfRouteEntry 3 }

mplsVpnVrfRouteMaskAddrType OBJECT-TYPE
    SYNTAX InetAddressType
--    Rsyntax INTEGER {
--        ?? enum value of zero may cause problems
--        unknown(0),
--        ipv4(1),
--        ipv6(2),
--        dns(16)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The address type of mplsVpnVrfRouteMask."
    ::= { mplsVpnVrfRouteEntry 4 }

mplsVpnVrfRouteTos OBJECT-TYPE
    SYNTAX Gauge
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "The IP TOS Field is used to specify the policy to
         be applied to this route.  The encoding of IP TOS
         is as specified  by  the  following convention.
         Zero indicates the default path if no more
         specific policy applies.
        
         +-----+-----+-----+-----+-----+-----+-----+-----+
         |                 |                       |     |
         |   PRECEDENCE    |    TYPE OF SERVICE    |  0  |
         |                 |                       |     |
         +-----+-----+-----+-----+-----+-----+-----+-----+
        
                    IP TOS                IP TOS
               Field     Policy      Field     Policy
               Contents    Code      Contents    Code
               0 0 0 0  ==>   0      0 0 0 1  ==>   2
               0 0 1 0  ==>   4      0 0 1 1  ==>   6
               0 1 0 0  ==>   8      0 1 0 1  ==>  10
               0 1 1 0  ==>  12      0 1 1 1  ==>  14
               1 0 0 0  ==>  16      1 0 0 1  ==>  18
               1 0 1 0  ==>  20      1 0 1 1  ==>  22
               1 1 0 0  ==>  24      1 1 0 1  ==>  26
               1 1 1 0  ==>  28      1 1 1 1  ==>  30."
    ::= { mplsVpnVrfRouteEntry 5 }

mplsVpnVrfRouteNextHop OBJECT-TYPE
    SYNTAX InetAddress
--    Rsyntax OCTET STRING(SIZE(0..255))
    ACCESS not-accessible
    STATUS mandatory
    DESCRIPTION
        "On remote routes, the address of the next
         system en route; Otherwise, 0.0.0.0. ."
    ::= { mplsVpnVrfRouteEntry 6 }

mplsVpnVrfRouteNextHopAddrType OBJECT-TYPE
    SYNTAX InetAddressType
--    Rsyntax INTEGER {
--        ?? enum value of zero may cause problems
--        unknown(0),
--        ipv4(1),
--        ipv6(2),
--        dns(16)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The address type of the mplsVpnVrfRouteNextHopAddrType
         object."
    ::= { mplsVpnVrfRouteEntry 7 }

mplsVpnVrfRouteIfIndex OBJECT-TYPE
    SYNTAX InterfaceIndex
--    Rsyntax INTEGER(1..2147483647)
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The ifIndex value that identifies the local
         interface  through  which  the next hop of this
         route should be reached."
    ::= { mplsVpnVrfRouteEntry 8 }

mplsVpnVrfRouteType OBJECT-TYPE
    SYNTAX INTEGER {
        other(1),
        reject(2),
        local(3),
        remote(4)
        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The type of route.  Note that local(3)  refers
         to a route for which the next hop is the final
         destination; remote(4) refers to a route for
         that the next  hop is not the final destination.
         Routes which do not result in traffic forwarding or
         rejection should not be displayed even if the
         implementation keeps them stored internally.
        
         reject (2) refers to a route which, if matched,
         discards the message as unreachable. This is used
         in some protocols as a means of correctly aggregating
         routes."
    ::= { mplsVpnVrfRouteEntry 9 }

mplsVpnVrfRouteProto OBJECT-TYPE
    SYNTAX INTEGER {
        other(1),
        local(2),
        netmgmt(3),
        icmp(4),
        egp(5),
        ggp(6),
        hello(7),
        rip(8),
        isIs(9),
        esIs(10),
        ciscoIgrp(11),
        bbnSpfIgp(12),
        ospf(13),
        bgp(14),
        idpr(15),
        ciscoEigrp(16)
        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The routing mechanism via which this route was
         learned.  Inclusion of values for gateway rout-
         ing protocols is not  intended  to  imply  that
         hosts should support those protocols."
    ::= { mplsVpnVrfRouteEntry 10 }

mplsVpnVrfRouteAge OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-only
    STATUS mandatory
    DESCRIPTION
        "The number of seconds since this route was
         last updated or otherwise determined to be
         correct. Note that no semantics of `too old'
         can be implied except through knowledge of the
         routing protocol by which the route was
         learned."
    ::= { mplsVpnVrfRouteEntry 11 }

mplsVpnVrfRouteInfo OBJECT-TYPE
    SYNTAX OBJECT IDENTIFIER
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "A reference to MIB definitions specific to the
         particular routing protocol which is responsi-
        
        
         ble for this route, as determined by the  value
         specified  in the route's mplsVpnVrfRouteProto
         value. If this information is not present, its
         value SHOULD be set to the OBJECT IDENTIFIER
         { 0 0 }, which is a syntactically valid object
         identif-ier, and any implementation conforming
         to ASN.1 and the Basic Encoding Rules must be
         able to generate and recognize this value."
    ::= { mplsVpnVrfRouteEntry 12 }

mplsVpnVrfRouteNextHopAS OBJECT-TYPE
    SYNTAX Gauge
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The Autonomous System Number of the Next Hop.
         The semantics of this object are determined by
         the routing-protocol specified in the route's
         mplsVpnVrfRouteProto value. When this object is
         unknown or not relevant its value should be set
         to zero."
    ::= { mplsVpnVrfRouteEntry 13 }

mplsVpnVrfRouteMetric1 OBJECT-TYPE
    SYNTAX INTEGER
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "The primary routing metric for this route.
         The semantics of this metric are determined by
         the routing-protocol specified in  the  route's
         mplsVpnVrfRouteProto value. If this metric is not
         used, its value should be set to -1."
    ::= { mplsVpnVrfRouteEntry 14 }

mplsVpnVrfRouteMetric2 OBJECT-TYPE
    SYNTAX INTEGER
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "An alternate routing metric for this route.
         The semantics of this metric are determined by
         the routing-protocol specified in  the  route's
         mplsVpnVrfRouteProto value. If this metric is not
         used, its value should be set to -1."
    ::= { mplsVpnVrfRouteEntry 15 }

mplsVpnVrfRouteMetric3 OBJECT-TYPE
    SYNTAX INTEGER
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "An alternate routing metric for this route.
         The semantics of this metric are determined by
         the routing-protocol specified in  the  route's
         mplsVpnVrfRouteProto value. If this metric is not
         used, its value should be set to -1."
    ::= { mplsVpnVrfRouteEntry 16 }

mplsVpnVrfRouteMetric4 OBJECT-TYPE
    SYNTAX INTEGER
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "An alternate routing metric for this route.
         The semantics of this metric are determined by
         the routing-protocol specified in  the  route's
         mplsVpnVrfRouteProto value. If this metric is not
         used, its value should be set to -1."
    ::= { mplsVpnVrfRouteEntry 17 }

mplsVpnVrfRouteMetric5 OBJECT-TYPE
    SYNTAX INTEGER
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "An alternate routing metric for this route.
         The semantics of this metric are determined by
         the routing-protocol specified in  the  route's
         mplsVpnVrfRouteProto value. If this metric is not
         used, its value should be set to -1."
    ::= { mplsVpnVrfRouteEntry 18 }

mplsVpnVrfRouteRowStatus OBJECT-TYPE
    SYNTAX RowStatus
--    Rsyntax INTEGER {
--        active(1),
--        notInService(2),
--        notReady(3),
--        createAndGo(4),
--        createAndWait(5),
--        destroy(6)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Row status for this table. It is used according
         to row installation and removal conventions."
    ::= { mplsVpnVrfRouteEntry 19 }

mplsVpnVrfRouteStorageType OBJECT-TYPE
    SYNTAX StorageType
--    Rsyntax INTEGER {
--        other(1),
--        volatile(2),
--        nonVolatile(3),
--        permanent(4),
--        readOnly(5)
--        }
    ACCESS read-write
    STATUS mandatory
    DESCRIPTION
        "Storage type value."
    ::= { mplsVpnVrfRouteEntry 20 }

mplsVrfIfUp TRAP-TYPE
-- Reverse mappable trap
    ENTERPRISE mplsVpnMIB
--  Status
--    mandatory
    DESCRIPTION
        "This notification is generated when:
         a. The ifOperStatus of an interface associated with a VRF 
            changes to the up(1) state.
         b. When an interface with ifOperStatus = up(1) is 
            associated with a VRF."
    ::= 1

mplsVrfIfDown TRAP-TYPE
-- Reverse mappable trap
    ENTERPRISE mplsVpnMIB
--  Status
--    mandatory
    DESCRIPTION
        "This notification is generated when:
         a. The ifOperStatus of an interface associated with a VRF 
            changes to the down(1) state.
         b. When an interface with ifOperStatus = up(1) state is 
            disassociated with a VRF."
    ::= 2

mplsNumVrfRouteMidThreshExceeded TRAP-TYPE
-- Reverse mappable trap
    ENTERPRISE mplsVpnMIB
--  Status
--    mandatory
    DESCRIPTION
        "This notification is generated when the number of routes
         contained by the specified VRF exceeds the value indicated by
         mplsVrfMidRouteThreshold."
    ::= 3

mplsNumVrfRouteMaxThreshExceeded TRAP-TYPE
-- Reverse mappable trap
    ENTERPRISE mplsVpnMIB
--  Status
--    mandatory
    DESCRIPTION
        "This notification is generated when the number of routes
         contained by the specified VRF reaches or attempts to exceed
         the maximum allowed value as indicated by
         mplsVrfMaxRouteThreshold."
    ::= 4

mplsNumVrfSecIllegalLabelThreshExceeded TRAP-TYPE
-- Reverse mappable trap
    ENTERPRISE mplsVpnMIB
--  Status
--    mandatory
    DESCRIPTION
        "This notification is generated when the number of illegal
         label violations on a VRF as indicated by 
         mplsVpnVrfSecIllegalLabelViolations has exceeded 
         mplsVpnVrfSecIllegalLabelRcvThresh. The threshold is not 
         included in the varbind here because the value of 
         mplsVpnVrfSecIllegalLabelViolations should be one greater than 
         the threshold at the time this notification is issued."
    ::= 5

mplsVpnScalarGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 1 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of scalar objects required for MPLS VPN
--     management.
--  objects
--    mplsVpnConfiguredVrfs, mplsVpnActiveVrfs, 
--    mplsVpnConnectedInterfaces, mplsVpnNotificationEnable, 
--    mplsVpnVrfConfMaxPossibleRoutes

mplsVpnVrfGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 2 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of objects needed for MPLS VPN VRF
--     management.
--  objects
--    mplsVpnVrfDescription, mplsVpnVrfRouteDistinguisher, 
--    mplsVpnVrfCreationTime, mplsVpnVrfOperStatus, 
--    mplsVpnVrfActiveInterfaces, mplsVpnVrfAssociatedInterfaces, 
--    mplsVpnVrfConfMidRouteThreshold, 
--    mplsVpnVrfConfHighRouteThreshold, mplsVpnVrfConfMaxRoutes, 
--    mplsVpnVrfConfLastChanged, mplsVpnVrfConfRowStatus, 
--    mplsVpnVrfConfStorageType

mplsVpnInterfaceGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 3 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of objects needed for MPLS VPN interface
--     management.
--  objects
--    mplsVpnInterfaceLabelEdgeType, 
--    mplsVpnInterfaceVpnClassification, 
--    mplsVpnInterfaceVpnRouteDistProtocol, 
--    mplsVpnInterfaceConfStorageType, 
--    mplsVpnInterfaceConfRowStatus

mplsVpnPerfGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 4 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of objects needed for MPLS VPN
--     performance information.
--  objects
--    mplsVpnVrfPerfRoutesAdded, mplsVpnVrfPerfRoutesDeleted, 
--    mplsVpnVrfPerfCurrNumRoutes

mplsVpnVrfBgpNbrGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 5 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of objects needed for MPLS VPN
--     bgp neighbor-related information.
--  objects
--    mplsVpnVrfBgpNbrRole, mplsVpnVrfBgpNbrType, 
--    mplsVpnVrfBgpNbrAddr, mplsVpnVrfBgpNbrRowStatus, 
--    mplsVpnVrfBgpNbrStorageType

mplsVpnVrfBgpPrefixGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 6 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of objects needed for MPLS VPN
--     bgp neighbor-related information.
--  objects
--    mplsVpnVrfBgpPathAttrOrigin, 
--    mplsVpnVrfBgpPathAttrASPathSegment, 
--    mplsVpnVrfBgpPathAttrNextHop, 
--    mplsVpnVrfBgpPathAttrMultiExitDisc, 
--    mplsVpnVrfBgpPathAttrLocalPref, 
--    mplsVpnVrfBgpPathAttrAtomicAggregate, 
--    mplsVpnVrfBgpPathAttrAggregatorAS, 
--    mplsVpnVrfBgpPathAttrAggregatorAddr, 
--    mplsVpnVrfBgpPathAttrCalcLocalPref, mplsVpnVrfBgpPathAttrBest, 
--    mplsVpnVrfBgpPathAttrUnknown

mplsVpnSecGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 7 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Collection of objects needed for MPLS VPN
--     security-related information.
--  objects
--    mplsVpnVrfSecIllegalLabelViolations, 
--    mplsVpnVrfSecIllegalLabelRcvThresh

mplsVpnVrfRouteGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 8 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Objects required for VRF route table management.
--  objects
--    mplsVpnVrfRouteDestAddrType, mplsVpnVrfRouteMaskAddrType, 
--    mplsVpnVrfRouteNextHopAddrType, mplsVpnVrfRouteIfIndex, 
--    mplsVpnVrfRouteType, mplsVpnVrfRouteProto, mplsVpnVrfRouteAge, 
--    mplsVpnVrfRouteInfo, mplsVpnVrfRouteNextHopAS, 
--    mplsVpnVrfRouteMetric1, mplsVpnVrfRouteMetric2, 
--    mplsVpnVrfRouteMetric3, mplsVpnVrfRouteMetric4, 
--    mplsVpnVrfRouteMetric5, mplsVpnVrfRouteRowStatus, 
--    mplsVpnVrfRouteStorageType

mplsVpnVrfRouteTargetGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 9 }
-- OBJECT-GROUP
--  Status
--    mandatory
--  Descr
--    Objects required for VRF route target management.
--  objects
--    mplsVpnVrfRouteTarget, mplsVpnVrfRouteTargetDescr, 
--    mplsVpnVrfRouteTargetRowStatus

mplsVpnNotificationGroup OBJECT IDENTIFIER ::= { mplsVpnGroups 10 }
-- NOTIFICATION-GROUP
--  Status
--    mandatory
--  Descr
--    Objects required for MPLS VPN notifications.
--  notifications
--    mplsVrfIfUp, mplsVrfIfDown, mplsNumVrfRouteMidThreshExceeded, 
--    mplsNumVrfRouteMaxThreshExceeded, 
--    mplsNumVrfSecIllegalLabelThreshExceeded

mplsVpnModuleCompliance OBJECT IDENTIFIER ::= { mplsVpnCompliances 1 }
-- MODULE-COMPLIANCE
--  Status
--    mandatory
--  Descr
--    Compliance statement for agents that support the
--     MPLS VPN MIB.
--  Module
--    >>current<<
--   MandGroup
--    mplsVpnScalarGroup
--   MandGroup
--    mplsVpnVrfGroup
--   MandGroup
--    mplsVpnInterfaceGroup
--   MandGroup
--    mplsVpnPerfGroup
--   MandGroup
--    mplsVpnVrfRouteGroup
--   MandGroup
--    mplsVpnVrfBgpNbrGroup
--   MandGroup
--    mplsVpnVrfRouteTargetGroup


END

