Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v4] busybox: Update udhcpc.script for stateful DHCPv6
@ 2018-07-26  1:39 Samuel Mendoza-Jonas
  2018-08-21  3:20 ` Samuel Mendoza-Jonas
  2019-04-07 14:06 ` Thomas Petazzoni
  0 siblings, 2 replies; 6+ messages in thread
From: Samuel Mendoza-Jonas @ 2018-07-26  1:39 UTC (permalink / raw)
  To: buildroot

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@google.com>
Signed-off-by: Samuel Mendoza-Jonas <sam@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

 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"
-- 
2.18.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-04-09  0:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-26  1:39 [Buildroot] [PATCH v4] busybox: Update udhcpc.script for stateful DHCPv6 Samuel Mendoza-Jonas
2018-08-21  3:20 ` Samuel Mendoza-Jonas
2019-02-18 23:15   ` Samuel Mendoza-Jonas
2019-02-26 14:21     ` Matthew Weber
2019-04-07 14:06 ` Thomas Petazzoni
2019-04-09  0:51   ` Samuel Mendoza-Jonas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox