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

  • An error which can be returned when parsing an IP network address.
  • An Iterator over a range of IPv4 addresses.
  • An IPv4 network address.
  • An Iterator that generates IPv4 network addresses.
  • An Iterator over a range of IPv6 addresses.
  • An IPv6 network address.
  • An Iterator that generates IPv6 network addresses.
  • An error which can be returned when the prefix length is invalid.

Enums

  • An Iterator over a range of IP addresses, either IPv4 or IPv6.
  • An IP network address, either IPv4 or IPv6.
  • An Iterator that generates IP network addresses, either IPv4 or IPv6.

Traits

  • Provides a saturating_add() method for Ipv4Addr and Ipv6Addr.
  • Provides a bitand() method for Ipv4Addr and Ipv6Addr.
  • Provides a bitor() method for Ipv4Addr and Ipv6Addr.
  • Provides a saturating_sub() method for Ipv4Addr and Ipv6Addr.

Functions