From 31961bf577ba5f126fb8755e6e707163a562e088 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 11 May 2023 09:56:51 +0200 Subject: [PATCH] interfaces: handle RENEW/REBIND and PDINFO shift #6522 --- src/etc/inc/interfaces.inc | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 7ae26403d62..67fc3d68b9d 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -2788,38 +2788,51 @@ function interface_dhcpv6_prepare($interface, $wancfg, $cleanup = false) #!/bin/sh case \$REASON in -INFOREQ|REQUEST) - /usr/bin/logger -t dhcp6c "dhcp6c \$REASON on {$wanif}" +INFOREQ|REBIND|RENEW|REQUEST) + /usr/bin/logger -t dhcp6c "dhcp6c_script: \$REASON on {$wanif} executing" + ARGS= for NAMESERVER in \${new_domain_name_servers}; do ARGS="\${ARGS} -a \${NAMESERVER}" done /usr/local/sbin/ifctl -i ${wanif} -6nd \${ARGS} + ARGS= for DOMAIN in \${new_domain_name}; do ARGS="\${ARGS} -a \${DOMAIN}" done /usr/local/sbin/ifctl -i ${wanif} -6sd \${ARGS} + + PDOLD=$(/usr/local/sbin/ifctl -i ${wanif} -6p) ARGS= for PD in \${PDINFO}; do ARGS="\${ARGS} -a \${PD}" done /usr/local/sbin/ifctl -i ${wanif} -6pd \${ARGS} + PDNEW=$(/usr/local/sbin/ifctl -i ${wanif} -6p) + FORCE= if [ \${REASON} = "REQUEST" ]; then + /usr/bin/logger -t dhcp6c "dhcp6c_script: \$REASON on {$wanif} renewal (REASON)" + FORCE=force + elif [ "\${PDOLD}" != "\${PDNEW}" ]; then + /usr/bin/logger -t dhcp6c "dhcp6c_script: \$REASON on {$wanif} renewal (PDINFO)" FORCE=force fi + /usr/local/sbin/configctl -d interface newipv6 {$wanif} \${FORCE} ;; EXIT|RELEASE) - /usr/bin/logger -t dhcp6c "dhcp6c \$REASON on {$wanif}" + /usr/bin/logger -t dhcp6c "dhcp6c_script: \$REASON on {$wanif} executing" + /usr/local/sbin/ifctl -i ${wanif} -6nd /usr/local/sbin/ifctl -i ${wanif} -6sd /usr/local/sbin/ifctl -i ${wanif} -6pd + /usr/local/sbin/configctl -d interface newipv6 {$wanif} ;; *) - /usr/bin/logger -t dhcp6c "dhcp6c \$REASON on {$wanif} (ignored)" + /usr/bin/logger -t dhcp6c "dhcp6c_script: \$REASON on {$wanif} ignored" ;; esac