You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
949 B
55 lines
949 B
. utils/file.sh
|
|
|
|
##
|
|
# Function calculates number of bit in a netmask
|
|
#
|
|
mask2cidr() {
|
|
local NBITS=0
|
|
local OLDIFS="${IFS}"
|
|
IFS=.
|
|
|
|
for DEC in $1
|
|
do
|
|
case ${DEC} in
|
|
255) NBITS=$((NBITS+8));;
|
|
254) NBITS=$((NBITS+7));;
|
|
252) NBITS=$((NBITS+6));;
|
|
248) NBITS=$((NBITS+5));;
|
|
240) NBITS=$((NBITS+4));;
|
|
224) NBITS=$((NBITS+3));;
|
|
192) NBITS=$((NBITS+2));;
|
|
128) NBITS=$((NBITS+1));;
|
|
0);;
|
|
*) NBITS=0; IFS="${OLDIFS}"; return 1
|
|
esac
|
|
done
|
|
IFS="${OLDIFS}"
|
|
${ECHO} "${NBITS}"
|
|
}
|
|
|
|
##
|
|
# Function calculates a netmask from number of bits
|
|
#
|
|
cidr2mask() {
|
|
local I MASK=""
|
|
local FULL_OCTETS=$((${1}/8))
|
|
local PARTIAL_OCTET=$((${1}%8))
|
|
|
|
for I in 0 1 2 3
|
|
do
|
|
if [ ${I} -lt ${FULL_OCTETS} ]
|
|
then
|
|
MASK="${MASK}255"
|
|
elif [ ${I} -eq ${FULL_OCTETS} ]
|
|
then
|
|
MASK="${MASK}$((256-(1<<(8-${PARTIAL_OCTET}))))"
|
|
else
|
|
MASK="${MASK}0"
|
|
fi
|
|
[ ${I} -lt 3 ] && MASK="${MASK}."
|
|
done
|
|
|
|
${ECHO} ${MASK}
|
|
}
|
|
|
|
# vim: set ts=4 sw=4:
|