diff options
| author | Philip Prindeville <philipp@redfish-solutions.com> | 2023-11-03 21:11:49 -0600 |
|---|---|---|
| committer | Philip Prindeville <philipp@redfish-solutions.com> | 2023-12-12 12:30:35 -0700 |
| commit | 6cdc429a484392afb4ca7c8a32355987d9e0cc73 (patch) | |
| tree | 96ba38ee72ba6cf03498613f8e9ef0ec377009bd | |
| parent | f0612c0d844505e214f0569285d4cafe4016a1ec (diff) | |
| download | upstream-6cdc429a484392afb4ca7c8a32355987d9e0cc73.tar.gz upstream-6cdc429a484392afb4ca7c8a32355987d9e0cc73.tar.bz2 upstream-6cdc429a484392afb4ca7c8a32355987d9e0cc73.zip | |
base-files: ipcalc.sh: Add prefix-to-netmask conversion
Seems like it might be used in other places, so factor it into the
library.
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
| -rwxr-xr-x | package/base-files/files/bin/ipcalc.sh | 2 | ||||
| -rw-r--r-- | package/base-files/files/lib/functions/ipv4.sh | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 2ddfbb3abaf..4f48e0a7927 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -55,7 +55,7 @@ case "$1" in printf "Prefix out of range (%s)\n" "$prefix" >&2 exit 1 fi - netmask=$(((0xffffffff << (32 - prefix)) & 0xffffffff)) + prefix2netmask netmask "$prefix" || exit 1 shift ;; *) diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh index e12f6f56a76..9405a635525 100644 --- a/package/base-files/files/lib/functions/ipv4.sh +++ b/package/base-files/files/lib/functions/ipv4.sh @@ -144,3 +144,16 @@ ip2str() { export -- "$__var=$((__n >> 24)).$(((__n >> 16) & 255)).$(((__n >> 8) & 255)).$((__n & 255))" } +# convert prefix into an integer bitmask +prefix2netmask() { + local __var="$1" __n="$2" + assert_uint32 "$__n" || return 1 + + if [ "$__n" -gt 32 ]; then + printf "Prefix out-of-range (%s)" "$__n" >&2 + return 1 + fi + + export -- "$__var=$(((~(uint_max >> __n)) & uint_max))" +} + |
