本文简要介绍rust语言中 std::net::Ipv6Addr.is_unicast_link_local
的用法。
用法
pub fn is_unicast_link_local(&self) -> bool
如果地址是具有 link-local 范围的单播地址(如 RFC 4291 中所定义),则返回 true
。
如果单播地址具有前缀 fe80::/10
,则该地址具有 link-local 范围(根据 RFC 4291 section 2.4 )。请注意,这包含的地址比 RFC 4291 section 2.5.6 中定义的地址更多,RFC 4291 section 2.5.6 将“Link-Local IPv6 单播地址”说明为具有以下更严格的格式:
| 10 bits | 54 bits | 64 bits |
+----------+-------------------------+----------------------------+
|1111111010| 0 | interface ID |
+----------+-------------------------+----------------------------+
因此,虽然目前应用程序将遇到的唯一具有 link-local 范围的地址都在 fe80::/64
中,但随着新标准的发布,这可能会在未来发生变化。可以分配fe80::/10
中的更多地址,这些地址将具有link-local 范围。
另请注意,虽然 RFC 4291 section 2.5.3 提到 loopback address ( ::1
)“它被视为具有 Link-Local 范围”,但这并不意味着环回地址实际上具有 link-local 范围,并且此方法将返回false
就可以了。
例子
#![feature(ip)]
use std::net::Ipv6Addr;
// The loopback address (`::1`) does not actually have link-local scope.
assert_eq!(Ipv6Addr::LOCALHOST.is_unicast_link_local(), false);
// Only addresses in `fe80::/10` have link-local scope.
assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), false);
assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
// Addresses outside the stricter `fe80::/64` also have link-local scope.
assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 1, 0, 0, 0, 0).is_unicast_link_local(), true);
assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
相关用法
- Rust Ipv6Addr.is_unicast_global用法及代码示例
- Rust Ipv6Addr.is_unicast用法及代码示例
- Rust Ipv6Addr.is_unique_local用法及代码示例
- Rust Ipv6Addr.is_unspecified用法及代码示例
- Rust Ipv6Addr.is_multicast用法及代码示例
- Rust Ipv6Addr.is_documentation用法及代码示例
- Rust Ipv6Addr.is_benchmarking用法及代码示例
- Rust Ipv6Addr.is_loopback用法及代码示例
- Rust Ipv6Addr.is_global用法及代码示例
- Rust Ipv6Addr.octets用法及代码示例
- Rust Ipv6Addr.multicast_scope用法及代码示例
- Rust Ipv6Addr.to_ipv4用法及代码示例
- Rust Ipv6Addr.to_canonical用法及代码示例
- Rust Ipv6Addr.new用法及代码示例
- Rust Ipv6Addr.to_ipv4_mapped用法及代码示例
- Rust Ipv6Addr.segments用法及代码示例
- Rust Ipv6Addr用法及代码示例
- Rust Ipv6MulticastScope用法及代码示例
- Rust Ipv4Addr.is_global用法及代码示例
- Rust Ipv4Addr.new用法及代码示例
- Rust Ipv4Addr.is_link_local用法及代码示例
- Rust Ipv4Addr.is_loopback用法及代码示例
- Rust Ipv4Addr.is_private用法及代码示例
- Rust Ipv4Addr用法及代码示例
- Rust Ipv4Addr.to_ipv6_compatible用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::net::Ipv6Addr.is_unicast_link_local。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。