Crates.io | bogon |
lib.rs | bogon |
version | 0.2.1 |
source | src |
created_at | 2024-04-30 16:36:53.499348 |
updated_at | 2024-10-04 15:18:21.539141 |
description | A Rust library to check if an IP address is a bogon |
homepage | |
repository | https://github.com/Alextopher/bogon |
max_upload_size | |
id | 1225231 |
size | 32,542 |
Bogon is a Rust library for checking whether an IP address is considered "bogus" or "bogon", meaning it's not valid for use on the public internet. This includes private IP addresses, loopback addresses, and other reserved addresses.
download
feature can be enabled to download the latest reserved address ranges from the IANA registry at build time.no_std
compatible.Rust 1.80 is the minimum supported rust version due to the use of to_bits()
. It's unlikely that the MSRV will be increased in the future.
use core::net::{IpAddr, Ipv4Addr, Ipv6Addr};
assert_eq!(bogon::is_bogon_str("127.0.0.1"), Ok(true));
assert_eq!(bogon::is_bogon_str("8.8.8.8"), Ok(false));
assert_eq!(bogon::is_bogon_str("::1"), Ok(true));
assert!(bogon::is_bogon_str("foo").is_err());
assert_eq!(bogon::is_bogon_v4(Ipv4Addr::new(127, 0, 0, 1)), true);
assert_eq!(bogon::is_bogon_v4(Ipv4Addr::new(8, 8, 8, 8)), false);
assert_eq!(bogon::is_bogon_v6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)), true);
assert_eq!(bogon::is_bogon(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))), true);
assert_eq!(bogon::is_bogon(IpAddr::V4(Ipv4Addr::new(8, 8, 8, 8))), false);
assert_eq!(bogon::is_bogon(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1))), true);
use bogon::BogonExt;
assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).is_bogon(), true);
assert_eq!(IpAddr::V4(Ipv4Addr::new(8, 8, 8, 8)).is_bogon(), false);
assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)).is_bogon(), true);