From 0e54b9468d137100ba148ada15479b7b1625dd4f Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 15 Jan 2014 17:01:20 +0100 Subject: Move udhcpc stuff to its own module. Was spread across systemd and rootfs-stage32 --- .../data/opt/openslx/scripts/systemd-udhcpc++ | 11 -- .../data/opt/openslx/scripts/udhcpc-openslx | 190 --------------------- 2 files changed, 201 deletions(-) delete mode 100755 remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-udhcpc++ delete mode 100755 remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/udhcpc-openslx (limited to 'remote/rootfs/rootfs-stage32/data') diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-udhcpc++ b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-udhcpc++ deleted file mode 100755 index f3de82df..00000000 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-udhcpc++ +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -NET_IF="$1" -NET_IP="$(ip addr show dev "${NET_IF}" | grep "inet " | awk -F " " '{print $2}' | awk -F "/" '{print $1}')" - -UDHCPC_OPTS="" -[ ! -z "$NET_IP" ] && UDHCPC_OPTS=" -r $NET_IP" -echo "udhcp++: running on $NET_IF with additional params $UDHCPC_OPTS" >> "/tmp/udhcpclog" -mkdir -p /run/udhcpc || echo "Could not create '/run/udhcpc'." -/opt/openslx/sbin/udhcpc $UDHCPC_OPTS -O domain -O nissrv -O nisdomain -O wpad -t 8 -s /opt/openslx/scripts/udhcpc-openslx -i "$NET_IF" -p "/run/udhcpc/udhcpc.$NET_IF.pid" || \ - slxlog "udhcpc" "Could not run 'udhcpc${UDHCPC_OPTS}' on ${NET_IF}." diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/udhcpc-openslx b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/udhcpc-openslx deleted file mode 100755 index b6ea93c4..00000000 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/udhcpc-openslx +++ /dev/null @@ -1,190 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# -# Copyright (c) 2011 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# -# Mini-Linux Toolkit -# -# ----------------------------------------------------------------------------- - -. /opt/openslx/config - -RESOLV_CONF="/etc/resolv.conf" -THISFILE="/run/udhcpc/${interface}.resolv" - -echo "$interface [$1] $ip" >> "/tmp/udhcpclog" - -rebuild_resolv_conf () { - # Maybe make this smarter some time, if anyone is using client's that are on multiple networks at once etc... - # This is a little braindead but should work most of the time - sort -u /run/udhcpc/*.resolv > "$RESOLV_CONF" -} - -escape_search() { - echo "$@" | sed -e 's/[]\/()$*.^|[]/\\&/g' -} - -escape_replace() { - echo "$@" | sed -e 's/[\/&]/\\&/g' -} - -case "$1" in - bound|renew) - ip addr add "$ip/$(ipcalc -s -p $ip $subnet|sed s/.*=//)" dev "$interface" - if [ -n "$router" ]; then - ip route add default via "$router" - fi - - # Update resolver configuration file - CONF="" - if [ -n "$domain" ]; then - printf -v CONF "domain $domain\nsearch $domain\n" - elif [ -n "$SLX_NET_DOMAIN" ]; then - printf -v CONF "domain $SLX_NET_DOMAIN\nsearch $SLX_NET_DOMAIN\n" - fi - for i in $dns; do - echo "$0: Adding DNS $i" - printf -v CONF "${CONF}nameserver $i\n" - done - - if [ -x /sbin/resolvconf ] && [ -L /etc/resolv.conf ] && [ -d /etc/resolvconf/update.d ]; then - # Automatic handling :-) - resolvconf --create-runtime-directories - resolvconf --enable-updates - echo -n "$CONF" | resolvconf -a "${interface}.udhcpc" - else - # Manual handling required :-( - mkdir -p "/run/udhcpc" - echo -n "$CONF" | sed 's# 132\.200\.# 132.230.#g' > "$THISFILE" # HACK for Pharmazie-Pool, as DHCP gives wrong DNS information. Remove when DHCP guys fixed it... - rebuild_resolv_conf - fi - - # Things that should only happen for the main interface that was used for booting - if [ "$interface" == "br0" ]; then - # Update IP - sed -i "s/^\(SLX_PXE_CLIENT_IP=\).*$/\1'$ip'/" /opt/openslx/config - - # Only if network is not ready yet - if [ ! -e "/run/udhcpc/network-ready" ]; then - # Update hostname - dns_host=$(rdns "$ip") - if [ -z "$dns_host" ]; then - # fallback to what the dhcp told us - dns_host="$hostname" - fi - # Avoid empty hostnames - [ -z "$dns_host" ] && dns_host="slx-client" - echo "$dns_host" > "/proc/sys/kernel/hostname" - echo "$dns_host" > "/etc/hostname" - if grep '^SLX_HOSTNAME=' /opt/openslx/config 2>/dev/null; then - sed -i "s/^\(SLX_HOSTNAME=\).*$/\1'$dns_host'/" /opt/openslx/config - else - echo "# Config written by openslx-dhcp-script (1)" >> /opt/openslx/config - echo "SLX_HOSTNAME='$dns_host'" >> /opt/openslx/config - fi - - # if domain is given from dhcp, save it to openslx config for later use in VMs - if [ -n "$domain" ]; then - # check if SLX_NET_DOMAIN is in the config at all - if grep '^SLX_NET_DOMAIN=' /opt/openslx/config 2>/dev/null; then - sed -i "s/^\(SLX_NET_DOMAIN=\).*$/\1'$domain'/" /opt/openslx/config - else - # not set, add it - echo "SLX_NET_DOMAIN='$domain'" >> /opt/openslx/config - fi - fi - # Update /etc/issue for proper spacing - /opt/openslx/scripts/openslx-create_issue - fi - fi - - # Hostname in /etc/hosts - touch /etc/hosts - if [ -n "$dns_host" ]; then - short="${dns_host%%.*}" - [ "x$short" = "x$dns_host" ] && short="" - sed -i -r "s/\s$(escape_search "$dns_host")(\s|$)/ /g" /etc/hosts - [ -n "$short" ] && sed -i -r "s/\s$(escape_search "$short")(\s|$)/ /g" /etc/hosts - if grep -q -E "^$ip\s" /etc/hosts; then - sed -i "s/^$(escape_search "$ip")\s/$(escape_replace "$ip $dns_host $short ")/g" /etc/hosts - else - echo "$ip $dns_host $short" >> /etc/hosts - fi - fi - if [ -n "$hostname" -a "x$hostname" != "x$dns_host" ]; then - short="${hostname%%.*}" - [ "x$short" = "x$hostname" ] && short="" - sed -i -r "s/\s$(escape_search "$hostname")(\s|$)/ /g" /etc/hosts - [ -n "$short" ] && sed -i -r "s/\s$(escape_search "$short")(\s|$)/ /g" /etc/hosts - if grep -q -E "^$ip\s" /etc/hosts; then - sed -i "s/^$(escape_search "$ip")\s/$(escape_replace "$ip $hostname $short ")/g" /etc/hosts - else - echo "$ip $hostname $short" >> /etc/hosts - fi - fi - sed -i -r '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\s*$/d' /etc/hosts - - # We consider the network setup to be complete if an interface is being configured that - # has a default route and some dns servers set. - if [ -n "$router" ] && [ -n "$dns" ] && [ ! -e "/run/udhcpc/network-ready" ]; then - touch "/run/udhcpc/network-ready" - # Write to openslx-config - echo "# Config written by openslx-dhcp-script (2)" >> /opt/openslx/config - echo "SLX_DNS='$dns'" >> /opt/openslx/config - - # Mark network target as reached - systemctl start network.target - # Port redirection for printing - iptables -A INPUT -i br0 -p tcp --dport 515 -j DROP - iptables -A INPUT -i br0 -p tcp --dport 5515 -j DROP - iptables -t nat -A PREROUTING -p tcp --dport 515 -j REDIRECT --to-port 5515 - fi - - ;; - - deconfig) - if [ $(grep -c "nfs=" /proc/cmdline) == 0 ]; then - echo 1 > "/proc/sys/net/ipv4/conf/$interface/promote_secondaries" - clientip=${ip%%:*} - ip addr del "$clientip/$(ipcalc -s -p $clientip $subnet|sed s/.*=//)" dev "$interface" - else - echo "NFS is active, not removing old ip adress. warning: lease may expire after a while." - fi - - if [ -x /sbin/resolvconf ] && [ -L /etc/resolv.conf ] && [ -d /etc/resolvconf/update.d ]; then - # Automatic handling :-) - resolvconf -d "${interface}.udhcpc" - else - # Manual handling required :-( - rm -f "$THISFILE" - rebuild_resolv_conf - fi - - ;; - - leasefail) - echo "$0: Lease failed: $message" - - ;; - - nak) - echo "$0: Received a NAK: $message" - - ;; - - *) - echo "$0: Unknown udhcpc command: $1"; - exit 1; - - ;; -esac - -- cgit v1.2.3-55-g7522