pub struct BgpUpdateMessage {
pub withdrawn_prefixes: Vec<NetworkPrefix>,
pub attributes: Attributes,
pub announced_prefixes: Vec<NetworkPrefix>,
}Expand description
BGP Update Message.
Corresponding RFC section: https://datatracker.ietf.org/doc/html/rfc4271#section-4.3
Fields§
§withdrawn_prefixes: Vec<NetworkPrefix>Withdrawn prefixes in this update message.
IMPORTANT: Do not access this field directly in order to get all withdrawn prefixes.
Some withdrawn prefixes may be present in the AttributeValue::MpUnreachNlri attribute,
and will not be included here. Accessing this field directly may cause you to miss
IPv6 or multi-protocol prefixes.
Instead, use [Elementor::bgp_update_to_elems] to reliably extract all withdrawn prefixes from the update,
or combine this field with prefixes found in the MpUnreachNlri attribute manually.
See
- RFC4271 Section 4.3: https://datatracker.ietf.org/doc/html/rfc4271#section-4.3
- RFC4760 Section 4: https://datatracker.ietf.org/doc/html/rfc4760#section-4
attributes: AttributesBGP path attributes.
announced_prefixes: Vec<NetworkPrefix>Network prefixes that are being advertised in this update message.
IMPORTANT: Do not access this field directly in order to get all announced prefixes.
Some advertised prefixes may be present in the AttributeValue::MpReachNlri attribute,
and will not be included here. Accessing this field directly may cause you to miss
IPv6 or multi-protocol prefixes.
Instead, use [Elementor::bgp_update_to_elems] to reliably extract all announced prefixes from the update,
or combine this field with prefixes found in the MpReachNlri attribute manually.
See
- RFC4271 Section 4.3: https://datatracker.ietf.org/doc/html/rfc4271#section-4.3
- RFC4760 Section 3: https://datatracker.ietf.org/doc/html/rfc4760#section-3
Implementations§
Source§impl BgpUpdateMessage
impl BgpUpdateMessage
pub fn encode(&self, asn_len: AsnLength) -> Bytes
Sourcepub fn is_end_of_rib(&self) -> bool
pub fn is_end_of_rib(&self) -> bool
Check if this is an end-of-rib message.
https://datatracker.ietf.org/doc/html/rfc4724#section-2 End-of-rib message is a special update message that contains no NLRI or withdrawal NLRI prefixes.
Trait Implementations§
Source§impl Clone for BgpUpdateMessage
impl Clone for BgpUpdateMessage
Source§fn clone(&self) -> BgpUpdateMessage
fn clone(&self) -> BgpUpdateMessage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BgpUpdateMessage
impl Debug for BgpUpdateMessage
Source§impl Default for BgpUpdateMessage
impl Default for BgpUpdateMessage
Source§fn default() -> BgpUpdateMessage
fn default() -> BgpUpdateMessage
Source§impl From<&BgpElem> for BgpUpdateMessage
impl From<&BgpElem> for BgpUpdateMessage
Source§impl From<BgpUpdateMessage> for BgpMessage
impl From<BgpUpdateMessage> for BgpMessage
Source§fn from(value: BgpUpdateMessage) -> Self
fn from(value: BgpUpdateMessage) -> Self
Source§impl PartialEq for BgpUpdateMessage
impl PartialEq for BgpUpdateMessage
impl Eq for BgpUpdateMessage
impl StructuralPartialEq for BgpUpdateMessage
Auto Trait Implementations§
impl Freeze for BgpUpdateMessage
impl RefUnwindSafe for BgpUpdateMessage
impl Send for BgpUpdateMessage
impl Sync for BgpUpdateMessage
impl Unpin for BgpUpdateMessage
impl UnwindSafe for BgpUpdateMessage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more