BgpUpdateMessage

Struct BgpUpdateMessage 

Source
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

§attributes: Attributes

BGP 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

Implementations§

Source§

impl BgpUpdateMessage

Source

pub fn encode(&self, asn_len: AsnLength) -> Bytes

Source

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

Source§

fn clone(&self) -> BgpUpdateMessage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BgpUpdateMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BgpUpdateMessage

Source§

fn default() -> BgpUpdateMessage

Returns the “default value” for a type. Read more
Source§

impl From<&BgpElem> for BgpUpdateMessage

Source§

fn from(elem: &BgpElem) -> Self

Converts to this type from the input type.
Source§

impl From<BgpUpdateMessage> for BgpMessage

Source§

fn from(value: BgpUpdateMessage) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for BgpUpdateMessage

Source§

fn eq(&self, other: &BgpUpdateMessage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for BgpUpdateMessage

Source§

impl StructuralPartialEq for BgpUpdateMessage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,