OspfDomain

Struct OspfDomain 

Source
pub struct OspfDomain<Ospf = GlobalOspfCoordinator> { /* private fields */ }
Expand description

The OSPF network for each domain separately. A domain is all routers that belong to the same AS.

Implementations§

Source§

impl<Ospf> OspfDomain<Ospf>
where Ospf: OspfCoordinator,

Source

pub fn has_edge(&self, a: RouterId, b: RouterId) -> bool

Return true if there exists a link from a (must be part of this AS) to b.

Source

pub fn indices(&self) -> DomainIndices<'_>

Iterate over all router indices in that domain

Source

pub fn graph(&self) -> StableGraph<(), (LinkWeight, OspfArea), Directed, u32>

Generate a graph for only the given domain.

Source

pub fn get_weight(&self, a: RouterId, b: RouterId) -> LinkWeight

Return the OSPF weight of a link (or LinkWeight::INFINITY if the link does not exist).

Source

pub fn get_area(&self, a: RouterId, b: RouterId) -> Option<OspfArea>

Return the OSPF area of a link.

Source

pub fn is_reachable<P: Prefix>( &self, a: RouterId, b: RouterId, routers: &BTreeMap<RouterId, Router<P, Ospf::Process>>, ) -> bool

Returns true if a can reach b, and vice-versa. a must be in this domain, while b can be in another domain.

Source

pub fn coordinator(&self) -> &Ospf

Get a reference to the OSPF coordinator struct

Source

pub fn internal_edges(&self) -> InternalEdges<'_>

Get an iterator over all internal edges. Each link will appear twice, once in each direction.

Source

pub fn external_edges(&self) -> ExternalEdges<'_>

Get an iterator over all external edges (edges that connect to a different AS). Each link will appear once, from the internal router to the external network.

Source

pub fn edges(&self) -> Edges<'_>

Get an iterator over all edges in the network. The iterator will yield first all internal edges twice (once in both directions), and then yield all external edges once (from the internal router to the external network). External edges connect this AS to another one.

Trait Implementations§

Source§

impl<Ospf: Clone> Clone for OspfDomain<Ospf>

Source§

fn clone(&self) -> OspfDomain<Ospf>

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<Ospf: Debug> Debug for OspfDomain<Ospf>

Source§

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

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

impl<'de, Ospf> Deserialize<'de> for OspfDomain<Ospf>
where Ospf: Deserialize<'de>,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<Ospf> PartialEq for OspfDomain<Ospf>

Source§

fn eq(&self, other: &Self) -> 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<Ospf> Serialize for OspfDomain<Ospf>
where Ospf: Serialize,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl<Ospf> Freeze for OspfDomain<Ospf>
where Ospf: Freeze,

§

impl<Ospf> RefUnwindSafe for OspfDomain<Ospf>
where Ospf: RefUnwindSafe,

§

impl<Ospf> Send for OspfDomain<Ospf>
where Ospf: Send,

§

impl<Ospf> Sync for OspfDomain<Ospf>
where Ospf: Sync,

§

impl<Ospf> Unpin for OspfDomain<Ospf>
where Ospf: Unpin,

§

impl<Ospf> UnwindSafe for OspfDomain<Ospf>
where Ospf: UnwindSafe,

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,