summaryrefslogtreecommitdiffstats
path: root/bin/netmask-to-prefix
blob: 1c4dbeb281660692d112ed4a9c5d38ffb6d3b33e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/sh
set -euf

netmask=$1

binaryNetmask=$(echo $1 | sed 's/^/obase=2;/;s/\./;/g' | bc | tr -d \\n)
binaryPrefix=$(echo $binaryNetmask | sed -n 's/^\(1*\)0*$/\1/p')
if ! echo $binaryPrefix | grep -q .; then
  echo $0: bad netmask: $netmask >&2
  exit 4
fi
printf %s $binaryPrefix | tr -d 0 | wc -c