From 7f89abe1aff942e151cb61a9f3c9a0baffa8ad42 Mon Sep 17 00:00:00 2001 From: Richard Alpe Date: Mon, 11 Sep 2023 16:02:15 +0200 Subject: [PATCH] udhcpc: add pristine copy of default.script Add a pristine version of default.script to our local board override. The reason for this commit is to track changes we do to it. Signed-off-by: Richard Alpe --- .../rootfs/usr/share/udhcpc/default.script | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100755 board/common/rootfs/usr/share/udhcpc/default.script diff --git a/board/common/rootfs/usr/share/udhcpc/default.script b/board/common/rootfs/usr/share/udhcpc/default.script new file mode 100755 index 00000000..74dc5532 --- /dev/null +++ b/board/common/rootfs/usr/share/udhcpc/default.script @@ -0,0 +1,122 @@ +#!/bin/sh + +# udhcpc script edited by Tim Riker + +[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 + +ACTION="$1" +RESOLV_CONF="/etc/resolv.conf" +[ -e $RESOLV_CONF ] || touch $RESOLV_CONF +[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" +[ -n "$subnet" ] && NETMASK="netmask $subnet" +# Handle stateful DHCPv6 like DHCPv4 +[ -n "$ipv6" ] && ip="$ipv6/128" + +if [ -z "${IF_WAIT_DELAY}" ]; then + IF_WAIT_DELAY=10 +fi + +wait_for_ipv6_default_route() { + printf "Waiting for IPv6 default route to appear" + while [ $IF_WAIT_DELAY -gt 0 ]; do + if ip -6 route list | grep -q default; then + printf "\n" + return + fi + sleep 1 + printf "." + : $((IF_WAIT_DELAY -= 1)) + done + printf " timeout!\n" +} + +case "$ACTION" in + deconfig) + /sbin/ifconfig $interface up + /sbin/ifconfig $interface 0.0.0.0 + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface + fi + ;; + + leasefail|nak) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -c $interface || /usr/sbin/avahi-autoipd -wD $interface --no-chroot + fi + ;; + + renew|bound) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface + fi + /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + if [ -n "$ipv6" ] ; then + wait_for_ipv6_default_route + fi + + # RFC3442: If the DHCP server returns both a Classless + # Static Routes option and a Router option, the DHCP + # client MUST ignore the Router option. + if [ -n "$staticroutes" ]; then + echo "deleting routers" + route -n | while read dest gw mask flags metric ref use iface; do + [ "$iface" != "$interface" -o "$gw" = "0.0.0.0" ] || \ + route del -net "$dest" netmask "$mask" gw "$gw" dev "$interface" + done + + # format: dest1/mask gw1 ... destn/mask gwn + set -- $staticroutes + while [ -n "$1" -a -n "$2" ]; do + route add -net "$1" gw "$2" dev "$interface" + shift 2 + done + elif [ -n "$router" ] ; then + echo "deleting routers" + while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do + : + done + + for i in $router ; do + route add default gw $i dev $interface + done + fi + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + # prefer rfc3397 domain search list (option 119) if available + if [ -n "$search" ]; then + search_list=$search + elif [ -n "$domain" ]; then + search_list=$domain + fi + + [ -n "$search_list" ] && + echo "search $search_list # $interface" >> $RESOLV_CONF + + for i in $dns ; do + echo adding dns $i + echo "nameserver $i # $interface" >> $RESOLV_CONF + done + ;; +esac + +HOOK_DIR="$0.d" +for hook in "${HOOK_DIR}/"*; do + [ -f "${hook}" -a -x "${hook}" ] || continue + "${hook}" "$ACTION" +done + +exit 0