dns_server_flush() {
: > ${DNS_SERVER_CONFIG_FILE}
+
+ # Re-generate resolv.conf
+ dns_generate_resolvconf
}
dns_server_parse_line() {
while read -r arg; do
case "${arg}" in
server=*)
- server=$(cli_get_val ${arg})
+ server=$(cli_get_val "${arg}")
;;
priority=*)
- priority=$(cli_get_val ${arg})
+ priority=$(cli_get_val "${arg}")
;;
esac
- done <<< "$(args $@)"
+ done <<< "$(args "$@")"
# The server address must be set.
isset server || return ${EXIT_ERROR}
return ${EXIT_OK}
}
-# Update resolv.conf(5) when initializing the network.
-init_register dns_generate_resolvconf
+# This function should be called after any configuration
+# changes have been made to the DNS servers.
+dns_server_update() {
+ # Regenerate /etc/resolv.conf
+ dns_generate_resolvconf
+
+ # Restart radvd which propagates IPv6 DNS servers
+ radvd_update
+}
dns_generate_resolvconf() {
local file=${RESOLV_CONF}
for zone in $(zones_get_all); do
for proto in ${IP_SUPPORTED_PROTOCOLS}; do
- domain=$(routing_db_get ${zone} ${proto} domain-name)
+ domain="$(db_get "${zone}/${proto}/domain-name")"
isset domain || continue
list_append search_domains "${domainname}"
done
done
+ # Add our own domain
+ list_append search_domains "$(config_domainname)"
+
# Sort out duplicate entries.
list_unique ${search_domains}
}
for zone in $(zones_get_all); do
for proto in ${IP_SUPPORTED_PROTOCOLS}; do
- priority=$(routing_db_get ${zone} ${proto} domain-name-servers-priority)
+ priority="$(db_get "${zone}/${proto}/domain-name-servers-priority")"
isset priority || priority="${DNS_SERVER_DYNAMIC_PRIORITY}"
- servers=$(routing_db_get ${zone} ${proto} domain-name-servers)
+ servers="$(db_get "${zone}/${proto}/domain-name-servers")"
for server in ${servers}; do
print "${priority} ${server}"
done