changeset 2540:1264779ee9c0 draft

If just given a domain and no search list, make the search list the domain. This allows correct formatting when building resolv.conf.
author Roy Marples <roy@marples.name>
date Wed, 18 Jun 2014 21:12:39 +0000
parents 2fcd644eb89a
children 98b581c3152b
files dhcpcd-hooks/20-resolv.conf
diffstat 1 files changed, 12 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/dhcpcd-hooks/20-resolv.conf	Mon Jun 16 09:57:55 2014 +0000
+++ b/dhcpcd-hooks/20-resolv.conf	Wed Jun 18 21:12:39 2014 +0000
@@ -70,7 +70,7 @@
 
 add_resolv_conf()
 {
-	local x= conf="$signature$NL" i=${ra_count:-0} ra=
+	local x= conf="$signature$NL" i=${ra_count:-0} ra= warn=true
 
 	while [ $i -ne 0 ]; do
 		eval ra=\$ra${i}_rdnss
@@ -101,24 +101,23 @@
 
 	if [ -n "$new_domain_name" ]; then
 		set -- $new_domain_name
-		new_domain_name="$1"
-		if valid_domainname "$new_domain_name"; then
-			conf="${conf}domain $new_domain_name$NL"
+		if valid_domainname "$1"; then
+			conf="${conf}domain $1$NL"
 		else
-			syslog err "Invalid domain name: $new_domain_name"
+			syslog err "Invalid domain name: $1"
 		fi
-		# Support RFC violating search in domain
-		if [ -z "$new_domain_search" -a -n "$2" ]; then
-			new_domain_search="$*"
+		# If there is no search this, make this one
+		if [ -z "$new_domain_search" ]; then
+			new_domain_search="$new_domain_name"
+			[ "$new_domain_name" = "$1" ] && warn=true
 		fi
 	fi
-	if [ -n "$new_domain_search" -a \
-	    "$new_domain_search" != "$new_domain_name" ]
-	then
+	if [ -n "$new_domain_search" ]; then
 		if valid_domainname_list $new_domain_search; then
 			conf="${conf}search $new_domain_search$NL"
-		else
-			syslog err "Invalid domain name in list: $new_domain_search"
+		elif ! $warn; then
+			syslog err "Invalid domain name in list:" \
+			    "$new_domain_search"
 		fi
 	fi
 	for x in ${new_domain_name_servers}; do