From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Sun, 20 Jun 2021 19:40:15 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lv1Qd-0004yl-Nr for lore@lore.pengutronix.de; Sun, 20 Jun 2021 19:40:15 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lv1Qd-00088A-8X; Sun, 20 Jun 2021 19:40:15 +0200 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lv1QO-00081Y-9A; Sun, 20 Jun 2021 19:40:00 +0200 Received: from rhi by dude.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1lv1QO-0001TD-0T; Sun, 20 Jun 2021 19:40:00 +0200 From: Roland Hieber To: ptxdist@pengutronix.de Date: Sun, 20 Jun 2021 19:39:54 +0200 Message-Id: <20210620173954.5608-1-rhi@pengutronix.de> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [ptxdist] [PATCH] busybox: update udhcp config files X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: Roland Hieber Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false Copy the following files from busybox 1.33: * examples/udhcp/simple.script * examples/udhcp/udhcpd.conf This teaches the DHCP client to use iproute2 tools instead of the outdated iputils. Signed-off-by: Roland Hieber --- projectroot/etc/udhcpc.script | 60 +++++++++++++++++----- projectroot/etc/udhcpd.conf | 93 ++++++++++++++++++++--------------- 2 files changed, 102 insertions(+), 51 deletions(-) diff --git a/projectroot/etc/udhcpc.script b/projectroot/etc/udhcpc.script index 130c37e0ce6a..f079ec8b849f 100644 --- a/projectroot/etc/udhcpc.script +++ b/projectroot/etc/udhcpc.script @@ -1,38 +1,74 @@ #!/bin/sh +# udhcpc script edited by Tim Riker -# $Id$ +RESOLV_CONF="/etc/resolv.conf" -[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 +[ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; } -RESOLV_CONF="/etc/resolv.conf" +NETMASK="" +if command -v ip >/dev/null; then + [ -n "$subnet" ] && NETMASK="/$subnet" +else + [ -n "$subnet" ] && NETMASK="netmask $subnet" +fi +BROADCAST="broadcast +" [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" -[ -n "$subnet" ] && NETMASK="netmask $subnet" case "$1" in deconfig) - /sbin/ifconfig $interface 0.0.0.0 + echo "Clearing IP addresses on $interface, upping it" + if command -v ip >/dev/null; then + ip -4 addr flush dev $interface + ip link set dev $interface up + else + ifconfig $interface 0.0.0.0 + fi ;; renew|bound) - /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + echo "Setting IP address $ip on $interface" + if command -v ip >/dev/null; then + ip addr add $ip$NETMASK $BROADCAST dev $interface + else + ifconfig $interface $ip $NETMASK $BROADCAST + fi if [ -n "$router" ] ; then - echo "deleting routers" + echo "Deleting routers" while route del default gw 0.0.0.0 dev $interface ; do : done + metric=0 for i in $router ; do - route add default gw $i dev $interface + echo "Adding router $i" + if [ "$subnet" = "255.255.255.255" ]; then + # special case for /32 subnets: + # /32 instructs kernel to always use routing for all outgoing packets + # (they can never be sent to local subnet - there is no local subnet for /32). + # Used in datacenters, avoids the need for private ip-addresses between two hops. + ip route add $i dev $interface + fi + route add default gw $i dev $interface metric $((metric++)) done fi - echo -n > $RESOLV_CONF - [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF + # If the file is a symlink somewhere (like /etc/resolv.conf + # pointing to /run/resolv.conf), make sure things work. + if test -L "$RESOLV_CONF"; then + # If it's a dangling symlink, try to create the target. + test -e "$RESOLV_CONF" || touch "$RESOLV_CONF" + fi + realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF") + echo "Recreating $realconf" + tmpfile="$realconf-$$" + > "$tmpfile" + [ -n "$domain" ] && echo "search $domain" >> "$tmpfile" for i in $dns ; do - echo adding dns $i - echo nameserver $i >> $RESOLV_CONF + echo " Adding DNS server $i" + echo "nameserver $i" >> "$tmpfile" done + mv "$tmpfile" "$realconf" ;; esac diff --git a/projectroot/etc/udhcpd.conf b/projectroot/etc/udhcpd.conf index eca44c0ab41e..6eb10852e2e6 100644 --- a/projectroot/etc/udhcpd.conf +++ b/projectroot/etc/udhcpd.conf @@ -44,7 +44,7 @@ interface eth0 #notify_file # default: no script #notify_file dumpleases # useful for debugging -# The following are bootp specific options +# The following are BOOTP specific options # next server to use in bootstrap #siaddr 192.168.0.22 # default: 0.0.0.0 (none) # tftp server name @@ -52,9 +52,14 @@ interface eth0 # tftp file to download (e.g. kernel image) #boot_file /var/nfs_root # default: none +# NOTE: "boot_file FILE" and "opt bootfile FILE" are conceptually the same, +# but "boot_file" goes into BOOTP-defined fixed-size field in the packet, +# whereas "opt bootfile" goes into DHCP option 0x43. +# Same for "sname HOST" and "opt tftp HOST". + # Static leases map #static_lease 00:60:08:11:CE:4E 192.168.0.54 -#static_lease 00:60:08:11:CE:3E 192.168.0.44 +#static_lease 00:60:08:11:CE:3E 192.168.0.44 optional_hostname # The remainder of options are DHCP options and can be specified with the # keyword 'opt' or 'option'. If an option can take multiple items, such @@ -70,46 +75,56 @@ option domain local option lease 864000 # default: 10 days option msstaticroutes 10.0.0.0/8 10.127.0.1 # single static route option staticroutes 10.0.0.0/8 10.127.0.1, 10.11.12.0/24 10.11.12.1 -# Arbitrary option in hex form: +# Arbitrary option in hex or string form: option 0x08 01020304 # option 8: "cookie server IP addr: 1.2.3.4" +option 14 "dumpfile" -# Currently supported options (for more info, see options.c): -#opt lease NUM -#opt subnet IP -#opt broadcast IP -#opt router IP_LIST -#opt ipttl NUM -#opt mtu NUM -#opt hostname STRING # client's hostname -#opt domain STRING # client's domain suffix -#opt search STRING_LIST # search domains -#opt nisdomain STRING -#opt timezone NUM # (localtime - UTC_time) in seconds. signed -#opt tftp STRING # tftp server name -#opt bootfile STRING # tftp file to download (e.g. kernel image) -#opt bootsize NUM # size of that file -#opt rootpath STRING # (NFS) path to mount as root fs -#opt wpad STRING -#opt serverid IP # default: server's IP -#opt message STRING # error message (udhcpd sends it on success too) -#opt vlanid NUM # 802.1P VLAN ID -#opt vlanpriority NUM # 802.1Q VLAN priority +# Currently supported options [hex option value] (for more info, see common.c): +#opt lease NUM # [0x33] +#opt subnet IP # [0x01] +#opt broadcast IP # [0x1c] +#opt router IP_LIST # [0x03] +#opt ipttl NUM # [0x17] +#opt mtu NUM # [0x1a] +#opt hostname STRING # [0x0c] client's hostname +#opt domain STRING # [0x0f] client's domain suffix +#opt search STRING_LIST # [0x77] search domains +#opt nisdomain STRING # [0x28] +#opt timezone NUM # [0x02] (localtime - UTC_time) in seconds. signed +#opt tzstr STRING # [0x64] RFC 4833. IEEE 1003.1 TZ string +#opt tzdbstr STRING # [0x65] RFC 4833. Reference to the TZ database string +#opt tftp STRING # [0x42] tftp server name +#opt bootfile STRING # [0x43] tftp file to download (e.g. kernel image) +#opt bootsize NUM # [0x0d] size of that file +#opt rootpath STRING # [0x11] (NFS) path to mount as root fs +#opt wpad STRING # [0xfc] Web Proxy Auto Discovery Protocol +#opt serverid IP # [0x36] default: server's IP +#opt message STRING # [0x38] error message (if set, udhcpd would send it on success too) +#opt vlanid NUM # [0x84] 802.1P VLAN ID +#opt vlanpriority NUM # [0x85] 802.1Q VLAN priority +#opt vendor STRING # [0x3c] client's vendor string, not intended to be sent by DHCP servers +# RFC 5071: PXELINUX Options +#opt 0xd0 F100747E # [0xd0] magic needed for other options to be recognized by clients +#opt pxeconffile STRING # [0xd1] +#opt pxepathprefix STRING # [0xd2] +#opt reboottime NUM # [0xd3] bootstrap timeout # Options specifying server(s) -#opt dns IP_LIST -#opt wins IP_LIST -#opt nissrv IP_LIST -#opt ntpsrv IP_LIST -#opt lprsrv IP_LIST -#opt swapsrv IP +#opt dns IP_LIST # [0x06] +#opt wins IP_LIST # [0x2c] +#opt nissrv IP_LIST # [0x29] +#opt ntpsrv IP_LIST # [0x2a] +#opt lprsrv IP_LIST # [0x09] +#opt swapsrv IP # [0x10] # Options specifying routes -#opt routes IP_PAIR_LIST -#opt staticroutes STATIC_ROUTES # RFC 3442 classless static route option -#opt msstaticroutes STATIC_ROUTES # same, using MS option number +#opt routes IP_PAIR_LIST # [0x21] +#opt staticroutes STATIC_ROUTES # [0x79] RFC 3442 classless static route option +#opt msstaticroutes STATIC_ROUTES # [0xf9] same, using MS option number # Obsolete options, no longer supported -#opt logsrv IP_LIST # 704/UDP log server (not syslog!) -#opt namesrv IP_LIST # IEN 116 name server, obsolete (August 1979!!!) -#opt cookiesrv IP_LIST # RFC 865 "quote of the day" server, rarely (never?) used -#opt timesrv IP_LIST # RFC 868 time server, rarely (never?) used +#opt logsrv IP_LIST # [0x07] 704/UDP log server (not syslog!) +#opt namesrv IP_LIST # [0x05] IEN 116 name server, obsolete (August 1979!!!) +#opt cookiesrv IP_LIST # [0x08] RFC 865 "quote of the day" server, rarely (never?) used +#opt timesrv IP_LIST # [0x04] RFC 868 time server, rarely (never?) used # TODO: in development -#opt userclass STRING # RFC 3004. set of LASCII strings. "I am a printer" etc -#opt sipserv STRING LIST # RFC 3361. flag byte, then: 0: domain names, 1: IP addrs +#opt userclass STRING # [0x4d] RFC 3004. set of LASCII strings. "I am a printer" etc +#opt sipsrv STRING LIST # [0x78] RFC 3361. flag byte, then: 0: domain names, 1: IP addrs +#opt ip6rd .... # [0xd4] IPv6 rapid deployment -- 2.29.2 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de