Crate ipnet [−] [src]
Types for IPv4 and IPv6 network addresses.
This module provides types and methods for working with IPv4 and
IPv6 network addresses. It aims for alignment with the IpAddr
,
Ipv4Addr
, and Ipv6Addr
types in Rust's standard library.
The module also provides traits that extend Ipv4Addr
and
Ipv6Addr
to support Add, Sub, BitAnd, and BitOr operations.
Organization
IpNet
represents IP network addresses of either IPv4 or IPv6.Ipv4Net
andIpv6Net
are respectively IPv4 and IPv6 network addresses.IpAddrIter
provides iteration over a range of IP addresses.IpNetIter
does the same for IP network addresses. These are returned by methods onIpNet
,Ipv4Net
, andIpv6Net
.- The
IpAdd
,IpSub
,IpBitAnd
,IpBitOr
traits extend theIpv4Addr
andIpv6Addr
types to include these operations. Emu128
is an emulated 128 bit unsigned integer implemented in this module using a struct of twou64
types. This is necessary because Rust'su128
type is not yet marked stable. This can be replaced whenu128
is stable.
TODO:
- What's going on with AddrParseError(()) in parser.rs?
- Should new() truncate the input Ipv4Addr to the prefix_len and store that instead? Technically it doesn't matter, but users may expect one behavior over the other.
- Should new() precompute the netmask, hostmask, network, and broadcast addresses and store these to avoid recomputing everytime the methods are called?
- Can we implement the
std::ops::{Add, Sub, BitAnd, BitOr}
traits forIpv4Addr
andIpv6Addr
in the standard library? These are common operations on IP addresses. - Explore representing the results of methods such as
hosts()
andsubnets()
as aRange
. This requires both theAdd
andStep
traits be implemented on the target type. For the threeIpAddr
types implementingAdd
must be done through an enhancement to the standard library. For all types, usingStep
means we must use nightly because it is not yet stable. This crate only uses stable Rust features.
Structs
AddrParseError |
An error which can be returned when parsing an IP network address. |
Emu128 |
An emulated 128 bit unsigned integer. |
IpAddrIter |
An |
IpNetIter |
An |
Ipv4Net |
An IPv4 network address. |
Ipv6Net |
An IPv6 network address. |
Enums
IpNet |
An IP network address, either IPv4 or IPv6. |
Traits
Contains |
Provides a |
IpAdd |
Provides a |
IpBitAnd |
Provides a |
IpBitOr |
Provides a |
IpSub |
Provides a |