From 10e77b6e08c07cb6f66fc8932a49a45edb3dd8c5 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 26 Nov 2019 16:31:05 +0100 Subject: [rootfs-stage31] Actually request hostname via DHCP... --- core/rootfs/rootfs-stage31/data/inc/setup_network | 2 +- core/rootfs/rootfs-stage31/data/inc/setup_network_retry | 4 ++-- core/rootfs/rootfs-stage31/data/inc/udhcpc-trigger | 10 ++++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/rootfs/rootfs-stage31/data/inc/setup_network b/core/rootfs/rootfs-stage31/data/inc/setup_network index 4f4c8a02..6b97fb18 100644 --- a/core/rootfs/rootfs-stage31/data/inc/setup_network +++ b/core/rootfs/rootfs-stage31/data/inc/setup_network @@ -114,7 +114,7 @@ echo "GATEWAY=$GATEWAY" >> /run/network.conf echo "BRIDGE=$BRIDGE" >> /run/network.conf echo "UID=$UID" >> /run/network.conf -udhcpc $PARAM -O ntpsrv -O domain -O search -t 5 -T 3 -A 4 -s "/inc/udhcpc-trigger" -f -n -q -i "$BRIDGE" +udhcpc $PARAM -O hostname -O ntpsrv -O domain -O search -t 5 -T 3 -A 4 -s "/inc/udhcpc-trigger" -f -n -q -i "$BRIDGE" URET=$? # if these were empty before, udhcpc might have filled them in [ -z "$CLIENTIP" ] && CLIENTIP=$(cat /run/firstip) diff --git a/core/rootfs/rootfs-stage31/data/inc/setup_network_retry b/core/rootfs/rootfs-stage31/data/inc/setup_network_retry index 76923703..c1fff39d 100644 --- a/core/rootfs/rootfs-stage31/data/inc/setup_network_retry +++ b/core/rootfs/rootfs-stage31/data/inc/setup_network_retry @@ -33,8 +33,8 @@ for i in 1 2 3 4 5 6 7 8; do wait_for_iface "$BRIDGE" 10 usleep 100000 - udhcpc $PARAM -O ntpsrv -O domain -O search -t "$(( 2 + i / 2 ))" -T "$(( 4 + i ))" -s "/inc/udhcpc-trigger" -f -n -q -i "$BRIDGE" \ - || udhcpc $PARAM -O ntpsrv -O domain -O search -t "$(( 2 + i / 2 ))" -T "$(( 4 + i ))" -s "/inc/udhcpc-trigger" -f -n -q -i "$BRIDGE" + udhcpc $PARAM -O hostname -O ntpsrv -O domain -O search -t "$(( 2 + i / 2 ))" -T "$(( 4 + i ))" -s "/inc/udhcpc-trigger" -f -n -q -i "$BRIDGE" \ + || udhcpc $PARAM -O hostname -O ntpsrv -O domain -O search -t "$(( 2 + i / 2 ))" -T "$(( 4 + i ))" -s "/inc/udhcpc-trigger" -f -n -q -i "$BRIDGE" RET="$?" if [ "$RET" -eq 0 ]; then diff --git a/core/rootfs/rootfs-stage31/data/inc/udhcpc-trigger b/core/rootfs/rootfs-stage31/data/inc/udhcpc-trigger index 15fb59bf..795dd8a0 100755 --- a/core/rootfs/rootfs-stage31/data/inc/udhcpc-trigger +++ b/core/rootfs/rootfs-stage31/data/inc/udhcpc-trigger @@ -72,6 +72,8 @@ if [ -n "$domain" ] && [ -n "$search" ]; then elif [ -n "$domain" ]; then search="$domain" fi +# Sanitize: domain must not be list +domain="${domain%% *}" # Write out if [ -n "$domain" ]; then echo "domain $domain" >> "/etc/resolv.conf" @@ -93,10 +95,14 @@ if [ -z "$hostname" ]; then [ -z "$fqdn" ] && fqdn=$(timeout -t 3 nslookup "$ip" | grep -E "^Address +[0-9]+: +$ip " | head -n 1 | awk '{print $4}') hostname="${fqdn%%.*}" elif [ -n "$domain" ]; then - fqdn="${hostname}.${domain%% *}" # in case domain is a list + fqdn="${hostname}.${domain}" +fi +# Fallback tp IP +if [ -z "$hostname" ]; then + hostname="noname-${ip//./-}" + fqdn="${hostname}.invalid" fi if [ -n "$hostname" ]; then - [ -z "$fqdn" ] && fqdn="$hostname" echo "..setting hostname $hostname (fqdn: $fqdn).." echo "$hostname" > "/proc/sys/kernel/hostname" echo "$hostname" > "/etc/hostname" -- cgit v1.2.3-55-g7522