mirror of
https://gitlab.com/shorewall/code.git
synced 2025-06-01 07:25:42 +02:00
Rename ip_cidr() to ip_vlsm()
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@633 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
parent
4f6f76ec72
commit
134f5db118
@ -341,22 +341,22 @@ in_subnet() # $1 = IP address, $2 = CIDR network
|
||||
}
|
||||
|
||||
#
|
||||
# Netmask to CIDR
|
||||
# Netmask to VLSM
|
||||
#
|
||||
ip_cidr() {
|
||||
ip_vlsm() {
|
||||
local mask=`decodeaddr $1`
|
||||
local cidr=0
|
||||
local vlsm=0
|
||||
local x=$(( 128 $LEFTSHIFT 24 ))
|
||||
|
||||
while [ $(( $x & $mask )) -ne 0 ]; do
|
||||
[ $mask -eq $x ] && mask=0 || mask=$(( $mask $LEFTSHIFT 1 )) # Don't Ask...
|
||||
cidr=$(($cidr + 1))
|
||||
vlsm=$(($vlsm + 1))
|
||||
done
|
||||
|
||||
if [ $(( $mask & 2147483647)) -ne 0 ]; then
|
||||
echo "Invalid net mask: $1" >&2
|
||||
else
|
||||
echo $cidr
|
||||
echo $vlsm
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -877,18 +877,18 @@ case "$1" in
|
||||
ipcalc)
|
||||
if [ $# -eq 2 ]; then
|
||||
address=${2%/*}
|
||||
cidr=${2#*/}
|
||||
vlsm=${2#*/}
|
||||
elif [ $# -eq 3 ]; then
|
||||
address=$2
|
||||
cidr=`ip_cidr $3`
|
||||
vlsm=`ip_vlsm $3`
|
||||
else
|
||||
usage 1
|
||||
fi
|
||||
|
||||
[ -z "$cidr" ] && exit 2
|
||||
[ "x$address" = "x$cidr" ] && usage 2
|
||||
[ -z "$vlsm" ] && exit 2
|
||||
[ "x$address" = "x$vlsm" ] && usage 2
|
||||
|
||||
address=$address/$cidr
|
||||
address=$address/$vlsm
|
||||
|
||||
echo " CIDR=$address"
|
||||
temp=`ip_netmask $address`; echo " NETMASK=`encodeaddr $temp`"
|
||||
|
Loading…
x
Reference in New Issue
Block a user