mirror of
https://gitlab.com/shorewall/code.git
synced 2025-03-05 10:02:19 +01:00
More tweaking of address manipulation code
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@611 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
parent
c3eab43a3b
commit
8683295810
@ -2895,17 +2895,17 @@ ip_range() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
# Netmask from VLSM
|
# Netmask from CIDR
|
||||||
#
|
#
|
||||||
ip_netmask() {
|
ip_netmask() {
|
||||||
echo $(( $(( 0xffffffff << $((32 - $1)) )) & 0xffffffff ))
|
echo $(( $(( 0xffffffff << $((32 - ${1#*/})) )) & 0xffffffff ))
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
# Network address from CIDR
|
# Network address from CIDR
|
||||||
#
|
#
|
||||||
networkaddress() {
|
networkaddress() {
|
||||||
local decodedaddr=`decodeaddr ${1%/*}`
|
local decodedaddr=`decodeaddr ${1%/*}`
|
||||||
local netmask=`ip_netmask ${1#*/}`
|
local netmask=`ip_netmask $1`
|
||||||
|
|
||||||
echo `encodeaddr $(($decodedaddr & $netmask))`
|
echo `encodeaddr $(($decodedaddr & $netmask))`
|
||||||
}
|
}
|
||||||
@ -2914,7 +2914,7 @@ networkaddress() {
|
|||||||
#
|
#
|
||||||
broadcastaddress() {
|
broadcastaddress() {
|
||||||
local decodedaddr=`decodeaddr ${1%/*}`
|
local decodedaddr=`decodeaddr ${1%/*}`
|
||||||
local netmask=`ip_netmask ${1#*/}`
|
local netmask=`ip_netmask $1`
|
||||||
|
|
||||||
echo `encodeaddr $(( $(($decodedaddr & $netmask)) | $(( $netmask ^ 0xffffffff )) ))`
|
echo `encodeaddr $(( $(($decodedaddr & $netmask)) | $(( $netmask ^ 0xffffffff )) ))`
|
||||||
}
|
}
|
||||||
@ -2923,7 +2923,7 @@ broadcastaddress() {
|
|||||||
#
|
#
|
||||||
in_subnet() # $1 = IP address, $2 = CIDR network
|
in_subnet() # $1 = IP address, $2 = CIDR network
|
||||||
{
|
{
|
||||||
local netmask=`ip_netmask ${2#*/}`
|
local netmask=`ip_netmask $2`
|
||||||
|
|
||||||
test $(( `decodeaddr $1` & $netmask)) -eq $(( `decodeaddr ${2%/*}` & $netmask ))
|
test $(( `decodeaddr $1` & $netmask)) -eq $(( `decodeaddr ${2%/*}` & $netmask ))
|
||||||
}
|
}
|
||||||
@ -3243,7 +3243,7 @@ add_ip_aliases()
|
|||||||
{
|
{
|
||||||
local addresses external interface inet cidr rest val
|
local addresses external interface inet cidr rest val
|
||||||
|
|
||||||
details()
|
address_details()
|
||||||
{
|
{
|
||||||
#
|
#
|
||||||
# Folks feel uneasy if they don't see all of the same
|
# Folks feel uneasy if they don't see all of the same
|
||||||
@ -3252,7 +3252,7 @@ add_ip_aliases()
|
|||||||
# the anxiety level, we have the following code which sets
|
# the anxiety level, we have the following code which sets
|
||||||
# the VLSM and BRD from an existing address in the same subnet
|
# the VLSM and BRD from an existing address in the same subnet
|
||||||
#
|
#
|
||||||
# Get all of the lines that contain inet addresses with broadcast
|
# Get all of the lines that contain inet addresses
|
||||||
#
|
#
|
||||||
ip addr show $interface 2> /dev/null | grep 'inet' | while read inet cidr rest ; do
|
ip addr show $interface 2> /dev/null | grep 'inet' | while read inet cidr rest ; do
|
||||||
if in_subnet $external $cidr; then
|
if in_subnet $external $cidr; then
|
||||||
@ -3264,7 +3264,7 @@ add_ip_aliases()
|
|||||||
|
|
||||||
do_one()
|
do_one()
|
||||||
{
|
{
|
||||||
val=`details`
|
val=`address_details`
|
||||||
run_ip addr add ${external}${val} dev $interface $label
|
run_ip addr add ${external}${val} dev $interface $label
|
||||||
echo "$external $interface" >> ${STATEDIR}/nat
|
echo "$external $interface" >> ${STATEDIR}/nat
|
||||||
[ -n "$label" ] && label="with $label"
|
[ -n "$label" ] && label="with $label"
|
||||||
|
Loading…
Reference in New Issue
Block a user