achanda / ipnetwork

A library to work with CIDRs in rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

is_supernet_of does not work properly

mbasunov opened this issue · comments

Hi

use ipnetwork::Ipv4Network;
let net: Ipv4Network = "10.1.0.0/16".parse().unwrap();
let net2: Ipv4Network = "10.1.0.0/15".parse().unwrap();
println!("{:?} {} {}", net2, net.is_supernet_of(net2),
    net.is_supernet_of(Ipv4Network::new(net2.network(), net2.prefix()).unwrap()));

Output:
Ipv4Network { addr: 10.1.0.0, prefix: 15 } true false

So, is_supernet_of accidentally thinks that /16 is a supernet of /15 if network address is the same.

PS: Prefix "X/Y" consists of network address X and bits Y. So, function prefix which return bits confuses any network engineer.

Confirmed.