diff options
author | PiBa-NL <pba_2k3@yahoo.com> | 2015-11-26 00:14:26 +0100 |
---|---|---|
committer | PiBa-NL <pba_2k3@yahoo.com> | 2015-11-26 00:14:26 +0100 |
commit | de34f1fc12f29db0348f8ff9b1bc8300d9fb74d2 (patch) | |
tree | 77bc38448d8145cf0d76646c3606596d27e3ef39 /src/etc/inc/system.inc | |
parent | c64e401c85f3ef081a8c6b9e4a8d0a4b4a9835f7 (diff) | |
download | pfsense-de34f1fc12f29db0348f8ff9b1bc8300d9fb74d2.zip pfsense-de34f1fc12f29db0348f8ff9b1bc8300d9fb74d2.tar.gz |
Allow gateway outside interface subnet. Fixes #972, #1847, and was checked (on 2.2.5) with that provider to work properly for the IPv4 part. In 2.3 test machine IPv6 also seems to insert the proper routes.
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) { ; |