rc.inet1: remove leading zeros in IPv4 and IPv6 addresses

This commit is contained in:
bergware
2023-12-09 18:48:38 +01:00
parent 5271163b31
commit 010eaceba7
+12 -10
View File
@@ -67,7 +67,7 @@
# - added "status" command
# Adapted by Bergware for use in Unraid OS - December 2023
# - remove leading zeros from IPv4 address
# - added function to remove leading zeros in IPv4 and IPv6 addresses
# Bergware - modified for Unraid OS, December 2023
@@ -140,13 +140,15 @@ lo_down(){
# INTERFACE FUNCTIONS #
#######################
# function to remove leading zeros in IPv4 address
pact(){
local A=()
local n
for n in ${1//./ }; do A+=($((10#$n))); done
A=${A[@]}
echo -n ${A// /.}
# function to remove leading zeros in IPv4 and IPv6 addresses
unzero(){
local A M Q
case "$1" in
-4) echo -n $(for Q in ${2//./ }; do printf "$M%x" "0x$Q"; M=.; done) ;;
-6) A=${2/::/:-:}
echo -n $(for Q in ${A//:/ }; do [[ $Q != - ]] && printf "$M%x" "0x$Q" || printf ":"; M=:; done) ;;
*) echo -n $2 ;;
esac
}
# function to get link mtu size
@@ -389,14 +391,14 @@ ipaddr_up(){
[[ $j -eq 0 ]] && ADDR=${IPADDR[$i]} || ADDR=${IPADDR[$i,$j]}
if [[ -n $ADDR ]]; then
[[ $j -eq 0 ]] && MASK=${NETMASK[$i]} || MASK=${NETMASK[$i,$j]}
[[ -n $MASK ]] && run ip -4 addr add $(pact $ADDR)/$MASK dev $IFACE metric 1
[[ -n $MASK ]] && run ip -4 addr add $(unzero -4 $ADDR)/$MASK dev $IFACE metric 1
fi
fi
if [[ $IP != ipv4 ]]; then
[[ $j -eq 0 ]] && ADDR6=${IPADDR6[$i]} || ADDR6=${IPADDR6[$i,$j]}
if [[ -n $ADDR6 ]]; then
[[ $j -eq 0 ]] && MASK6=${NETMASK6[$i]} || MASK6=${NETMASK6[$i,$j]}
[[ -n $MASK6 ]] && run ip -6 addr add $ADDR6/$MASK6 dev $IFACE metric 1
[[ -n $MASK6 ]] && run ip -6 addr add $(unzero -6 $ADDR6)/$MASK6 dev $IFACE metric 1
[[ -n $PRIV6 && -d $CONF6/$IFACE ]] && echo 0 >$CONF6/$IFACE/use_tempaddr
fi
fi