Skip to content

Commit 7aecb36

Browse files
committed
interfaces: upon reload request also generate the $realhwif; closes #5819
This goes for all "known" devices. We need to be careful of reload loops that create a device and then reload it which could trigger another interface configure, but at the moment at least all $reload consumers are outside of the plugin device code / single action driggers. Also see: 90f471c
1 parent 82b11d3 commit 7aecb36

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/etc/inc/interfaces.inc

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2116,7 +2116,7 @@ function interfaces_addresses_flush($realif, $family = 4, $ifconfig_details = nu
21162116
}
21172117
}
21182118

2119-
function interface_configure($verbose = false, $interface = 'wan', $reload = false, $linkupevent = false)
2119+
function interface_configure($verbose = false, $interface = 'wan', $reload = false, $linkup = false)
21202120
{
21212121
global $config;
21222122

@@ -2146,6 +2146,19 @@ function interface_configure($verbose = false, $interface = 'wan', $reload = fal
21462146
break;
21472147
}
21482148

2149+
if ($reload) {
2150+
foreach (plugins_devices() as $device) {
2151+
if (empty($device['function']) || empty($device['names'])) {
2152+
continue;
2153+
}
2154+
2155+
if (in_array($realhwif, $device['names'])) {
2156+
log_msg("Device $realhwif requires reload for $interface, configuring now", LOG_ERR);
2157+
call_user_func_array($device['function'], [$realhwif]);
2158+
}
2159+
}
2160+
}
2161+
21492162
$ifconfig_details = legacy_interfaces_details();
21502163
if (
21512164
(strpos($realhwif, '/') === false && empty($ifconfig_details[$realhwif])) ||
@@ -2170,7 +2183,7 @@ function interface_configure($verbose = false, $interface = 'wan', $reload = fal
21702183
interfaces_addresses_flush($realifv6, 6, $ifconfig_details);
21712184
}
21722185

2173-
if (!$linkupevent) {
2186+
if (!$linkup) {
21742187
/* XXX wireless configuration: shouldn't live in interface config */
21752188
interface_wireless_configure($realif, $wancfg);
21762189
}
@@ -2255,13 +2268,13 @@ function interface_configure($verbose = false, $interface = 'wan', $reload = fal
22552268
}
22562269
break;
22572270
case '6rd':
2258-
interface_6rd_configure($interface, $wancfg, $reload || $linkupevent);
2271+
interface_6rd_configure($interface, $wancfg, $reload || $linkup);
22592272
break;
22602273
case '6to4':
2261-
interface_6to4_configure($interface, $wancfg, $reload || $linkupevent);
2274+
interface_6to4_configure($interface, $wancfg, $reload || $linkup);
22622275
break;
22632276
case 'track6':
2264-
interface_track6_configure($interface, $wancfg, $reload || $linkupevent);
2277+
interface_track6_configure($interface, $wancfg, $reload || $linkup);
22652278
break;
22662279
default:
22672280
if (!isset($wancfg['dhcp6usev4iface'])) {

0 commit comments

Comments
 (0)