Seems like it might be used in other places, so factor it into the
library.
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
printf "Prefix out of range (%s)\n" "$prefix" >&2
exit 1
fi
- netmask=$(((0xffffffff << (32 - prefix)) & 0xffffffff))
+ prefix2netmask netmask "$prefix" || exit 1
shift
;;
*)
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))"
+}
+