massage netmask to cidr for buggy shells.
This commit is contained in:
parent
6ca21b4c6a
commit
6244bcbe84
16
sh/net.sh
16
sh/net.sh
@ -134,8 +134,22 @@ _wait_for_carrier() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_netmask2cidr() {
|
_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=.
|
local IFS=.
|
||||||
for i in $1; do
|
for i in $1; do
|
||||||
while [ ${i} != "0" ]; do
|
while [ ${i} != "0" ]; do
|
||||||
|
Loading…
Reference in New Issue
Block a user