Some checks are pending
CI / build (push) Waiting to run
CI / deploy (push) Blocked by required conditions
189 lines
6.4 KiB
V
189 lines
6.4 KiB
V
import netaddr
|
|
|
|
fn test_ipv4_addr_from_string() {
|
|
assert netaddr.Ipv4Addr.from_string('203.0.113.1')!.str() == '203.0.113.1'
|
|
}
|
|
|
|
fn test_ipv4_addr_from_u32() {
|
|
assert netaddr.Ipv4Addr.from_u32(0).u8_array() == []u8{len: 4}
|
|
assert netaddr.Ipv4Addr.from_u32(0).u8_array_fixed() == [4]u8{}
|
|
assert netaddr.Ipv4Addr.from_u32(u32(2886733829)).str() == '172.16.16.5'
|
|
}
|
|
|
|
fn test_ipv4_addr_tests() {
|
|
addr := netaddr.Ipv4Addr.from_string('203.0.113.1')!
|
|
assert !addr.is_link_local()
|
|
assert !addr.is_loopback()
|
|
assert !addr.is_multicast()
|
|
assert addr.is_unicast()
|
|
assert !addr.is_shared()
|
|
assert addr.is_private()
|
|
assert !addr.is_global()
|
|
assert !addr.is_reserved()
|
|
assert !addr.is_unspecified()
|
|
}
|
|
|
|
fn test_ipv4_addr_ipv6() {
|
|
addr := netaddr.Ipv4Addr.from_string('203.0.113.90')!
|
|
assert addr.ipv6().str() == '::ffff:203.0.113.90'
|
|
assert addr.ipv6(kind: .compat).str() == '::203.0.113.90'
|
|
}
|
|
|
|
fn test_ipv4_ipv6_addr_arr() {
|
|
mut addrs := []netaddr.IpAddr{}
|
|
addrs << netaddr.Ipv4Addr.from_string('203.0.113.90')!
|
|
addrs << netaddr.Ipv6Addr.from_string('::1')!
|
|
assert (addrs[0] as netaddr.Ipv4Addr).str() == '203.0.113.90'
|
|
assert (addrs[1] as netaddr.Ipv6Addr).str() == '::1'
|
|
}
|
|
|
|
fn test_ipv4_net_compare() {
|
|
assert netaddr.Ipv4Net.from_string('10.0.0.0/24')! < netaddr.Ipv4Net.from_string('10.10.0.0/24')!
|
|
}
|
|
|
|
fn test_ipv4_net() {
|
|
net := netaddr.Ipv4Net.from_string('198.51.100.0/24')!
|
|
assert net.str() == '198.51.100.0/24'
|
|
assert net.prefix_len == 24
|
|
assert net.network_address.str() == '198.51.100.0'
|
|
assert net.network_mask.str() == '255.255.255.0'
|
|
assert net.host_mask.str() == '0.0.0.255'
|
|
assert net.broadcast_address.str() == '198.51.100.255'
|
|
assert net.capacity() == 256
|
|
assert !net.is_global()
|
|
}
|
|
|
|
fn test_ipv4_net_from_string() {
|
|
net1 := netaddr.Ipv4Net.from_string('198.51.100.0/24')!
|
|
net2 := netaddr.Ipv4Net.from_string('198.51.100.0/255.255.255.0')!
|
|
net3 := netaddr.Ipv4Net.from_string('198.51.100.0/0.0.0.255')!
|
|
assert net1.str() == '198.51.100.0/24'
|
|
assert net2.str() == '198.51.100.0/24'
|
|
assert net3.str() == '198.51.100.0/24'
|
|
assert net1.host_address == none
|
|
assert net2.host_address == none
|
|
assert net3.host_address == none
|
|
assert net3.host_address as netaddr.Ipv4Addr == netaddr.Ipv4Addr{}
|
|
assert (net3.host_address as netaddr.Ipv4Addr).u8_array_fixed() == [4]u8{}
|
|
net4 := netaddr.Ipv4Net.from_string('198.51.100.12/24')!
|
|
net5 := netaddr.Ipv4Net.from_string('198.51.100.12/255.255.255.0')!
|
|
net6 := netaddr.Ipv4Net.from_string('198.51.100.12/0.0.0.255')!
|
|
assert net4.str() == '198.51.100.0/24'
|
|
assert net5.str() == '198.51.100.0/24'
|
|
assert net6.str() == '198.51.100.0/24'
|
|
assert (net4.host_address as netaddr.Ipv4Addr).str() == '198.51.100.12'
|
|
assert (net5.host_address as netaddr.Ipv4Addr).str() == '198.51.100.12'
|
|
assert (net6.host_address as netaddr.Ipv4Addr).str() == '198.51.100.12'
|
|
net7 := netaddr.Ipv4Net.from_string('172.16.16.6')!
|
|
assert net7.str() == '172.16.16.6/32'
|
|
assert net7.host_address == none
|
|
}
|
|
|
|
fn test_ipv4_net_from_u32() {
|
|
net1 := netaddr.Ipv4Net.from_u32(3405803776, 24)!
|
|
net2 := netaddr.Ipv4Net.from_u32(3405803788, 24)!
|
|
assert net1.str() == '203.0.113.0/24'
|
|
assert net1.host_address == none
|
|
assert net2.str() == '203.0.113.0/24'
|
|
assert (net2.host_address as netaddr.Ipv4Addr).u32() == u32(3405803788)
|
|
}
|
|
|
|
fn test_ipv4_net_host_bits() {
|
|
net := netaddr.Ipv4Net.from_string('10.0.10.2/29')!
|
|
assert net.network_address.str() == '10.0.10.0'
|
|
assert (net.host_address as netaddr.Ipv4Addr).str() == '10.0.10.2'
|
|
}
|
|
|
|
fn test_ipv4_net_0() {
|
|
net := netaddr.Ipv4Net.from_string('0.0.0.0/0')!
|
|
assert net.str() == '0.0.0.0/0'
|
|
assert net.prefix_len == 0
|
|
assert net.network_address.str() == '0.0.0.0'
|
|
assert net.network_mask.str() == '0.0.0.0'
|
|
assert net.host_mask.str() == '255.255.255.255'
|
|
assert net.broadcast_address.str() == '255.255.255.255'
|
|
assert net.host_address == none
|
|
assert net.capacity() == u64(max_u32) + 1
|
|
}
|
|
|
|
fn test_ipv4_net_255() {
|
|
net := netaddr.Ipv4Net.from_string('255.255.255.255/32')!
|
|
assert net.str() == '255.255.255.255/32'
|
|
assert net.prefix_len == 32
|
|
assert net.network_address.str() == '255.255.255.255'
|
|
assert net.network_mask.str() == '255.255.255.255'
|
|
assert net.host_mask.str() == '0.0.0.0'
|
|
assert net.broadcast_address.str() == '255.255.255.255'
|
|
assert net.host_address == none
|
|
assert net.capacity() == 1
|
|
}
|
|
|
|
fn test_ipv4_net_next() {
|
|
net := netaddr.Ipv4Net.from_string('10.0.10.128/30')!
|
|
mut addrs := []netaddr.Ipv4Addr{}
|
|
for addr in net {
|
|
addrs << addr
|
|
}
|
|
assert addrs[0].str() == '10.0.10.128'
|
|
assert addrs[1].str() == '10.0.10.129'
|
|
assert addrs[2].str() == '10.0.10.130'
|
|
assert addrs[3].str() == '10.0.10.131'
|
|
}
|
|
|
|
fn test_ipv4_net_subnets() {
|
|
net := netaddr.Ipv4Net.from_string('10.0.10.0/24')!
|
|
subnets := net.subnets(26)!
|
|
mut networks := []netaddr.Ipv4Net{}
|
|
for subnet in subnets {
|
|
networks << subnet
|
|
}
|
|
assert networks[0].str() == '10.0.10.0/26'
|
|
assert networks[1].str() == '10.0.10.64/26'
|
|
assert networks[2].str() == '10.0.10.128/26'
|
|
assert networks[3].str() == '10.0.10.192/26'
|
|
}
|
|
|
|
fn test_ipv4_net_nth() {
|
|
net := netaddr.Ipv4Net.from_string('10.0.10.0/24')!
|
|
assert net.nth(-2)!.str() == '10.0.10.254'
|
|
assert net.nth(-1)!.str() == '10.0.10.255'
|
|
assert net.nth(0)!.str() == '10.0.10.0'
|
|
assert net.nth(1)!.str() == '10.0.10.1'
|
|
assert (net.nth(99999) or { netaddr.Ipv4Addr{} }).str() == '0.0.0.0'
|
|
}
|
|
|
|
fn test_ipv4_net_supernet() {
|
|
net := netaddr.Ipv4Net.from_string('10.129.10.0/24')!
|
|
supernet := net.supernet(10)!
|
|
assert supernet.str() == '10.128.0.0/10'
|
|
}
|
|
|
|
fn test_ipv4_net_is_subnet_of() {
|
|
net1 := netaddr.Ipv4Net.from_string('10.10.0.0/16')!
|
|
net2 := netaddr.Ipv4Net.from_string('10.10.0.0/24')!
|
|
assert net2.is_subnet_of(net1)
|
|
}
|
|
|
|
fn test_ipv4_net_is_supernet_of() {
|
|
net1 := netaddr.Ipv4Net.from_string('10.10.0.0/16')!
|
|
net2 := netaddr.Ipv4Net.from_string('10.10.0.0/24')!
|
|
net3 := netaddr.Ipv4Net.from_string('172.16.16.0/24')!
|
|
assert net1.is_supernet_of(net2)
|
|
assert !net1.is_supernet_of(net3)
|
|
}
|
|
|
|
fn test_ipv4_net_first_last() {
|
|
net1 := netaddr.Ipv4Net.from_string('10.0.0.0/24')!
|
|
net2 := netaddr.Ipv4Net.from_string('10.0.0.0/30')!
|
|
net3 := netaddr.Ipv4Net.from_string('10.0.0.0/31')!
|
|
net4 := netaddr.Ipv4Net.from_string('10.0.0.0/32')!
|
|
assert net1.first().str() == '10.0.0.1'
|
|
assert net1.last().str() == '10.0.0.254'
|
|
assert net2.first().str() == '10.0.0.1'
|
|
assert net2.last().str() == '10.0.0.2'
|
|
assert net3.first().str() == '10.0.0.0'
|
|
assert net3.last().str() == '10.0.0.1'
|
|
assert net4.first().str() == '10.0.0.0'
|
|
assert net4.last().str() == '10.0.0.0'
|
|
}
|