diff options
-rw-r--r-- | etc/inc/interfaces.inc | 15 | ||||
-rwxr-xr-x | etc/rc.newwanip | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index a953fd1..87795f1 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1964,6 +1964,21 @@ function interface_proxyarp_configure($interface = "") { } } +function interface_ipalias_cleanup($interface, $inet = "inet4") { + global $g, $config; + + if (is_array($config['virtualip']['vip'])) { + foreach ($config['virtualip']['vip'] as $vip) { + if ($vip['mode'] == "ipalias" && $vip['interface'] == $interface) { + if ($inet == "inet6" && is_ipaddrv6($vip['subnet'])) + interface_vip_bring_down($vip); + else if ($inet == "inet4" && is_ipaddrv4($vip['subnet'])) + interface_vip_bring_down($vip); + } + } + } +} + function interfaces_vips_configure($interface = "") { global $g, $config; if(isset($config['system']['developerspew'])) { diff --git a/etc/rc.newwanip b/etc/rc.newwanip index 939488b..b6f6a6a 100755 --- a/etc/rc.newwanip +++ b/etc/rc.newwanip @@ -97,6 +97,7 @@ system_resolvconf_generate(true); /* write current WAN IP to file */ file_put_contents("{$g['vardb_path']}/{$interface}_ip", $curwanip); +interface_ipalias_cleanup($interface, "inet4"); link_interface_to_vips($interface, "update"); unset($gre); |