]> git.ipfire.org Git - people/stevee/network.git/blobdiff - src/functions/functions.dns
Merge branch 'master' of git://git.ipfire.org/network
[people/stevee/network.git] / src / functions / functions.dns
index 5f2e370fd1884c9dae9b1638cd246249ac7037d6..a54feecd12d93ccd40f0508cb4f29796a7d037c2 100644 (file)
@@ -45,7 +45,7 @@ DNS_SERVER_DYNAMIC_PRIORITY="10"
 # Path to the configuration file of the DNS resolver.
 RESOLV_CONF="/etc/resolv.conf"
 
-function dns_get_hostname() {
+dns_get_hostname() {
        local address=${1}
        assert isset address
 
@@ -56,25 +56,21 @@ function dns_get_hostname() {
        )
 }
 
-function dns_server_list() {
+dns_server_list() {
        [ -r "${DNS_SERVER_CONFIG_FILE}" ] || return ${EXIT_OK}
 
        local line
        local ${NETWORK_CONFIG_DNS_SERVER_PARAMS}
-
-       local format="%-20s %-8s"
-       print "${format}" "SERVER" "PRIORITY"
-
-       while read -r line; do
+       while read line; do
                dns_server_parse_line ${line} || continue
 
-               print "${format}" "${server}" "${priority}"
+               print "${server}"
        done < ${DNS_SERVER_CONFIG_FILE}
 
        return ${EXIT_OK}
 }
 
-function dns_server_list_sorted() {
+dns_server_list_sorted() {
        [ -r "${DNS_SERVER_CONFIG_FILE}" ] || return ${EXIT_OK}
 
        local servers=$(
@@ -108,7 +104,25 @@ function dns_server_list_sorted() {
        return ${EXIT_OK}
 }
 
-function dns_server_add() {
+dns_server_show() {
+       [ -r "${DNS_SERVER_CONFIG_FILE}" ] || return ${EXIT_OK}
+
+       local line
+       local ${NETWORK_CONFIG_DNS_SERVER_PARAMS}
+
+       local format="%-20s %-8s"
+       print "${format}" "SERVER" "PRIORITY"
+
+       while read -r line; do
+               dns_server_parse_line ${line} || continue
+
+               print "${format}" "${server}" "${priority}"
+       done < ${DNS_SERVER_CONFIG_FILE}
+
+       return ${EXIT_OK}
+}
+
+dns_server_add() {
        local server=${1}
        assert isset server
 
@@ -125,7 +139,7 @@ function dns_server_add() {
        return ${EXIT_OK}
 }
 
-function dns_server_exists() {
+dns_server_exists() {
        local entry=${1}
        assert isset entry
 
@@ -141,7 +155,7 @@ function dns_server_exists() {
        return ${EXIT_FALSE}
 }
 
-function dns_server_remove() {
+dns_server_remove() {
        local entry=${1}
        assert isset entry
 
@@ -171,11 +185,11 @@ function dns_server_remove() {
        return ${EXIT_OK}
 }
 
-function dns_server_flush() {
+dns_server_flush() {
        : > ${DNS_SERVER_CONFIG_FILE}
 }
 
-function dns_server_parse_line() {
+dns_server_parse_line() {
        local arg
 
        for arg in ${NETWORK_CONFIG_DNS_SERVER_PARAMS}; do
@@ -211,10 +225,20 @@ function dns_server_parse_line() {
        return ${EXIT_OK}
 }
 
+# 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
+}
+
 # Update resolv.conf(5) when initializing the network.
 init_register dns_generate_resolvconf
 
-function dns_generate_resolvconf() {
+dns_generate_resolvconf() {
        local file=${RESOLV_CONF}
 
        log INFO "Updating resolver configuration..."
@@ -246,7 +270,7 @@ function dns_generate_resolvconf() {
        done >> ${file}
 }
 
-function dns_get_search_domains() {
+dns_get_search_domains() {
        # Add search domains.
        local search_domains="$(unquote ${DNS_SEARCH_DOMAINS})"
 
@@ -255,26 +279,29 @@ function 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}
 }
 
-function dns_server_get_zone_name_servers() {
+dns_server_get_zone_name_servers() {
        local priority proto server servers zone
 
        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