Mercurial > hg > dhcpcd
changeset 2066:aac040a20586 draft
By default we should not set a fully qualified hostname.
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Tue, 02 Jul 2013 14:02:17 +0000 |
| parents | 8cd9f993cbbd |
| children | 71c2f78a9b33 |
| files | dhcpcd-hooks/30-hostname |
| diffstat | 1 files changed, 55 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/dhcpcd-hooks/30-hostname Tue Jul 02 13:45:27 2013 +0000 +++ b/dhcpcd-hooks/30-hostname Tue Jul 02 14:02:17 2013 +0000 @@ -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 @@ 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 @@ 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 }
