- New source device numbering system: now based on ip address and not host name.
This commit is contained in:
@@ -61,6 +61,56 @@ fi
|
||||
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# ip_to_num
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
ip_to_num()
|
||||
{
|
||||
local ip="$1"
|
||||
local a
|
||||
local b
|
||||
local c
|
||||
local d
|
||||
|
||||
IFS=. read -r a b c d <<< "${ip}"
|
||||
|
||||
echo $(( (a << 24) + (b << 16) + (c << 8) + d ))
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# num_to_ip
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
num_to_ip()
|
||||
{
|
||||
local num="$1"
|
||||
|
||||
|
||||
# Optional safety check
|
||||
if (( num < 0 || num > 4294967295 ))
|
||||
then
|
||||
echo "num_to_ip: value out of range (0‑4294967295)" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Extract each byte by shifting and masking
|
||||
local a=$(( (num >> 24) & 255 ))
|
||||
local b=$(( (num >> 16) & 255 ))
|
||||
local c=$(( (num >> 8) & 255 ))
|
||||
local d=$(( num & 255 ))
|
||||
|
||||
printf '%d.%d.%d.%d\n' "$a" "$b" "$c" "$d"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# network_common_load
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -353,6 +403,8 @@ network_src_tab_load()
|
||||
|
||||
${LOG} 1>&2 "Loading Src tab..."
|
||||
|
||||
ip_base=$( ip_to_num ${NETWORK_SRC_LOCAL_ADDRESS})
|
||||
|
||||
while IFS= read -r line
|
||||
do
|
||||
line=${line%%#*}
|
||||
@@ -380,8 +432,14 @@ network_src_tab_load()
|
||||
"0") # Local
|
||||
# nstl_device="${NETWORK_SRC_DEVICE}-${nstl_local_id}"
|
||||
# ((nstl_local_id++))
|
||||
[[ $nstl_host_name =~ ([0-9]+) ]]
|
||||
nstl_device="${NETWORK_SRC_DEVICE}-${BASH_REMATCH[1]}"
|
||||
|
||||
# [[ $nstl_host_name =~ ([0-9]+) ]]
|
||||
# nstl_device="${NETWORK_SRC_LOCAL_DEVICE}-${BASH_REMATCH[1]}"
|
||||
|
||||
ip_num=$(ip_to_num ${nstl_ip})
|
||||
device_num="$(( ( ${ip_num} - ${ip_base}) / 4))"
|
||||
|
||||
nstl_device="${NETWORK_SRC_LOCAL_DEVICE}-${device_num}"
|
||||
;;&
|
||||
|
||||
"1") # Routed
|
||||
|
||||
Reference in New Issue
Block a user