HOSTNAME=${HOSTNAME%% *}
if [ -z "$HOSTNAME" ]; then
    HOSTNAME_BASE=${HOSTNAME_BASE:-ltsp}
    case "$HOSTNAME_EXTRA" in
        mac)
            HOSTNAME_EXTRA=$(ip link show $DEVICE | awk '/ether/{print $2}' | tr ':' '-')
            ;;
        ip|"")
            HOSTNAME_EXTRA=$(ip -oneline -family inet address show dev $DEVICE |
                sed 's/.* \([0-9.]*\)\/\([0-9]*\) .*/\1.\2/' |
                awk -F "." '{ print (2^24*$1+2^16*$2+2^8*$3+$4)%(2^(32-$5)) }')
            ;;
    esac
    HOSTNAME="$HOSTNAME_BASE$HOSTNAME_EXTRA"
fi

if [ -z "$SEARCH_DOMAIN" ] && [ -n "$DNSDOMAIN" ]; then
    SEARCH_DOMAIN="$DNSDOMAIN"
fi

if [ -n "$SEARCH_DOMAIN" ]; then
    HOSTNAME_DOMAIN="${HOSTNAME}.${SEARCH_DOMAIN}"
fi

hostname "$HOSTNAME"
echo "$HOSTNAME" > /etc/hostname

cat <<EOF > /etc/hosts
127.0.0.1 localhost
127.0.0.2 $HOSTNAME_DOMAIN $HOSTNAME
$SERVER ${SERVER_NAME:-"server"}

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF

if [ -f /etc/hosts.ltsp ]; then
    cat /etc/hosts.ltsp >> /etc/hosts
fi
env | sort -V | sed -n 's/^HOSTS_[^=]*=//p' >> /etc/hosts
