#[repr(u8)]pub enum Safi {
Unicast = 1,
Multicast = 2,
UnicastMulticast = 3,
LinkState = 71,
LinkStateVpn = 72,
MplsVpn = 128,
MulticastVpn = 129,
FlowSpec = 133,
FlowSpecL3Vpn = 134,
}Expand description
SAFI – Subsequent Address Family Identifier
SAFI can be: Unicast, Multicast, or both, as well as MPLS VPN variants. The AFI determines the IP version (IPv4/IPv6), while SAFI determines the application.
References:
- RFC 4760: Multiprotocol Extensions for BGP-4
- RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs) - defines SAFI 128
- RFC 6514: BGP Signaling of Multicast VPNs - defines SAFI 129
- RFC 7752: BGP Link-State - defines SAFI 71, 72
- RFC 8950: Advertising IPv4 Network Layer Reachability Information (NLRI) with an IPv6 Next Hop
Variants§
Unicast = 1
Multicast = 2
UnicastMulticast = 3
LinkState = 71
BGP Link-State - RFC 7752
LinkStateVpn = 72
BGP Link-State VPN - RFC 7752
MplsVpn = 128
MPLS-labeled VPN address - RFC 4364, used in RFC 8950 Section 4 Works with both AFI 1 (VPN-IPv4) and AFI 2 (VPN-IPv6)
MulticastVpn = 129
Multicast for BGP/MPLS IP VPNs - RFC 6514 Works with both AFI 1 (Multicast VPN-IPv4) and AFI 2 (Multicast VPN-IPv6)
FlowSpec = 133
Flow Specification - RFC 8955/8956 Works with both AFI 1 (IPv4 Flow-Spec) and AFI 2 (IPv6 Flow-Spec)
FlowSpecL3Vpn = 134
L3VPN Flow Specification - RFC 8955/8956 Works with both AFI 1 (VPN-IPv4 Flow-Spec) and AFI 2 (VPN-IPv6 Flow-Spec)
Trait Implementations§
Source§impl TryFromPrimitive for Safi
impl TryFromPrimitive for Safi
impl Copy for Safi
impl Eq for Safi
impl StructuralPartialEq for Safi
Auto Trait Implementations§
impl Freeze for Safi
impl RefUnwindSafe for Safi
impl Send for Safi
impl Sync for Safi
impl Unpin for Safi
impl UnwindSafe for Safi
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
Mutably borrows from an owned value. Read more
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
Compare self to
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>
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 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>
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