diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc
index 61e9a65c13..2296e3ba79 100644
--- a/src/etc/inc/interfaces.inc
+++ b/src/etc/inc/interfaces.inc
@@ -5013,11 +5013,17 @@ function interface_dhcpv6_configure($ifconf = "wan", $ifcfg, $destroy = false) {
 		if ($debugOption == '-D') {
 			$dhcp6cscriptwithoutra .= "/usr/bin/logger -t dhcp6c \"dhcp6c EXIT or RELEASE on {$wanif} running rc.newwanipv6\"\n";
 		}
-		$dhcp6cscriptwithoutra .= "/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d \"interface={$wanif}&dmnames=\${dmnames}&dmips=\${dmips}\"\n";
+		$dhcp6cscriptwithoutra .= "/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d \"interface={$wanif}&dmnames=\${dmnames}&dmips=\${dmips}&reason=\${REASON}\"\n";
 		$dhcp6cscriptwithoutra .= ";;\n";
-		$dhcp6cscriptwithoutra .= "RENEW|INFO)\n";
+		$dhcp6cscriptwithoutra .= "RENEW)\n";
 		if ($debugOption == '-D') {
-			$dhcp6cscriptwithoutra .= "/usr/bin/logger -t dhcp6c \"dhcp6c renew, no change - bypassing update on {$wanif}\"\n";
+			$dhcp6cscriptwithoutra .= "/usr/bin/logger -t dhcp6c \"dhcp6c renew on {$wanif}\"\n";
+		}
+		$dhcp6cscriptwithoutra .= "/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d \"interface={$wanif}&dmnames=\${dmnames}&dmips=\${dmips}&reason=\${REASON}\"\n";
+		$dhcp6cscriptwithoutra .= ";;\n";
+		$dhcp6cscriptwithoutra .= "INFO)\n";
+		if ($debugOption == '-D') {
+			$dhcp6cscriptwithoutra .= "/usr/bin/logger -t dhcp6c \"dhcp6c info request on {$wanif}, no changes\"\n";
 		}
 		$dhcp6cscriptwithoutra .= "esac\n";
 		if (!@file_put_contents(
@@ -5056,11 +5062,17 @@ function interface_dhcpv6_configure($ifconf = "wan", $ifcfg, $destroy = false) {
 			if ($debugOption == '-D') {
 				$dhcp6cscript .= "/usr/bin/logger -t dhcp6c \"dhcp6c RELEASE, REQUEST or EXIT on {$wanif} running rc.newwanipv6\"\n";
 			}
-			$dhcp6cscript .= "/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d \"interface={$wanif}&dmnames=\${dmnames}&dmips=\${dmips}\"\n";
+			$dhcp6cscript .= "/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d \"interface={$wanif}&dmnames=\${dmnames}&dmips=\${dmips}&reason=\${REASON}\"\n";
+			$dhcp6cscript .= ";;\n";
+			$dhcp6cscript .= "RENEW)\n";
+			if ($debugOption == '-D') {
+				$dhcp6cscript .= "/usr/bin/logger -t dhcp6c \"dhcp6c renew on {$wanif}\"\n";
+			}
+			$dhcp6cscript .= "/usr/local/sbin/fcgicli -f /etc/rc.newwanipv6 -d \"interface={$wanif}&dmnames=\${dmnames}&dmips=\${dmips}&reason=\${REASON}\"\n";
 			$dhcp6cscript .= ";;\n";
-			$dhcp6cscript .= "RENEW|INFO)\n";
+			$dhcp6cscript .= "INFO)\n";
 			if ($debugOption == '-D') {
-				$dhcp6cscript .= "/usr/bin/logger -t dhcp6c \"dhcp6c renew, no change - bypassing update on {$wanif}\"\n";
+				$dhcp6cscript .= "/usr/bin/logger -t dhcp6c \"dhcp6c info request on {$wanif}, no changes\"\n";
 			}
 			$dhcp6cscript .= "esac\n";
 			$rtsold_ra_ifs[] = $wanif;
diff --git a/src/etc/rc.newwanipv6 b/src/etc/rc.newwanipv6
index f6ed6d0978..1a9339b8c7 100755
--- a/src/etc/rc.newwanipv6
+++ b/src/etc/rc.newwanipv6
@@ -83,6 +83,24 @@ if ((empty($curwanipv6) || !is_ipaddrv6($curwanipv6)) && substr($interface_real,
 	return;
 }
 
+if (isset($_GET['reason'])) {
+	$reason = $_GET['reason'];
+} else {
+	$reason = getenv("REASON");
+}
+
+if ((strtolower($reason) == "renew") &&
+    file_exists("{$g['vardb_path']}/{$interface}_ipv6")) {
+	/* Compare current WAN IPv6 to file */
+	$old_ipv6 = chop(file_get_contents("/var/db/${interface}_ipv6"));
+	if (is_ipaddrv6($old_ipv6) && ($old_ipv6 != $curwanipv6)) {
+		log_error("rc.newwanipv6: IPv6 address changed for interface {$interface_descr} [{$interface}] (Old: {$old_ipv6}, New: {$curwanipv6}).");
+	} else {
+		log_error("rc.newwanipv6: No change in IPv6 address for interface {$interface_descr} [{$interface}]: {$curwanipv6}.");
+		return;
+	}
+}
+
 if (isset($_GET['dmips'])) {
 	$new_domain_name_servers = $_GET['dmips'];
 } else {
