]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/functions/functions.dns
Remove registration of functions called on init
[people/ms/network.git] / src / functions / functions.dns
index b3f42fd0e04609c8332187bf8cea3358db4b382f..4cd5cb4c04ffa5cf6a97a9baeb708de359260881 100644 (file)
@@ -187,6 +187,9 @@ dns_server_remove() {
 
 dns_server_flush() {
        : > ${DNS_SERVER_CONFIG_FILE}
+
+       # Re-generate resolv.conf
+       dns_generate_resolvconf
 }
 
 dns_server_parse_line() {
@@ -199,13 +202,13 @@ 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}
@@ -225,8 +228,15 @@ dns_server_parse_line() {
        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}
@@ -269,13 +279,16 @@ dns_get_search_domains() {
 
        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}
 }
@@ -285,10 +298,10 @@ dns_server_get_zone_name_servers() {
 
        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