-- *****************************************************************************
-- draft-ietf-idr-bgp4-mib-07.txt
--
-- Copyright (c) The Internet Society (1999).  All Rights Reserved.
--
-- Unisphere Networks, Inc. edits to this MIB:                         ** UNI **
-- 08/14/01    kwc    Added RESISION to MODULE-IDENTITY.
-- *****************************************************************************

BGP4-MIB DEFINITIONS ::= BEGIN

           IMPORTS
               MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
               IpAddress, Integer32, Counter32, Gauge32, mib-2
                   FROM SNMPv2-SMI
               MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
                   FROM SNMPv2-CONF;

           bgp MODULE-IDENTITY
               LAST-UPDATED "200106010000Z"
               ORGANIZATION "IETF IDR Working Group"
               CONTACT-INFO "E-mail:  idr@merit.net

                             Jeff Haas  (Editor)
                             517 W. William Street
                             Ann Arbor, MI 48103-4943
                             Tel: +1 734 973-2200
                             Fax: +1 734 615-3241
                             E-mail: skh@nexthop.com"

               DESCRIPTION
                       "1) Fixed the definitions of the traps to
                           make them equivalent to their initial
                           definition in RFC 1269.
                        2) Added compliance and conformance info.
                        3) Updated for latest BGP information
                           draft-ietf-idr-bgp4-10.txt for value of
                           bgpPeerNegotiatedVersion, bgp4PathAttrLocalPref,
                           bgp4PathAttrCalcLocalPref,bgp4PathAttrMultiExitDisc,
                           bgp4PathAttrASPathSegement.
                        4) Added additional clarification commments where
                           needed.
                        5) Noted where objects do not fully reflect
                           the protocol as Known Issues."
               REVISION    "200106010000Z"                          -- ** UNI **
               DESCRIPTION                                          -- ** UNI **
                   "New version of this MIB."                       -- ** UNI **
               REVISION    "9405050000Z"                            -- ** UNI **
               DESCRIPTION                                          -- ** UNI **
                   "Initial version, published as RFC 1657."        -- ** UNI **
               ::= { mib-2 15 }

           bgpVersion OBJECT-TYPE
               SYNTAX     OCTET STRING (SIZE (1..255))
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "Vector of supported BGP protocol version
                       numbers.  Each peer negotiates the version
                       from this vector.  Versions are identified
                       via the string of bits contained within this
                       object.  The first octet contains bits 0 to
                       7, the second octet contains bits 8 to 15,
                       and so on, with the most significant bit
                       referring to the lowest bit number in the
                       octet (e.g., the MSB of the first octet
                       refers to bit 0).  If a bit, i, is present
                       and set, then the version (i+1) of the BGP
                       is supported."
               ::= { bgp 1 }

           bgpLocalAs OBJECT-TYPE
               SYNTAX     Integer32 (0..65535)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The local autonomous system number."
               ::= { bgp 2 }

           -- BGP Peer table.  This table contains, one entry per
           -- BGP peer, information about the BGP peer.

           bgpPeerTable OBJECT-TYPE
               SYNTAX     SEQUENCE OF BgpPeerEntry
               MAX-ACCESS not-accessible
               STATUS     current
               DESCRIPTION
                       "BGP peer table.  This table contains,
                       one entry per BGP peer, information about the
                       connections with BGP peers."
               ::= { bgp 3 }

           bgpPeerEntry OBJECT-TYPE
               SYNTAX     BgpPeerEntry
               MAX-ACCESS not-accessible
               STATUS     current
               DESCRIPTION
                       "Entry containing information about the
                       connection with a BGP peer."
               INDEX { bgpPeerRemoteAddr }
               ::= { bgpPeerTable 1 }

           BgpPeerEntry ::= SEQUENCE {
                   bgpPeerIdentifier
                       IpAddress,
                   bgpPeerState
                       INTEGER,
                   bgpPeerAdminStatus
                       INTEGER,
                   bgpPeerNegotiatedVersion
                       Integer32,
                   bgpPeerLocalAddr
                       IpAddress,
                   bgpPeerLocalPort
                       Integer32,
                   bgpPeerRemoteAddr
                       IpAddress,
                   bgpPeerRemotePort
                       Integer32,
                   bgpPeerRemoteAs
                       Integer32,
                   bgpPeerInUpdates
                       Counter32,
                   bgpPeerOutUpdates
                       Counter32,
                   bgpPeerInTotalMessages
                       Counter32,
                   bgpPeerOutTotalMessages
                       Counter32,
                   bgpPeerLastError
                       OCTET STRING,
                   bgpPeerFsmEstablishedTransitions
                       Counter32,
                   bgpPeerFsmEstablishedTime
                       Gauge32,
                   bgpPeerConnectRetryInterval
                       Integer32,
                   bgpPeerHoldTime
                       Integer32,
                   bgpPeerKeepAlive
                       Integer32,
                   bgpPeerHoldTimeConfigured
                       Integer32,
                   bgpPeerKeepAliveConfigured
                       Integer32,
                   bgpPeerMinASOriginationInterval
                       Integer32,
                   bgpPeerMinRouteAdvertisementInterval
                       Integer32,
                   bgpPeerInUpdateElapsedTime
                       Gauge32
                   }

           bgpPeerIdentifier OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The BGP Identifier of this entry's BGP peer.
                        This entry should be 0.0.0.0 unless the
                        bgpPeerState is in the openconfirm or the
                        established state."
               ::= { bgpPeerEntry 1 }

           bgpPeerState OBJECT-TYPE
               SYNTAX     INTEGER {
                                   idle(1),
                                   connect(2),
                                   active(3),
                                   opensent(4),
                                   openconfirm(5),
                                   established(6)
                          }
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The BGP peer connection state."
               ::= { bgpPeerEntry 2 }

           bgpPeerAdminStatus OBJECT-TYPE
               SYNTAX     INTEGER {
                                   stop(1),
                                   start(2)
                          }
               MAX-ACCESS read-write
               STATUS     current
               DESCRIPTION
                       "The desired state of the BGP connection.
                       A transition from 'stop' to 'start' will
                       cause the BGP Start Event to be generated.
                       A transition from 'start' to 'stop' will
                       cause the BGP Stop Event to be generated.
                       This parameter can be used to restart BGP
                       peer connections.  Care should be used in
                       providing write access to this object
                       without adequate authentication."
               ::= { bgpPeerEntry 3 }

           bgpPeerNegotiatedVersion OBJECT-TYPE
               SYNTAX     Integer32 (1..255)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The negotiated version of BGP running between
                       the two peers."
               ::= { bgpPeerEntry 4 }

           bgpPeerLocalAddr OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The local IP address of this entry's BGP
                       connection."
               ::= { bgpPeerEntry 5 }

           bgpPeerLocalPort OBJECT-TYPE
               SYNTAX     Integer32 (0..65535)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The local port for the TCP connection between
                       the BGP peers."
               ::= { bgpPeerEntry 6 }

           bgpPeerRemoteAddr OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The remote IP address of this entry's BGP
                       peer."
               ::= { bgpPeerEntry 7 }

           bgpPeerRemotePort OBJECT-TYPE
               SYNTAX     Integer32 (0..65535)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The remote port for the TCP connection
                       between the BGP peers.  Note that the
                       OBJECts bgpPeerLocalAddr,
                       bgpPeerLocalPort, bgpPeerRemoteAddr and
                       bgpPeerRemotePort provide the appropriate
                       reference to the standard MIB TCP
                       connection table."
               ::= { bgpPeerEntry 8 }

           bgpPeerRemoteAs OBJECT-TYPE
               SYNTAX     Integer32 (0..65535)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The remote autonomous system number."
               ::= { bgpPeerEntry 9 }

           bgpPeerInUpdates OBJECT-TYPE
               SYNTAX     Counter32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The number of BGP UPDATE messages
                       received on this connection.  This object
                       should be initialized to zero (0) when the
                       connection is established."
               ::= { bgpPeerEntry 10 }

           bgpPeerOutUpdates OBJECT-TYPE
               SYNTAX     Counter32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The number of BGP UPDATE messages
                       transmitted on this connection.  This
                       object should be initialized to zero (0)
                       when the connection is established."
               ::= { bgpPeerEntry 11 }

           bgpPeerInTotalMessages OBJECT-TYPE
               SYNTAX     Counter32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The total number of messages received
                       from the remote peer on this connection.
                       This object should be initialized to zero
                       when the connection is established."
               ::= { bgpPeerEntry 12 }

           bgpPeerOutTotalMessages OBJECT-TYPE
               SYNTAX     Counter32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The total number of messages transmitted to
                       the remote peer on this connection.  This
                       object should be initialized to zero when
                       the connection is established."
               ::= { bgpPeerEntry 13 }

           bgpPeerLastError OBJECT-TYPE
               SYNTAX     OCTET STRING (SIZE (2))
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The last error code and subcode seen by this
                       peer on this connection.  If no error has
                       occurred, this field is zero.  Otherwise, the
                       first byte of this two byte OCTET STRING
                       contains the error code, and the second byte
                       contains the subcode."
               ::= { bgpPeerEntry 14 }

           bgpPeerFsmEstablishedTransitions OBJECT-TYPE
               SYNTAX     Counter32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The total number of times the BGP FSM
                       transitioned into the established state
                       for this peer."
               ::= { bgpPeerEntry 15 }

           bgpPeerFsmEstablishedTime OBJECT-TYPE
               SYNTAX     Gauge32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "This timer indicates how long (in
                       seconds) this peer has been in the
                       Established state or how long
                       since this peer was last in the
                       Established state.  It is set to zero when
                       a new peer is configured or the router is
                       booted."
               ::= { bgpPeerEntry 16 }

           bgpPeerConnectRetryInterval OBJECT-TYPE
               SYNTAX     Integer32 (1..65535)
               MAX-ACCESS read-write
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the
                       ConnectRetry timer.  The suggested value
                       for this timer is 120 seconds."
               ::= { bgpPeerEntry 17 }

           bgpPeerHoldTime OBJECT-TYPE
               SYNTAX     Integer32  ( 0 | 3..65535 )
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the Hold
                       Timer established with the peer.  The
                       value of this object is calculated by this
                       BGP speaker by using the smaller of the
                       value in bgpPeerHoldTimeConfigured and the
                       Hold Time received in the OPEN message.
                       This value must be at lease three seconds
                       if it is not zero (0) in which case the
                       Hold Timer has not been established with the
                       peer, or, the value of
                       bgpPeerHoldTimeConfigured is zero (0)."
               ::= { bgpPeerEntry 18 }

           bgpPeerKeepAlive OBJECT-TYPE
               SYNTAX     Integer32 ( 0 | 1..21845 )
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the KeepAlive
                       timer established with the peer.  The value of
                       this object is calculated by this BGP
                       speaker such that, when compared with
                       bgpPeerHoldTime, it has the same
                       proportion as what
                       bgpPeerKeepAliveConfigured has when
                       compared with bgpPeerHoldTimeConfigured.
                       If the value of this object is zero (0),
                       it indicates that the KeepAlive timer has
                       not been established with the peer, or,
                       the value of bgpPeerKeepAliveConfigured is
                       zero (0)."
               ::= { bgpPeerEntry 19 }

           bgpPeerHoldTimeConfigured OBJECT-TYPE
               SYNTAX     Integer32 ( 0 | 3..65535 )
               MAX-ACCESS read-write
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the Hold Time
                       configured for this BGP speaker with this
                       peer.  This value is placed in an OPEN
                       message sent to this peer by this BGP
                       speaker, and is compared with the Hold
                       Time field in an OPEN message received
                       from the peer when determining the Hold
                       Time (bgpPeerHoldTime) with the peer.
                       This value must not be less than three
                       seconds if it is not zero (0) in which
                       case the Hold Time is NOT to be
                       established with the peer.  The suggested
                       value for this timer is 90 seconds."
               ::= { bgpPeerEntry 20 }

           bgpPeerKeepAliveConfigured OBJECT-TYPE
               SYNTAX     Integer32 ( 0 | 1..21845 )
               MAX-ACCESS read-write
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the
                       KeepAlive timer configured for this BGP
                       speaker with this peer.  The value of this
                       object will only determine the
                       KEEPALIVE messages' frequency relative to
                       the value specified in
                       bgpPeerHoldTimeConfigured; the actual
                       time interval for the KEEPALIVE messages is
                       indicated by bgpPeerKeepAlive.  A
                       reasonable maximum value for this timer
                       would be configured to be one
                       third of that of
                       bgpPeerHoldTimeConfigured.
                       If the value of this object is zero (0),
                       no periodical KEEPALIVE messages are sent
                       to the peer after the BGP connection has
                       been established.  The suggested value for
                       this timer is 30 seconds."
               ::= { bgpPeerEntry 21 }

           bgpPeerMinASOriginationInterval OBJECT-TYPE
               SYNTAX     Integer32 (1..65535)
               MAX-ACCESS read-write
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the
                       MinASOriginationInterval timer.
                       The suggested value for this timer is 15
                       seconds."
               ::= { bgpPeerEntry 22 }

           bgpPeerMinRouteAdvertisementInterval OBJECT-TYPE
               SYNTAX     Integer32 (1..65535)
               MAX-ACCESS read-write
               STATUS     current
               DESCRIPTION
                       "Time interval in seconds for the
                       MinRouteAdvertisementInterval timer.
                       The suggested value for this timer is 30
                       seconds."
               ::= { bgpPeerEntry 23 }

           bgpPeerInUpdateElapsedTime OBJECT-TYPE
               SYNTAX     Gauge32
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "Elapsed time in seconds since the last BGP
                       UPDATE message was received from the peer.
                       Each time bgpPeerInUpdates is incremented,
                       the value of this object is set to zero
                       (0)."
               ::= { bgpPeerEntry 24 }

           bgpIdentifier OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The BGP Identifier of local system."
               ::= { bgp 4 }

           -- Received Path Attribute Table.  This table contains,
           -- one entry per path to a network, path attributes
           -- received from all peers running BGP version 3 or less.
           -- This table is obsolete, having been replaced in
           -- functionality with the bgp4PathAttrTable.

           bgpRcvdPathAttrTable OBJECT-TYPE
               SYNTAX     SEQUENCE OF BgpPathAttrEntry
               MAX-ACCESS not-accessible
               STATUS     obsolete
               DESCRIPTION
                       "The BGP Received Path Attribute Table
                       contains information about paths to
                       destination networks received from all
                       peers running BGP version 3 or less."
               ::= { bgp 5 }

           bgpPathAttrEntry OBJECT-TYPE
               SYNTAX     BgpPathAttrEntry
               MAX-ACCESS not-accessible
               STATUS     obsolete
               DESCRIPTION
                       "Information about a path to a network."
               INDEX { bgpPathAttrDestNetwork,
                       bgpPathAttrPeer        }
               ::= { bgpRcvdPathAttrTable 1 }

           BgpPathAttrEntry ::= SEQUENCE {
               bgpPathAttrPeer
                    IpAddress,
               bgpPathAttrDestNetwork
                    IpAddress,
               bgpPathAttrOrigin
                    INTEGER,
               bgpPathAttrASPath
                    OCTET STRING,
               bgpPathAttrNextHop
                    IpAddress,
               bgpPathAttrInterASMetric
                    Integer32
           }

           bgpPathAttrPeer OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     obsolete
               DESCRIPTION
                       "The IP address of the peer where the path
                       information was learned."
               ::= { bgpPathAttrEntry 1 }

           bgpPathAttrDestNetwork OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     obsolete
               DESCRIPTION
                       "The address of the destination network."
               ::= { bgpPathAttrEntry 2 }

           bgpPathAttrOrigin OBJECT-TYPE
               SYNTAX     INTEGER {
                              igp(1),-- networks are interior
                              egp(2),-- networks learned via EGP
                              incomplete(3) -- undetermined
                          }
               MAX-ACCESS read-only
               STATUS     obsolete
               DESCRIPTION
                    "The ultimate origin of the path information."
               ::= { bgpPathAttrEntry 3 }

           bgpPathAttrASPath OBJECT-TYPE
               SYNTAX     OCTET STRING (SIZE (2..255))
               MAX-ACCESS read-only
               STATUS     obsolete
               DESCRIPTION
                       "The set of ASs that must be traversed to reach
                       the network.  This object is probably best
                       represented as SEQUENCE OF INTEGER.  For SMI
                       compatibility, though, it is represented as
                       OCTET STRING.  Each AS is represented as a pair
                       of octets according to the following algorithm:

                           first-byte-of-pair = ASNumber / 256;
                           second-byte-of-pair = ASNumber & 255;"
               ::= { bgpPathAttrEntry 4 }

           bgpPathAttrNextHop OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     obsolete
               DESCRIPTION
                       "The address of the border router that should
                       be used for the destination network."
               ::= { bgpPathAttrEntry 5 }

           bgpPathAttrInterASMetric OBJECT-TYPE
               SYNTAX     Integer32
               MAX-ACCESS read-only
               STATUS     obsolete
               DESCRIPTION
                       "The optional inter-AS metric.  If this
                       attribute has not been provided for this route,
                       the value for this object is 0."
               ::= { bgpPathAttrEntry 6 }

           -- BGP-4 Received Path Attribute Table.  This table
           -- contains, one entry per path to a network, path
           -- attributes received from all peers running BGP-4.

           bgp4PathAttrTable OBJECT-TYPE
               SYNTAX     SEQUENCE OF Bgp4PathAttrEntry
               MAX-ACCESS not-accessible
               STATUS     current
               DESCRIPTION
                       "The BGP-4 Received Path Attribute Table
                       contains information about paths to
                       destination networks received from all
                       BGP4 peers."
               ::= { bgp 6 }

           bgp4PathAttrEntry OBJECT-TYPE
               SYNTAX     Bgp4PathAttrEntry
               MAX-ACCESS not-accessible
               STATUS     current
               DESCRIPTION
                       "Information about a path to a network."
               INDEX { bgp4PathAttrIpAddrPrefix,
                       bgp4PathAttrIpAddrPrefixLen,
                       bgp4PathAttrPeer            }
               ::= { bgp4PathAttrTable 1 }

           Bgp4PathAttrEntry ::= SEQUENCE {
               bgp4PathAttrPeer
                    IpAddress,
               bgp4PathAttrIpAddrPrefixLen
                    Integer32,
               bgp4PathAttrIpAddrPrefix
                    IpAddress,
               bgp4PathAttrOrigin
                    INTEGER,
               bgp4PathAttrASPathSegment
                    OCTET STRING,
               bgp4PathAttrNextHop
                    IpAddress,
               bgp4PathAttrMultiExitDisc
                    Integer32,
               bgp4PathAttrLocalPref
                    Integer32,
               bgp4PathAttrAtomicAggregate
                    INTEGER,
               bgp4PathAttrAggregatorAS
                    Integer32,
               bgp4PathAttrAggregatorAddr
                    IpAddress,
               bgp4PathAttrCalcLocalPref
                    Integer32,
               bgp4PathAttrBest
                    INTEGER,
               bgp4PathAttrUnknown
                    OCTET STRING
           }


           bgp4PathAttrPeer OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The IP address of the peer where the path
                       information was learned."
               ::= { bgp4PathAttrEntry 1 }

           bgp4PathAttrIpAddrPrefixLen OBJECT-TYPE
               SYNTAX     Integer32 (0..32)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "Length in bits of the IP address prefix in
                       the Network Layer Reachability
                       Information field."
               ::= { bgp4PathAttrEntry 2 }

           bgp4PathAttrIpAddrPrefix OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               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
                       bgp4PathAttrIpAddrPrefixLen.
                       Any bits beyond the length specified by
                       bgp4PathAttrIpAddrPrefixLen are zeroed."
               ::= { bgp4PathAttrEntry 3 }

           bgp4PathAttrOrigin OBJECT-TYPE
               SYNTAX     INTEGER {
                                    igp(1),-- networks are interior
                                    egp(2),-- networks learned
                                           -- via EGP
                                    incomplete(3) -- undetermined
                                  }
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The ultimate origin of the path
                       information."
               ::= { bgp4PathAttrEntry 4 }

           bgp4PathAttrASPathSegment OBJECT-TYPE
               SYNTAX     OCTET STRING (SIZE (2..255))
               MAX-ACCESS read-only
               STATUS     current
               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;

                       Known Issues:
                       o BGP Confederations will result in
                         a type of value of either 3 or 4.
                       o An AS Path may be longer than 255 octets.
                         This may result in this object containing
                         a truncated AS Path."
               ::= { bgp4PathAttrEntry 5 }

           bgp4PathAttrNextHop OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The address of the border router that
                       should be used for the destination
                       network.  This address is the nexthop
                       address received in the UPDATE packet."
               ::= { bgp4PathAttrEntry 6 }

           bgp4PathAttrMultiExitDisc OBJECT-TYPE
               SYNTAX     Integer32 (-1..2147483647)
               MAX-ACCESS read-only
               STATUS     current
               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.

                       Known Issues:
                       o The BGP-4 specification uses an
                         unsigned 32 bit number and thus this
                         object cannot represent the full
                         range of the protocol."
               ::= { bgp4PathAttrEntry 7 }

           bgp4PathAttrLocalPref OBJECT-TYPE
               SYNTAX     Integer32 (-1..2147483647)
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "The originating BGP4 speaker's degree of
                       preference for an advertised route.  A
                       value of -1 indicates the absence of this
                       attribute.

                       Known Issues:
                       o The BGP-4 specification uses an
                         unsigned 32 bit number and thus this
                         object cannot represent the full
                         range of the protocol."
               ::= { bgp4PathAttrEntry 8 }

           bgp4PathAttrAtomicAggregate OBJECT-TYPE
               SYNTAX     INTEGER {
                              lessSpecificRouteNotSelected(1),
                              lessSpecificRouteSelected(2)
                          }
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "Whether or not a system has selected
                       a less specific route without
                       selecting a more specific route."
               ::= { bgp4PathAttrEntry 9 }

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

           bgp4PathAttrAggregatorAddr OBJECT-TYPE
               SYNTAX     IpAddress
               MAX-ACCESS read-only
               STATUS     current
               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.

                       Note propagation of AS of zero is illegal in
                       the Internet."
               ::= { bgp4PathAttrEntry 11 }

           bgp4PathAttrCalcLocalPref OBJECT-TYPE
               SYNTAX     Integer32 (-1..2147483647)
               MAX-ACCESS read-only
               STATUS     current
               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.

                       Known Issues:
                       o The BGP-4 specification uses an
                         unsigned 32 bit number and thus this
                         object cannot represent the full
                         range of the protocol."
               ::= { bgp4PathAttrEntry 12 }

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

           bgp4PathAttrUnknown OBJECT-TYPE
               SYNTAX     OCTET STRING (SIZE(0..255))
               MAX-ACCESS read-only
               STATUS     current
               DESCRIPTION
                       "One or more path attributes not understood
                        by the base BGP-4 document.

                        Path attributes are recorded in the Update
                        Path attribute format of type, length, value.
                        Size zero (0) indicates the absence of such
                        attribute(s).  Octets beyond the maximum size,
                        if any, are not recorded by this object. "
               ::= { bgp4PathAttrEntry 14 }

           -- Traps.

           -- note that in RFC 1657, bgpTraps was incorrectly
           -- assigned a value of { bgp 7 }, and each of the
           -- traps had the bgpPeerRemoteAddr object inappropriately
           -- removed from their OBJECTS clause.  The following
           -- definitions restore the semantics of the traps as
           -- they were initially defined in RFC 1269.

           bgpNotification OBJECT IDENTIFIER ::= { bgp 0 }


           bgpEstablishedNotification NOTIFICATION-TYPE
               OBJECTS { bgpPeerRemoteAddr,
                         bgpPeerLastError,
                         bgpPeerState      }
               STATUS  current
               DESCRIPTION
                       "The BGP Established event is generated when
                       the BGP FSM enters the ESTABLISHED state.

                       This object obsoletes bgpEstablished."
               ::= { bgpNotification 1 }

           bgpBackwardTransNotification NOTIFICATION-TYPE
               OBJECTS { bgpPeerRemoteAddr,
                         bgpPeerLastError,
                         bgpPeerState      }
               STATUS  current
               DESCRIPTION
                       "The BGP Backward Transition Event is generated
                       when the BGP FSM moves from a higher numbered
                       state to a lower numbered state.

                       This object obsoletes bgpBackwardTransition."
               ::= { bgpNotification 2 }

           -- { bgp 7 } is obsoleted

           bgpTraps          OBJECT IDENTIFIER ::= { bgp 7 }

           bgpEstablished NOTIFICATION-TYPE
               OBJECTS { bgpPeerRemoteAddr,
                         bgpPeerLastError,
                         bgpPeerState      }
               STATUS  obsolete
               DESCRIPTION
                       "The BGP Established event is generated when
                       the BGP FSM enters the ESTABLISHED state.

                       This object has been obsoleted in favor of
                       bgpEstablishedNotification."
               ::= { bgpTraps 1 }

           bgpBackwardTransition NOTIFICATION-TYPE


               OBJECTS { bgpPeerRemoteAddr,
                         bgpPeerLastError,
                         bgpPeerState      }
               STATUS  obsolete
               DESCRIPTION
                       "The BGPBackwardTransition Event is generated
                       when the BGP FSM moves from a higher numbered
                       state to a lower numbered state.

                       This object has been obsoleted in favor of
                       bgpBackwardTransitionNotification."
               ::= { bgpTraps 2 }

           -- conformance information

           bgpMIBConformance OBJECT IDENTIFIER
               ::= { bgp 8 }
           bgpMIBCompliances OBJECT IDENTIFIER
               ::= { bgpMIBConformance 1 }
           bgpMIBGroups      OBJECT IDENTIFIER
               ::= { bgpMIBConformance 2 }

           -- compliance statements

           bgpMIBCompliance MODULE-COMPLIANCE
               STATUS  current
               DESCRIPTION
                       "The compliance statement for entities which
                        implement the BGP4 mib."
               MODULE  -- this module
                   MANDATORY-GROUPS { bgp4MIBGlobalsGroup,
                                      bgp4MIBPeerGroup,
                                      bgp4MIBPathAttrGroup,
                                      bgp4MIBNotificationGroup,
                                      bgp4MIBNewNotificationGroup }
               ::= { bgpMIBCompliances 1 }

           -- units of conformance

           bgp4MIBGlobalsGroup OBJECT-GROUP
               OBJECTS { bgpVersion,
                         bgpLocalAs,
                         bgpIdentifier }
               STATUS  current
               DESCRIPTION
                       "A collection of objects providing
                       information on global BGP state."
               ::= { bgpMIBGroups 1 }

           bgp4MIBPeerGroup OBJECT-GROUP
               OBJECTS { bgpPeerIdentifier,
                         bgpPeerState,
                         bgpPeerAdminStatus,
                         bgpPeerNegotiatedVersion,
                         bgpPeerLocalAddr,
                         bgpPeerLocalPort,
                         bgpPeerRemoteAddr,
                         bgpPeerRemotePort,
                         bgpPeerRemoteAs,
                         bgpPeerInUpdates,
                         bgpPeerOutUpdates,
                         bgpPeerInTotalMessages,
                         bgpPeerOutTotalMessages,
                         bgpPeerLastError,
                         bgpPeerFsmEstablishedTransitions,
                         bgpPeerFsmEstablishedTime,
                         bgpPeerConnectRetryInterval,
                         bgpPeerHoldTime,
                         bgpPeerKeepAlive,
                         bgpPeerHoldTimeConfigured,
                         bgpPeerKeepAliveConfigured,
                         bgpPeerMinASOriginationInterval,
                         bgpPeerMinRouteAdvertisementInterval,
                         bgpPeerInUpdateElapsedTime }
               STATUS  current
               DESCRIPTION
                       "A collection of objects for managing
                        BGP peers."
               ::= { bgpMIBGroups 2 }

           bgp4MIBRcvdPathAttrGroup OBJECT-GROUP
               OBJECTS { bgpPathAttrPeer,
                         bgpPathAttrDestNetwork,
                         bgpPathAttrOrigin,
                         bgpPathAttrASPath,
                         bgpPathAttrNextHop,
                         bgpPathAttrInterASMetric }
               STATUS  obsolete
               DESCRIPTION
                       "A collection of objects for managing BGP
                        path entries.

                        This conformance group is obsolete,
                        replaced by bgp4MIBPathAttrGroup."
               ::= { bgpMIBGroups 3 }

           bgp4MIBPathAttrGroup OBJECT-GROUP
               OBJECTS { bgp4PathAttrPeer,
                         bgp4PathAttrIpAddrPrefixLen,
                         bgp4PathAttrIpAddrPrefix,
                         bgp4PathAttrOrigin,
                         bgp4PathAttrASPathSegment,
                         bgp4PathAttrNextHop,
                         bgp4PathAttrMultiExitDisc,
                         bgp4PathAttrLocalPref,
                         bgp4PathAttrAtomicAggregate,
                         bgp4PathAttrAggregatorAS,
                         bgp4PathAttrAggregatorAddr,
                         bgp4PathAttrCalcLocalPref,
                         bgp4PathAttrBest,
                         bgp4PathAttrUnknown }
               STATUS  current
               DESCRIPTION
                       "A collection of objects for managing
                        BGP path entries."
               ::= { bgpMIBGroups 4 }

           bgp4MIBNotificationGroup NOTIFICATION-GROUP
               NOTIFICATIONS { bgpEstablished,
                               bgpBackwardTransition }
               STATUS  obsolete
               DESCRIPTION
                       "A collection of notifications for signaling
                       changes in BGP peer relationships.

                       Obsoleted by bgp4MIBNewNotificationGroup."
               ::= { bgpMIBGroups 5 }

           bgp4MIBNewNotificationGroup NOTIFICATION-GROUP
               NOTIFICATIONS { bgpEstablishedNotification,
                               bgpBackwardTransNotification }
               STATUS  current
               DESCRIPTION
                       "A collection of notifications for signaling
                       changes in BGP peer relationships.

                       Obsoletes bgp4MIBNotificationGroup."
               ::= { bgpMIBGroups 6 }

END
