network-functions.pl: Add function to extract prefix

wireguard-functions.pl requires get_prefix

commit 0e55d27737
Author: Michael Tremer <michael.tremer@ipfire.org>
Date:   Wed Mar 20 12:09:58 2024 +0100

    network-functions.pl: Add function to extract prefix

    Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>

Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
This commit is contained in:
Vincent Li
2025-07-04 21:40:08 +00:00
parent d1d79d74e5
commit 67d1b8a4e9

View File

@@ -291,6 +291,43 @@ sub get_broadcast($) {
return &bin2ip($network_bin ^ ~$netmask_bin);
}
sub get_prefix($) {
my $network = shift;
# Convert to binary
my ($network_bin, $netmask_bin) = &network2bin($network);
if (defined $netmask_bin) {
my $prefix = 0;
while (1) {
# End the loop if we have consumed all ones
last if ($netmask_bin == 0);
# Increment prefix
$prefix++;
# Remove the most-significant one
$netmask_bin <<= 1;
$netmask_bin &= 0xffffffff;
}
return $prefix;
}
return undef;
}
sub get_netmask($) {
my $network = shift;
# Fetch the prefix
my $prefix = &get_prefix($network);
# Convert to netmask
return &convert_prefix2netmask($prefix);
}
sub normalize_network($) {
my $network = shift;
my $address = &get_netaddress($network);