[Buildroot] [PATCH v4] busybox: Update udhcpc.script for stateful DHCPv6
Samuel Mendoza-Jonas
sam at mendozajonas.com
Tue Aug 21 03:20:06 UTC 2018
On Thu, 2018-07-26 at 11:39 +1000, Samuel Mendoza-Jonas wrote:
> udhcpc6 will call the default script with the address set in the "ipv6"
> variable. Set "ip" to this address if present.
>
> udhcpc6 implements "stateful" DHCPv6 for explicitly requesting an address
> and other configuration information. A major difference between DHCPv4
> and DHCPv6 is that DHCPv6 does *not* advertise a default route; this is
> determined by normal IPv6 autoconfiguration.
> Included is a change from Rob, which if handling a DHCPv6 address waits
> a moment for the IPv6 route to be configured; as above this doesn't come
> from DHCPv6 but rather the IPv6 Router Advertisement (RA) which happens
> independently from udhcpc6. The intent here is to try and ensure that
> the interface is route-able upon the script's completion as it would be
> if called from udhcpc.
>
> (wait for IPv6 route)
> From: Robert Lippert <rlippert at google.com>
> Signed-off-by: Samuel Mendoza-Jonas <sam at mendozajonas.com>
> ---
> v4: Expand description of stateful DHCPv6 in commit message
> v3: Point out 'stateful' DHCPv6 in commit, send to the correct list...
> v2: Avoid bashisms
Hi all, any more thoughts on this?
>
> package/busybox/udhcpc.script | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/package/busybox/udhcpc.script b/package/busybox/udhcpc.script
> index ad110d3a7f..65114b6cd0 100755
> --- a/package/busybox/udhcpc.script
> +++ b/package/busybox/udhcpc.script
> @@ -8,6 +8,16 @@ RESOLV_CONF="/etc/resolv.conf"
> [ -e $RESOLV_CONF ] || touch $RESOLV_CONF
> [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
> [ -n "$subnet" ] && NETMASK="netmask $subnet"
> +[ -n "$ipv6" ] && ip="$ipv6/128"
> +
> +wait_for_ipv6_default_route() {
> + attempts=10
> + while [ $attempts != 0 ] && [ -z "$(ip -6 route list | grep default)" ] ; do
> + sleep 1
> + attempts=$(($attempts-1))
> + done
> + [ $attempts = 0 ] && echo "failed to get default ipv6 route"
> +}
>
> case "$1" in
> deconfig)
> @@ -37,6 +47,10 @@ case "$1" in
> /usr/sbin/avahi-autoipd -k $interface
> fi
> /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
> + if [ -n "$ipv6" ] ; then
> + echo "waiting for default ipv6 route set"
> + wait_for_ipv6_default_route
> + fi
>
> if [ -n "$router" ] ; then
> echo "deleting routers"
More information about the buildroot
mailing list