From: Roy Marples Date: Tue, 2 Jul 2013 14:02:17 +0000 (+0000) Subject: By default we should not set a fully qualified hostname. X-Git-Tag: v6.0.3~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b0b780b166af4a3557160c4ae3aa61e9cebe65ca;p=thirdparty%2Fdhcpcd.git By default we should not set a fully qualified hostname. --- diff --git a/dhcpcd-hooks/30-hostname b/dhcpcd-hooks/30-hostname index ede7503b..8bbc5d62 100644 --- a/dhcpcd-hooks/30-hostname +++ b/dhcpcd-hooks/30-hostname @@ -1,5 +1,8 @@ # Set the hostname from DHCP data if required +# Generally we should not set the system hostname to be fully qualified +: ${hostname_fqdn:=false} + # Some systems don't have hostname(1) _hostname() { @@ -38,24 +41,47 @@ _hostname() need_hostname() { - local hostname="" + local hostname hfqdn case "$force_hostname" in - [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) ;; - *) hostname="$(_hostname)";; + [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) return 0;; esac + + hostname="$(_hostname)" case "$hostname" in - ""|"(none)"|localhost|localhost.localdomain) - [ -n "$new_host_name" -o -n "$new_fqdn_name" ];; - "$old_host_name"|"$old_fqdn_name") - true;; - *) - false;; + ""|"(none)"|localhost|localhost.localdomain) return 0;; esac + + case "$hostname_fqdn" in + [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) hfqdn=true;; + *) hfqdn=false;; + esac + + if [ -n "$old_fqdn_name" ]; then + if ${hfqdn}; then + [ "$hostname" = "$old_fqdn_name" ] + else + [ "$hostname" = "${old_fqdn_name%%.*}" ] + fi + elif [ -n "$old_host_name" ]; then + if ${hfqdn}; then + if [ -n "$old_domain_name" -a \ + "$old_host_name" = "${old_host_name#*.}" ] + then + [ "$hostname" = \ + "$old_host_name.$old_domain_name" ] + else + [ "$hostname" = "$old_host_name" ] + fi + else + [ "$hostname" = "${old_host_name%%.*}" ] + fi + fi } try_hostname() { + if valid_domainname "$1"; then _hostname "$1" else @@ -65,20 +91,32 @@ try_hostname() set_hostname() { + local hfqdn need_hostname || return + case "$hostname_fqdn" in + [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|1) hfqdn=true;; + *) hfqdn=false;; + esac + if [ -n "$new_fqdn_name" ]; then - try_hostname "$new_fqdn_name" + if ${hfqdn}; then + try_hostname "$new_fqdn_name" + else + try_hostname "${new_fqdn_name%%.*}" + fi elif [ -n "$new_host_name" ]; then - # Could be non RFC conformant domain in the - # hostname field - if [ -n "$new_domain_name" -a \ - "$new_host_name" = "${new_host_name#*.}" ] - then - try_hostname "$new_host_name.$new_domain_name" + if ${hfqdn}; then + if [ -n "$new_domain_name" -a \ + "$new_host_name" = "${new_host_name#*.}" ] + then + try_hostname "$new_host_name.$new_domain_name" + else + try_hostname "$new_host_name" + fi else - try_hostname "$new_host_name" + try_hostname "${new_host_name%%.*}" fi fi }