Crate ipnet

Source
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 iterating 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.

Functions§

ip_mask_to_prefix
Converts a IpAddr network mask into a prefix.
ipv4_mask_to_prefix
Converts a Ipv4Addr network mask into a prefix.
ipv6_mask_to_prefix
Converts a Ipv6Addr network mask into a prefix.