From 012e486414c394e506f1c3301f07f24289a5302f Mon Sep 17 00:00:00 2001 From: bergware Date: Thu, 8 May 2025 23:33:32 +0200 Subject: [PATCH] docker: better handling of IPv6 /128 subnets --- etc/rc.d/rc.docker | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/etc/rc.d/rc.docker b/etc/rc.d/rc.docker index 08c4f43a5..8739014dc 100755 --- a/etc/rc.d/rc.docker +++ b/etc/rc.d/rc.docker @@ -356,10 +356,10 @@ docker_network_start(){ GATEWAY=$(ip -4 route show default dev $NETWORK | awk '{print $3;exit}') fi SUBNET6=; GATEWAY6=; SERVER6=; - [[ -z ${!AUTO} || ${!AUTO} =~ "6" ]] && IPV6=$(ip -6 -br addr show scope global primary -deprecated dev $NETWORK | awk '{print $3;exit}') || IPV6= + # get IPv6 address - ignore any /128 networks + [[ -z ${!AUTO} || ${!AUTO} =~ "6" ]] && IPV6=$(ip -6 -br addr show scope global primary -deprecated dev $NETWORK | awk -v RS='[[:space:]]+' '(NR>2){print}' | grep -Pvm1 '^.+/128|^$') || IPV6= if [[ -n $IPV6 ]]; then - # get IPV6 subnet, preset to /64 if single host address is given - [[ ${IPV6#*/} == 128 ]] && SUBNET6=$(echo $IPV6 | sed -r 's/^([^:]+):([^:]+):([^:]+):([^:]+).*$/\1:\2:\3:\4::\/64/') || SUBNET6=$(ip -6 route show $IPV6 dev $NETWORK | awk '{print $1;exit}') + SUBNET6=$(ip -6 route show $IPV6 dev $NETWORK | awk '{print $1;exit}') SERVER6=${IPV6%/*} GATEWAY6=$(ip -6 route show default dev $NETWORK | awk '{print $3;exit}') # replace link local address for first address in subnet