summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2011-06-19 22:48:40 +0000
committerdougb <dougb@FreeBSD.org>2011-06-19 22:48:40 +0000
commit1175683ecd587ecd5f1441b4c502e5dfe57b58c5 (patch)
treeab2174cc686f252a993c1902bcb55fb97ee651c9
parentbe57e75b00c1ba88332a570e83564f6cae5dba45 (diff)
downloadFreeBSD-src-1175683ecd587ecd5f1441b4c502e5dfe57b58c5.zip
FreeBSD-src-1175683ecd587ecd5f1441b4c502e5dfe57b58c5.tar.gz
Add the netwait rc.d script. It waits for the specified period for the
network to become active. PR: conf/151063 Submitted by: Jeremy Chadwick <freebsd@jdc.parodius.com>
-rw-r--r--etc/defaults/rc.conf7
-rw-r--r--etc/rc.d/Makefile2
-rwxr-xr-xetc/rc.d/mountcritremote2
-rw-r--r--share/man/man5/rc.conf.558
4 files changed, 66 insertions, 3 deletions
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf
index 8dfd5e1..d467eaa 100644
--- a/etc/defaults/rc.conf
+++ b/etc/defaults/rc.conf
@@ -444,6 +444,13 @@ ubthidhci_enable="NO" # Switch an USB BT controller present on
#ubthidhci_addr="2" # Check usbconfig list to find the correct
# numbers for your system.
+### Network link/usability verification options
+netwait_enable="NO" # Enable rc.d/netwait (or NO)
+#netwait_ip="" # IP addresses to be pinged by netwait.
+netwait_timeout="60" # Total number of seconds to perform pings.
+#netwait_if="" # Interface name to watch link state on.
+netwait_if_timeout="30" # Total number of seconds to monitor link state.
+
### Miscellaneous network options: ###
icmp_bmcastecho="NO" # respond to broadcast ping packets
diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile
index ada10f8..65759df 100644
--- a/etc/rc.d/Makefile
+++ b/etc/rc.d/Makefile
@@ -22,7 +22,7 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKING SERVERS \
ldconfig local localpkg lockd lpd \
mixer motd mountcritlocal mountcritremote mountlate \
mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \
- named natd netif netoptions \
+ named natd netif netoptions netwait \
newsyslog nfsclient nfscbd nfsd \
nfsserver nfsuserd nisdomain nsswitch ntpd ntpdate \
othermta \
diff --git a/etc/rc.d/mountcritremote b/etc/rc.d/mountcritremote
index 91500e2..62e5079 100755
--- a/etc/rc.d/mountcritremote
+++ b/etc/rc.d/mountcritremote
@@ -4,7 +4,7 @@
#
# PROVIDE: mountcritremote
-# REQUIRE: NETWORKING FILESYSTEMS cleanvar ipsec
+# REQUIRE: NETWORKING FILESYSTEMS cleanvar ipsec netwait
# KEYWORD: nojail
. /etc/rc.subr
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index fddb4f5..d7d52c1 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 18, 2011
+.Dd June 19, 2011
.Dt RC.CONF 5
.Os
.Sh NAME
@@ -4293,6 +4293,61 @@ Bus address of the USB Bluetooth controller.
Check the output of
.Xr usbconfig 8
on your system to find this information.
+.It Va netwait_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+delays the start of network-reliant services until
+.Va netwait_if
+is up and ICMP packets to a destination defined in
+.Va netwait_ip
+are flowing.
+Link state is examined first, followed by
+.Dq Li pinging
+an IP address to verify network usability.
+If no destination can be reached or timeouts are exceeded,
+network services are started anyway with no guarantee that
+the network is usable.
+Use of this variable requires both
+.Va netwait_ip
+and
+.Va netwait_if
+to be set.
+.It Va netwait_ip
+.Pq Vt str
+Empty by default.
+This variable contains a space-delimited list of IP addresses to
+.Xr ping 8 .
+DNS hostnames should not be used as resolution is not guaranteed
+to be functional at this point.
+If multiple IP addresses are specified,
+each will be tried until one is successful or the list is exhausted.
+.It Va netwait_timeout
+.Pq Vt int
+Indicates the total number of seconds to perform a
+.Dq Li ping
+against each IP address in
+.Va netwait_ip ,
+at a rate of one ping per second.
+If any of the pings are successful,
+full network connectivity is considered reliable.
+The default is 60.
+.It Va netwait_if
+.Pq Vt str
+Empty by default.
+Defines the name of the network interface on which watch for link.
+.Xr ifconfig 8
+is used to monitor the interface, looking for
+.Dq Li status: no carrier .
+Once gone, the link is considered up.
+This can be a
+.Xr vlan 4
+interface if desired.
+.It Va netwait_if_timeout
+.Pq Vt int
+Defines the total number of seconds to wait for link to become usable,
+polled at a 1-second interval.
+The default is 30.
.El
.Sh FILES
.Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact
@@ -4364,6 +4419,7 @@ on your system to find this information.
.Xr ntpdate 8 ,
.Xr pfctl 8 ,
.Xr pflogd 8 ,
+.Xr ping 8 ,
.Xr powerd 8 ,
.Xr quotacheck 8 ,
.Xr quotaon 8 ,
OpenPOWER on IntegriCloud