summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/slx-network/scripts/udhcpc-trigger.stage3
diff options
context:
space:
mode:
Diffstat (limited to 'builder/modules.d/slx-network/scripts/udhcpc-trigger.stage3')
-rwxr-xr-xbuilder/modules.d/slx-network/scripts/udhcpc-trigger.stage3140
1 files changed, 0 insertions, 140 deletions
diff --git a/builder/modules.d/slx-network/scripts/udhcpc-trigger.stage3 b/builder/modules.d/slx-network/scripts/udhcpc-trigger.stage3
deleted file mode 100755
index d54939a8..00000000
--- a/builder/modules.d/slx-network/scripts/udhcpc-trigger.stage3
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/bin/bash
-#
-# This script is triggered by udhcpc in stage3 and handle the
-# DHCP information given as parameters
-
-{
-# for debugging
-set -x
-NETWORK_CONF="/run/openslx/network.conf"
-. "$NETWORK_CONF"
-
-MAIN_NETIF="$SLX_PXE_NETIF"
-[ -n "$SLX_VLAN_ID" ] && MAIN_NETIF="${SLX_PXE_NETIF}.${SLX_VLAN_ID}"
-[ -n "$SLX_BRIDGE" ] && MAIN_NETIF="$SLX_BRIDGE"
-readonly MAIN_NETIF
-
-if [ "x$1" != "xbound" -a "x$1" != "xrenew" ] \
- || [ "x$interface" != "x${MAIN_NETIF}" ] \
- || [ -z "$ip" ]; then
- exit 0
-fi
-
-##
-## CORE NETWORK CONFIGURATION
-##
-## > IP, subnet, route
-
-# If we already got an IP from KCL, see if it differs, and remove first if so
-# We just try to prevent everything from breaking if the DHCP server doesn't
-# objey the renew request by the client and hands out a new address
-if [ -n "$SLX_PXE_CLIENT_IP" ]; then
- #...some address is already configured...
- if [ "x${SLX_PXE_CLIENT_IP}" != "x${ip}" ]; then
- #...it's a different one, reconfigure...
- echo "..reconfiguring ${SLX_PXE_CLIENT_IP} to ${ip}.."
- # remove default route and let it be added again below, as it might get lost when changing the primary address on the interface
- ip route del default 2>/dev/null
- ip addr del "$SLX_PXE_CLIENT_IP" dev "${interface}" 2>/dev/null
- ip addr add "${ip}/$(ipcalc -s -p "${ip}" "${subnet}" | sed s/.*=//)" dev "${interface}"
- fi
-else
- #...no address configured yet, just add...
- echo "..adding ${ip}.."
- ip addr add "${ip}/$(ipcalc -s -p "${ip}" "${subnet}" | sed s/.*=//)" dev "${interface}"
-fi
-echo "SLX_DHCP_CLIENT_IP='$ip'" >> "$NETWORK_CONF"
-
-# Same procedure for default gateway
-if [ -n "${router}" ]; then
- if [ -s "$SLX_PXE_GATEWAY" ]; then
- if [ "x${SLX_PXE_GATEWAY}" != "x${router}" ]; then
- echo "..reconfiguring default gw from ${SLX_PXE_GATEWAY} to ${router}.."
- ip route replace default via "$router"
- fi
- else
- ip route add default via "$router"
- fi
- echo "SLX_DHCP_GATEWAY='$router'" >> "$NETWORK_CONF"
-fi
-
-##
-## ADDITIONAL NETWORK CONFIGURATION
-##
-## > DNS, domain, hostname
-
-rm -f -- "/etc/resolv.conf"
-
-# DNS/domain?
-if [ -n "$dns" ]; then
- echo "..got DNS.."
- echo "# From DHCP in stage 3.1" >> "$NETWORK_CONF"
- echo "SLX_DNS='$dns'" >> "$NETWORK_CONF"
-fi
-for srv in $dns; do
- echo "nameserver $srv" >> "/etc/resolv.conf"
-done
-if [ -z "$domain" ]; then
- # try to get domain via reverse lookup if empty
- echo "..trying to get domain via DNS, as DHCP didn't supply one.."
- fqdn=$(timeout -t 3 nslookup "$ip" | grep -E "^Address +[0-9]+: +$ip " | head -n 1 | awk '{print $4}')
- domain="${fqdn#*.}"
-fi
-# Add domain to list of search domains if not in there yet
-if [ -n "$domain" ] && [ -n "$search" ]; then
- FOUND=no
- for sd in $search; do
- [ "x$sd" = "x$domain" ] && FOUND=yes
- done
- [ "$FOUND" = "no" ] && search="$domain $search"
-elif [ -n "$domain" ]; then
- search="$domain"
-fi
-# Write out
-if [ -n "$domain" ]; then
- echo "domain $domain" >> "/etc/resolv.conf"
- echo "SLX_NET_DOMAIN='$domain'" >> "/run/openslx/network.conf"
-fi
-if [ -n "$search" ]; then
- echo "search $search" >> "/etc/resolv.conf"
- echo "SLX_NET_SEARCH='$search'" >> "/run/openslx/network.conf"
-fi
-
-if [ -n "$ntpsrv" ]; then
- echo "SLX_DHCP_NTP='$ntpsrv'" >> "/run/openslx/network.conf"
-fi
-
-# Hostname
-# Ignore hostname/fqdn it if hostname was forced per KCL.
-if [ -n "$SLX_PXE_HOSTNAME" ]; then
- echo "Hostname set via KCL, ignoring DHCP hostname: '$hostname'"
- hostname="$SLX_PXE_HOSTNAME"
-else
- if [ -z "$hostname" ]; then
- # as with domain, if there's no hostname, try to get via DNS
- echo "..trying to get hostname via DNS, as DHCP didn't supply one.."
- [ -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
- fi
-fi
-
-if [ -z "$hostname" ]; then
- # no fallback hostname from DNS, use IP address
- hostname="${ip//./-}"
-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"
- echo "127.0.0.1 localhost" > "/etc/hosts"
- echo "127.0.1.1 $fqdn $hostname" >> "/etc/hosts"
- echo "SLX_HOSTNAME='$hostname'" >> "/run/openslx/network.conf"
-fi
-
-touch /.network
-set +x
-} &>> "/run/openslx/initramfs-udhcpc.log.$$"