# 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()
{
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
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
}