diff options
-rw-r--r-- | etc/inc/system.inc | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/etc/inc/system.inc b/etc/inc/system.inc index 1993bc1..7d0d507 100644 --- a/etc/inc/system.inc +++ b/etc/inc/system.inc @@ -47,11 +47,12 @@ function activate_sysctls() { } function system_resolvconf_generate($dynupdate = false) { - global $config, $g; - if(isset($config['system']['developerspew'])) { - $mt = microtime(); - echo "system_resolvconf_generate() being called $mt\n"; - } + global $config, $g; + + if(isset($config['system']['developerspew'])) { + $mt = microtime(); + echo "system_resolvconf_generate() being called $mt\n"; + } $syscfg = $config['system']; @@ -66,47 +67,52 @@ function system_resolvconf_generate($dynupdate = false) { $havedns = false; if (isset($syscfg['dnsallowoverride'])) { - /* get dynamically assigned DNS servers (if any) */ - $ns = array_unique(get_nameservers()); - foreach($ns as $nameserver) { - if($nameserver) { - $resolvconf .= "nameserver $nameserver\n"; - $havedns = true; - } + /* get dynamically assigned DNS servers (if any) */ + $ns = array_unique(get_nameservers()); + foreach($ns as $nameserver) { + if($nameserver) { + $resolvconf .= "nameserver $nameserver\n"; + $havedns = true; } + } } if (!$havedns && is_array($syscfg['dnsserver'])) { - foreach ($syscfg['dnsserver'] as $ns) { - if ($ns) { - $resolvconf .= "nameserver $ns\n"; - $havedns = true; - } + foreach ($syscfg['dnsserver'] as $ns) { + if ($ns) { + $resolvconf .= "nameserver $ns\n"; + $havedns = true; } } + } fwrite($fd, $resolvconf); fclose($fd); if (!$g['booting']) { - /* restart dhcpd (nameservers may have changed) */ - if (!$dynupdate) - services_dhcpd_configure(); + /* restart dhcpd (nameservers may have changed) */ + if (!$dynupdate) + services_dhcpd_configure(); } - for($dnscounter=1; $dnscounter<5; $dnscounter++) { - /* setup static routes for dns servers */ - if($config['system']['dns{$dnscounter}gwint']) { - $if = $config['system']['dns{$dnscounter}gwint']; - if($if) { - $gw = $config['interfaces'][$if]['if']; + /* setup static routes for DNS servers. */ + for ($dnscounter=1; $dnscounter<5; $dnscounter++) { + /* setup static routes for dns servers */ + $dnsgw = "dns{$dnscounter}gwint"; + if (isset($config['system'][$dnsgw])) { + $interface = $config['system'][$dnsgw]; + if (($interface <> "") && ($interface <> "none")) { + $gatewayip = get_interface_gateway($interface); + if(is_ipaddr($gatewayip)) { + /* dns server array starts at 0 */ $dnscountermo = $dnscounter - 1; - exec("route delete {$syscfg['dnsserver'][$dnscountermo]}"); - exec("route add {$syscfg['dnsserver'][$dnscountermo]} -gw {$gw}"); + mwexec("route delete -host {$syscfg['dnsserver'][$dnscountermo]}"); + mwexec("route add -host {$syscfg['dnsserver'][$dnscountermo]} {$gatewayip}"); } } } - - return 0; + } + + return 0; } function get_nameservers() { @@ -1150,4 +1156,4 @@ function enable_watchdog() { } } -?>
\ No newline at end of file +?> |