- New source device numbering system: now based on ip address and not host name.

This commit is contained in:
2025-07-06 19:58:01 +02:00
parent fbfdc42bda
commit de448dd924

View File

@@ -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 (04294967295)" >&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 # network_common_load
#-------------------------------------------------------------------------------------------------------------------------- #--------------------------------------------------------------------------------------------------------------------------
@@ -352,6 +402,8 @@ network_src_tab_load()
${LOG} 1>&2 "Loading Src tab..." ${LOG} 1>&2 "Loading Src tab..."
ip_base=$( ip_to_num ${NETWORK_SRC_LOCAL_ADDRESS})
while IFS= read -r line while IFS= read -r line
do do
@@ -380,8 +432,14 @@ network_src_tab_load()
"0") # Local "0") # Local
# nstl_device="${NETWORK_SRC_DEVICE}-${nstl_local_id}" # nstl_device="${NETWORK_SRC_DEVICE}-${nstl_local_id}"
# ((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 "1") # Routed