diff options
Diffstat (limited to 'src/etc/inc/system.inc')
-rw-r--r-- | src/etc/inc/system.inc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/etc/inc/system.inc b/src/etc/inc/system.inc index 7b40de1..ce58b10 100644 --- a/src/etc/inc/system.inc +++ b/src/etc/inc/system.inc @@ -586,6 +586,24 @@ function system_routing_configure($interface = "") { } } + $gateways_arr = return_gateways_array(false, true); + foreach($gateways_arr as $gateway) { + // setup static interface routes for nonlocal gateways + if (isset($gateway["nonlocalgateway"])) { + $srgatewayip = $gateway['gateway']; + $srinterfacegw = $gateway['interface']; + if (is_ipaddr($srgatewayip) && !empty($srinterfacegw)) { + $inet = (!is_ipaddrv4($srgatewayip) ? "-inet6" : "-inet"); + $cmd = "/sbin/route change {$inet} " . escapeshellarg($srgatewayip) . " "; + mwexec($cmd . "-iface " . escapeshellarg($srinterfacegw)); + if (isset($config['system']['route-debug'])) { + $mt = microtime(); + log_error("ROUTING debug: $mt - $cmd -iface $srinterfacegw "); + } + } + } + } + if ($dont_add_route == false) { if (!empty($interface) && $interface != $interfacegw) { ; |