massage netmask to cidr for buggy shells.

This commit is contained in:
Roy Marples 2008-01-10 18:11:02 +00:00
parent 6ca21b4c6a
commit 6244bcbe84

View File

@ -134,8 +134,22 @@ _wait_for_carrier() {
}
_netmask2cidr() {
local i= len=0
# Some shells cannot handle hex arithmetic, so we massage it slightly
# Buggy shells include FreeBSD sh, dash and busybox.
# bash and NetBSD sh don't need this.
case $1 in
0x*)
local hex=${1#0x*} quad=
while [ -n "${hex}" ]; do
local lastbut2=${hex#??*}
quad=${quad}${quad:+.}0x${hex%${lastbut2}*}
hex=${lastbut2}
done
set -- ${quad}
;;
esac
local i= len=
local IFS=.
for i in $1; do
while [ ${i} != "0" ]; do