#[repr(u8)]pub enum Capability {
Show 14 variants
MultiProtocol {
afi: AddressFamilyId,
safi: SubsequentAfi,
},
RouteRefresh = 2,
OutboundRouteFilter {
afi: AddressFamilyId,
safi: SubsequentAfi,
orfs: Vec<OutboundRouteFilterEntry>,
},
ExtendedNextHop {
entries: Vec<ExtendedNextHop>,
},
ExtendedMessage = 6,
BgpSec {
header: BgpSecHeader,
afi: AddressFamilyId,
},
MultiLabelCompat {},
BgpRole {
role: BgpRole,
},
GracefulRestart {
restart_state: bool,
restart_time: u16,
entries: Vec<GracefulRestartEntry>,
},
FourByteAsn {
asn: u32,
},
AddPath {
afi: AddressFamilyId,
safi: SubsequentAfi,
send_recv: AddPathSendRecv,
},
EnhancedRouteRefresh = 70,
LongLivedGracefulRestart(Vec<LongLivedGracefulRestart>),
UnknownCapability {
type_code: u8,
length: u8,
value: Vec<u8>,
},
}Variants§
MultiProtocol
MultiProtocol Extension (RFC 2858).
RouteRefresh = 2
Route Refresh capability (RFC 2918).
OutboundRouteFilter
Outbound Route Filtering (RFC 5291). https://datatracker.ietf.org/doc/html/rfc5291
ExtendedNextHop
Extended Next Hop encoding (RFC 8950).
Fields
entries: Vec<ExtendedNextHop>ExtendedMessage = 6
Extended Message (RFC 8654).
BgpSec
BGPSec (RFC 8205).
MultiLabelCompat
Multiple labels compatibility (RFC 8277).
BgpRole
GracefulRestart
Graceful restart capability (RFC 4724).
Fields
restart_state: boolWhen set to true it means that the BGP speaker has just restarted and the peer must not wait for the End of RIB marker from the speaker before advertising routing information to the speaker.
restart_time: u16This is the estimated time (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case that the BGP speaker does not come back after a restart.
entries: Vec<GracefulRestartEntry>The AFI and SAFI, taken in combination, indicate that Graceful Restart is supported for routes that are advertised with the same AFI and SAFI. Routes may be explicitly associated with a particular AFI and SAFI using the encoding of [BGP-MP] or implicitly associated with <AFI=IPv4, SAFI=Unicast> if using the encoding of [BGP-4].
FourByteAsn
Four Byte ASN (RFC 4274).
AddPath
Additional Path (RFC 7911).
EnhancedRouteRefresh = 70
Enhanced Route Refresh (RFC 7313).
LongLivedGracefulRestart(Vec<LongLivedGracefulRestart>)
Long Lived Graceful Restart (RFC 9494).
UnknownCapability
Unknown Capability encapsulates any capabilities that we don’t know about.
Implementations§
Source§impl Capability
impl Capability
Sourcepub fn from_wire<'a>(
_ctx: &ParserContext,
buf: &'a [u8],
) -> IResult<&'a [u8], Self, BgpParserError<&'a [u8]>>
pub fn from_wire<'a>( _ctx: &ParserContext, buf: &'a [u8], ) -> IResult<&'a [u8], Self, BgpParserError<&'a [u8]>>
from_wire parses a Capability message.
pub fn to_wire(&self, _ctx: &ParserContext, out: &mut BytesMut) -> Result<()>
pub fn wire_len(&self, _ctx: &ParserContext) -> Result<u16>
Trait Implementations§
Source§impl Debug for Capability
impl Debug for Capability
Source§impl<'de> Deserialize<'de> for Capability
impl<'de> Deserialize<'de> for Capability
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Capability
Source§impl<'_enum> From<&'_enum Capability> for CapabilityDiscriminants
impl<'_enum> From<&'_enum Capability> for CapabilityDiscriminants
Source§fn from(val: &'_enum Capability) -> CapabilityDiscriminants
fn from(val: &'_enum Capability) -> CapabilityDiscriminants
Source§impl From<Capability> for CapabilityDiscriminants
impl From<Capability> for CapabilityDiscriminants
Source§fn from(val: Capability) -> CapabilityDiscriminants
fn from(val: Capability) -> CapabilityDiscriminants
Source§impl IntoDiscriminant for Capability
impl IntoDiscriminant for Capability
Source§type Discriminant = CapabilityDiscriminants
type Discriminant = CapabilityDiscriminants
fn discriminant(&self) -> Self::Discriminant
Source§impl PartialEq for Capability
impl PartialEq for Capability
Source§fn eq(&self, other: &Capability) -> bool
fn eq(&self, other: &Capability) -> bool
self and other values to be equal, and is used by ==.