compass-core/mibs/BGP4-MIB.mib

848 lines
28 KiB
Plaintext

-- =================================================================
-- Description: BGP4-MIB definition
-- Reference: This mib was extracted from RFC 1657
-- =================================================================
BGP4-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
IpAddress, Integer32, Counter32, Gauge32
FROM SNMPv2-SMI
mib-2
FROM RFC1213-MIB;
bgp MODULE-IDENTITY
LAST-UPDATED "9405050000Z"
ORGANIZATION "IETF BGP Working Group"
CONTACT-INFO
" John Chu (Editor)
Postal: IBM Corp.
P.O.Box 218
Yorktown Heights, NY 10598
US
Tel: +1 914 945 3156
Fax: +1 914 945 2141
E-mail: jychu@watson.ibm.com"
DESCRIPTION
"The MIB module for BGP-4."
::= { 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 INTEGER (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
INTEGER,
bgpPeerRemoteAddr
IpAddress,
bgpPeerRemotePort
INTEGER,
bgpPeerRemoteAs
INTEGER,
bgpPeerInUpdates
Counter32,
bgpPeerOutUpdates
Counter32,
bgpPeerInTotalMessages
Counter32,
bgpPeerOutTotalMessages
Counter32,
bgpPeerLastError
OCTET STRING,
bgpPeerFsmEstablishedTransitions
Counter32,
bgpPeerFsmEstablishedTime
Gauge32,
bgpPeerConnectRetryInterval
INTEGER,
bgpPeerHoldTime
INTEGER,
bgpPeerKeepAlive
INTEGER,
bgpPeerHoldTimeConfigured
INTEGER,
bgpPeerKeepAliveConfigured
INTEGER,
bgpPeerMinASOriginationInterval
INTEGER,
bgpPeerMinRouteAdvertisementInterval
INTEGER,
bgpPeerInUpdateElapsedTime
Gauge32
}
bgpPeerIdentifier OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The BGP Identifier of this entry's BGP
peer."
::= { 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
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 INTEGER (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 INTEGER (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 INTEGER (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."
::= { 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 INTEGER (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 INTEGER ( 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 INTEGER ( 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 INTEGER ( 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 INTEGER ( 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 INTEGER (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 INTEGER (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 deprecated.
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
INTEGER,
bgp4PathAttrIpAddrPrefix
IpAddress,
bgp4PathAttrOrigin
INTEGER,
bgp4PathAttrASPathSegment
OCTET STRING,
bgp4PathAttrNextHop
IpAddress,
bgp4PathAttrMultiExitDisc
INTEGER,
bgp4PathAttrLocalPref
INTEGER,
bgp4PathAttrAtomicAggregate
INTEGER,
bgp4PathAttrAggregatorAS
INTEGER,
bgp4PathAttrAggregatorAddr
IpAddress,
bgp4PathAttrCalcLocalPref
INTEGER,
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 INTEGER (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;"
::= { 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."
::= { bgp4PathAttrEntry 6 }
bgp4PathAttrMultiExitDisc OBJECT-TYPE
SYNTAX INTEGER (-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."
::= { bgp4PathAttrEntry 7 }
bgp4PathAttrLocalPref OBJECT-TYPE
SYNTAX INTEGER (-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."
::= { bgp4PathAttrEntry 8 }
bgp4PathAttrAtomicAggregate OBJECT-TYPE
SYNTAX INTEGER {
lessSpecificRrouteNotSelected(1),
lessSpecificRouteSelected(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Whether or not the local system has
selected a less specific route without
selecting a more specific route."
::= { bgp4PathAttrEntry 9 }
bgp4PathAttrAggregatorAS OBJECT-TYPE
SYNTAX INTEGER (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."
::= { bgp4PathAttrEntry 11 }
bgp4PathAttrCalcLocalPref OBJECT-TYPE
SYNTAX INTEGER (-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."
::= { 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 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."
::= { bgp4PathAttrEntry 14 }
-- Traps.
bgpNotification OBJECT IDENTIFIER ::= { bgp 0 }
bgpEstablishedNotification NOTIFICATION-TYPE
OBJECTS { bgpPeerRemoteAddr,
bgpPeerLastError,
bgpPeerState }
STATUS current
DESCRIPTION
"The bgpEstablishedNotification event is generated
when the BGP FSM enters the established state.
This Notification replaces the bgpEstablished
Notification."
::= { bgpNotification 1 }
bgpBackwardTransNotification NOTIFICATION-TYPE
OBJECTS { bgpPeerRemoteAddr,
bgpPeerLastError,
bgpPeerState }
STATUS current
DESCRIPTION
"The bgpBackwardTransNotification event is
generated when the BGP FSM moves from a higher
numbered state to a lower numbered state.
This Notification replaces the
bgpBackwardsTransition Notification."
::= { bgpNotification 2 }
bgpTraps OBJECT IDENTIFIER ::= { bgp 7 }
bgpEstablished NOTIFICATION-TYPE
OBJECTS { bgpPeerLastError,
bgpPeerState }
STATUS current
DESCRIPTION
"The BGP Established event is generated when
the BGP FSM enters the ESTABLISHED state."
::= { bgpTraps 1 }
bgpBackwardTransition NOTIFICATION-TYPE
OBJECTS { bgpPeerLastError,
bgpPeerState }
STATUS current
DESCRIPTION
"The BGPBackwardTransition Event is generated
when the BGP FSM moves from a higher numbered
state to a lower numbered state."
::= { bgpTraps 2 }
END