Crate ipnet[][src]

Expand description

Types for IPv4 and IPv6 network addresses.

This module provides types and useful methods for working with IPv4 and IPv6 network addresses, commonly called IP prefixes. The new IpNet, Ipv4Net, and Ipv6Net types build on the existing IpAddr, Ipv4Addr, and Ipv6Addr types already provided in Rust’s standard library and align to their design to stay consistent.

The module also provides the IpSubnets, Ipv4Subnets, and Ipv6Subnets types for interating over the subnets contained in an IP address range. The IpAddrRange, Ipv4AddrRange, and Ipv6AddrRange types for iterating over IP addresses in a range. And traits that extend Ipv4Addr and Ipv6Addr with methods for addition, subtraction, bitwise-and, and bitwise-or operations that are missing in Rust’s standard library.

The module only uses stable features so it is guaranteed to compile using the stable toolchain.

Organization

Serde support

This library comes with support for serde but it’s not enabled by default. Use the serde feature to enable.

[dependencies]
ipnet = { version = "2", features = ["serde"] }

For human readable formats (e.g. JSON) the IpNet, Ipv4Net, and Ipv6Net types will serialize to their Display strings.

For compact binary formats (e.g. Bincode) the Ipv4Net and Ipv6Net types will serialize to a string of 5 and 17 bytes that consist of the network address octects followed by the prefix length. The IpNet type will serialize to an Enum with the V4 or V6 variant index prepending the above string of 5 or 17 bytes.

Structs

AddrParseError

An error which can be returned when parsing an IP network address.

Ipv4AddrRange

An Iterator over a range of IPv4 addresses.

Ipv4Net

An IPv4 network address.

Ipv4Subnets

An Iterator that generates IPv4 network addresses.

Ipv6AddrRange

An Iterator over a range of IPv6 addresses.

Ipv6Net

An IPv6 network address.

Ipv6Subnets

An Iterator that generates IPv6 network addresses.

PrefixLenError

An error which can be returned when the prefix length is invalid.

Enums

IpAddrRange

An Iterator over a range of IP addresses, either IPv4 or IPv6.

IpNet

An IP network address, either IPv4 or IPv6.

IpSubnets

An Iterator that generates IP network addresses, either IPv4 or IPv6.

Traits

IpAdd

Provides a saturating_add() method for Ipv4Addr and Ipv6Addr.

IpBitAnd

Provides a bitand() method for Ipv4Addr and Ipv6Addr.

IpBitOr

Provides a bitor() method for Ipv4Addr and Ipv6Addr.

IpSub

Provides a saturating_sub() method for Ipv4Addr and Ipv6Addr.