From de448dd924fb738938092c09b25098ec234c98ed Mon Sep 17 00:00:00 2001 From: "Arnaud G. GIBERT" Date: Sun, 6 Jul 2025 19:58:01 +0200 Subject: [PATCH] - New source device numbering system: now based on ip address and not host name. --- usr/local/lib/network.bash | 62 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/usr/local/lib/network.bash b/usr/local/lib/network.bash index 1c73f14..8ab0e37 100644 --- a/usr/local/lib/network.bash +++ b/usr/local/lib/network.bash @@ -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 #-------------------------------------------------------------------------------------------------------------------------- @@ -352,6 +402,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 @@ -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