mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
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:
@@ -291,6 +291,43 @@ sub get_broadcast($) {
|
|||||||
return &bin2ip($network_bin ^ ~$netmask_bin);
|
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($) {
|
sub normalize_network($) {
|
||||||
my $network = shift;
|
my $network = shift;
|
||||||
my $address = &get_netaddress($network);
|
my $address = &get_netaddress($network);
|
||||||
|
|||||||
Reference in New Issue
Block a user