Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Oct 2011 11:20:12 +0200
From:      Paul Schenkeveld <freebsd@psconsult.nl>
To:        freebsd-stable@freebsd.org
Subject:   Re: ntpd couldn't resolve host name on system boot
Message-ID:  <20111025092012.GA41065@psconsult.nl>
In-Reply-To: <20111025010327.GA75437@icarus.home.lan>
References:  <4EA5EBB5.3090101@quip.cz> <20111024232750.GA74032@icarus.home.lan> <B26B1B7BC38B4479B103B78B2175234D@multiplay.co.uk> <20111025010327.GA75437@icarus.home.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Oct 24, 2011 at 06:03:27PM -0700, Jeremy Chadwick wrote:
> The one shortcoming of netwait is that it doesn't support waiting for
> multiple NICs.  Some people have dual-homed environments where they
> really would like to wait for both, say, em0 and em1, to come up and be
> functional before any more scripts are started.  I left that as a
> project for someone else, but it's something that should be added given
> its importance.

How would you like to see multiple interfaces implemented:

  - All interfaces must be up at the same time
  - Probe interfaces one by one, proceed to the next when an interface
    up or bail out when any interface stays down until the loop times
    out

Another shortcoming: ipv6 support...

The patch below adds ipv6.

One caveat, ping6 is used if a word in netwait_ip contains at least a
colon so hostnames in netwait_ip are always pinged using ipv4.

Paul Schenkeveld

--- src/etc/rc.d/netwait.orig	2011-06-22 08:27:32.000000000 +0200
+++ src/etc/rc.d/netwait	2011-10-25 11:09:16.000000000 +0200
@@ -21,7 +21,7 @@
 
 netwait_start()
 {
-	local ip rc count output link
+	local ip rc count output link ping_cmd
 
 	if [ -z "${netwait_ip}" ]; then
 		err 1 "You must define one or more IP addresses in netwait_ip"
@@ -72,7 +72,13 @@
 
 		count=1
 		while [ ${count} -le ${netwait_timeout} ]; do
-			/sbin/ping -t 1 -c 1 -o ${ip} >/dev/null 2>&1
+			case ${ip} in
+			    *:*)
+				ping_cmd="/sbin/ping6 -c 1 -o";;
+			    *)
+				ping_cmd="/sbin/ping -t 1 -c 1 -o";;
+			esac
+			${ping_cmd} ${ip} >/dev/null 2>&1
 			rc=$?
 
 			if [ $rc -eq 0 ]; then



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111025092012.GA41065>