pub struct Ipv4Range { /* private fields */ }
Expand description

A range of IPv4 addresses with a common prefix

Implementations§

source§

impl Ipv4Range

source

pub fn new(addr: Ipv4Addr, bits: u8) -> Self

Create an IPv4 range with the given base address and netmask prefix length.

Example

Create the subnet 192.168.0.0/24 with Ipv4Range::new("192.168.0.0".parse().unwrap(), 24)

source

pub fn global() -> Self

Return the entire IPv4 range, eg. 0.0.0.0/0

source

pub fn local_subnet_10() -> Self

Returns the local network subnet 10.0.0.0/8

source

pub fn local_subnet_172(block: u8) -> Self

Returns a local network subnet 172.(16 | x).0.0/16 where x is a 4-bit number given by block

Panics

If block & 0xf0 != 0

source

pub fn local_subnet_192(block: u8) -> Self

Returns the local subnet 192.168.x.0/24 where x is given by block.

source

pub fn random_local_subnet() -> Self

Returns a random local network subnet from one of the ranges 10.0.0.0, 172.16.0.0 or 192.168.0.0

source

pub fn netmask(&self) -> Ipv4Addr

Get the netmask as an IP address

source

pub fn netmask_prefix_length(&self) -> u8

Get the number of netmask prefix bits

source

pub fn base_addr(&self) -> Ipv4Addr

Get the base address of the range, ie. the lowest IP address which is part of the range.

source

pub fn gateway_addr(&self) -> Ipv4Addr

Get a default IP address for the range’s gateway. This is one higher than the base address of the range. eg. for 10.0.0.0/8, the default address for the gateway will be 10.0.0.1

source

pub fn broadcast_addr(&self) -> Ipv4Addr

Get the broadcast address, ie. the highest IP address which is part of the range.

source

pub fn random_client_addr(&self) -> Ipv4Addr

Get a random IP address from the range which is not the base address or the default for the gateway address.

source

pub fn address_for(&self, device: u32) -> Ipv4Addr

Generate an IP address for a device.

source

pub fn contains(&self, ip: Ipv4Addr) -> bool

Check whether this range contains the given IP address

source

pub fn split(self, num: u32) -> Vec<Self>

Split a range into num sub-ranges

Panics

If the range is too small to be split up that much.

Trait Implementations§

source§

impl Clone for Ipv4Range

source§

fn clone(&self) -> Ipv4Range

Returns a copy 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 Ipv4Range

source§

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

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

impl From<Ipv4Addr> for Ipv4Range

source§

fn from(addr: Ipv4Addr) -> Self

Converts to this type from the input type.
source§

impl From<Ipv4Range> for Ipv4Route

source§

fn from(range: Ipv4Range) -> Self

Converts to this type from the input type.
source§

impl FromStr for Ipv4Range

§

type Err = IpRangeParseError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Ipv4Range, IpRangeParseError>

Parses a string s to return a value of this type. Read more
source§

impl PartialEq for Ipv4Range

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Ipv4Range

source§

impl Eq for Ipv4Range

source§

impl StructuralEq for Ipv4Range

source§

impl StructuralPartialEq for Ipv4Range

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

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> ToOwned for T
where T: Clone,

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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