ipnet 0.26.5

Provides types and methods for working with IPv4 and IPv6 network addresses, commonly called IP prefixes. Uses only stable Rust features and aligns to the standard library IpAddr, Ipv4Addr, and Ipv6Addr types.
Documentation

Build Status

Nearing 1.0 release, feedback and requests are very welcome. Just open an issue on GitHub or email me.

This module provides types and methods for working with IPv4 and IPv6 network addresses, commonly called IP prefixes. It only uses stable Rust features so that it compiles using the stable toolchain. And its design aligns to the existing IpAddr, Ipv4Addr, and Ipv6Addr types provided in the Rust standard library.

The module includes extension traits to provide Add, Sub, BitAnd, and BitOr operations to Ipv4Addr and Ipv6Addr.

Available on Crates.io and read the documentation for the full details.

Future

  • Explore representing the results of methods such as hosts() and subnets() as Ranges. This requires both the Add and Step traits be implemented on the target types. For IpAddr this requires a change to the standard library. Also Step is still unstable, so exploring this will wait until it has stablized.
  • Implementing the {Add, Sub, BitAnd, BitOr} traits for Ipv4Addr and Ipv6Addr would be useful as these are common operations on IP addresses. This requires a change to the standard library. I've started a thread on this topic over on Rust Internals discussion board.

License

Copyright (c) 2017, Juniper Networks, Inc. All rights reserved.

This code is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this code except in compliance with the License. This code is not an official Juniper product. You can obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0