diff options
Diffstat (limited to 'etc/inc/system.inc')
-rw-r--r-- | etc/inc/system.inc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/etc/inc/system.inc b/etc/inc/system.inc index d8c6042..964004d 100644 --- a/etc/inc/system.inc +++ b/etc/inc/system.inc @@ -99,6 +99,13 @@ function system_resolvconf_generate($dynupdate = false) { if (isset($syscfg['dnsallowoverride'])) { /* get dynamically assigned DNS servers (if any) */ + $ns = array_unique(get_searchdomains()); + foreach($ns as $searchserver) { + if($searchserver) { + $resolvconf .= "search {$searchserver}\n"; + $havedns = true; + } + } $ns = array_unique(get_nameservers()); foreach($ns as $nameserver) { if($nameserver) { @@ -146,6 +153,23 @@ function system_resolvconf_generate($dynupdate = false) { return 0; } +function get_searchdomains() { + global $config, $g; + + $master_list = array(); + + // Read in dhclient nameservers + $search_list = split("\n", `/bin/cat /var/etc/searchdomain_* 2>/dev/null`); + if (is_array($search_lists)) { + foreach($search_lists as $dns) { + if(is_hostname($dns)) + $master_list[] = $dns; + } + } + + return $master_list; +} + function get_nameservers() { global $config, $g; $master_list = array(); |