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 includes extension traits to add Add, Sub, BitAnd, and
BitOr operations to Ipv4Addr and Ipv6Addr.
Organization
IpNetrepresents IP network addresses of either IPv4 or IPv6.Ipv4NetandIpv6Netare respectively IPv4 and IPv6 network addresses.- The [
IpAdd], [IpSub], [IpBitAnd], [IpBitOr] traits extend theIpv4AddrandIpv6Addrtypes to include these operations. ipv6_addr_from_emu128and [ipv6_addr_into_emu128] functions convert the between the Ipv6Addr type and theemu128type.emu128is an emulated 128 bit unsigned integer implemented in this module using a struct of twou64types. This is necessary because Rust'su128type is not yet marked stable. This can be replaced whenu128is stable.
TODO:
- Implement tests and complete documentation of
IpNet, etc. - Convert subnets() and aggregate() methods to iterators?
- Can we implement the
std::ops::{Add, Sub, BitAnd, BitOr}traits forIpv4AddrandIpv6Addrin the standard library? These are common operations on IP addresses. - Explore the possibility of representing IP network addresses as a
Rangeusing Rust'sRangeArgumenttrait.RangeArgumentand many of the associatedRangemethods are still nightly-only experimental APIs.
Structs
| AddrParseError |
An error which can be returned when parsing an IP network address. |
| Emu128 |
Emulate a 128 bit uint using two 64 bit uints. When the i128 feature is stable this can be removed. |
| Ipv4Net |
An IPv4 network address. |
| Ipv6Net |
An IPv6 network address. |
Enums
| IpNet |
An IP network address, either IPv4 or IPv6. |
Traits
| IpAdd | |
| IpBitAnd | |
| IpBitOr | |
| IpSub |