From 6cdc429a484392afb4ca7c8a32355987d9e0cc73 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Fri, 3 Nov 2023 21:11:49 -0600 Subject: 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 --- package/base-files/files/lib/functions/ipv4.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'package/base-files/files/lib') diff --git a/package/base-files/files/lib/functions/ipv4.sh b/package/base-files/files/lib/functions/ipv4.sh index e12f6f56a7..9405a63552 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))" +} + -- cgit v1.2.3