#ip-address #ipv6 #ip #ipv4 #bogus

bogon

一个用于检查 IP 地址是否为博贡的 Rust 库

1 个不稳定版本

0.1.0 2024年4月30日

#22 in #ipv4

MIT 许可证

19KB
229 代码行

博贡

Rust

博贡是一个 Rust 库,用于检查 IP 地址是否被认为是“虚假”或“博贡”,这意味着它在公共互联网上不可用。这包括私有 IP 地址、环回地址和其他保留地址。

功能

  • 支持 IPv4 和 IPv6 地址。
  • 包含使用扩展特性检查虚假 IP 地址的方法。
  • 努力实现尽可能快。编译器为 IPv4 和 IPv6 地址检查生成 SIMD 指令。
  • IPv6 范围在构建时从 IANA 保留地址注册表 中生成。

示例

use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
use bogon::is_bogon_str;

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);

依赖项

~0.5–1.2MB
~26K SLoC