summaryrefslogtreecommitdiffstats
path: root/etc/rc.d
diff options
context:
space:
mode:
authormtm <mtm@FreeBSD.org>2003-04-18 17:51:54 +0000
committermtm <mtm@FreeBSD.org>2003-04-18 17:51:54 +0000
commit70cccaca8387a83c2d2dc478226f5764a07652c9 (patch)
tree015043790910e3724ed648425db7068d5e2c72a4 /etc/rc.d
parent05b93dc7b7b61e5c9e7357375f36285a82061e27 (diff)
downloadFreeBSD-src-70cccaca8387a83c2d2dc478226f5764a07652c9.zip
FreeBSD-src-70cccaca8387a83c2d2dc478226f5764a07652c9.tar.gz
Break out and rewrite the network setup scripts.
o /etc/network.subr contains common subroutines used for seting up network interfaces o rc.d/hostname sets the hostname if not already set o rc.d/nisdomain sets the nis domain *after* rpcbind but before the yp* daemons. This fixes issues with temporary hangs when looking up informaion in nis before it's ready. o rc.d/netif brings network interfaces (minus dhcp) up. o rc.d/network1 has been disabled and will be retired before RELENG_5. It will be replaced by rc.d/netif Approved by: markm (mentor)
Diffstat (limited to 'etc/rc.d')
-rw-r--r--etc/rc.d/hostname51
-rw-r--r--etc/rc.d/netif89
-rw-r--r--etc/rc.d/network12
-rw-r--r--etc/rc.d/nisdomain119
4 files changed, 260 insertions, 1 deletions
diff --git a/etc/rc.d/hostname b/etc/rc.d/hostname
new file mode 100644
index 0000000..3a54a2d
--- /dev/null
+++ b/etc/rc.d/hostname
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# Copyright (c) 2003 The FreeBSD Project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# PROVIDE: hostname
+# REQUIRE: mountcritlocal sysctl tty
+# BEFORE: netif
+# KEYWORD: FreeBSD
+
+. /etc/rc.subr
+
+name="hostname"
+start_cmd="hostname_start"
+stop_cmd=":"
+
+hostname_start()
+{
+ # Set the host name if it is not already set
+ #
+ if [ -z "`hostname -s`" ]; then
+ hostname ${hostname}
+ echo "Setting hostname: `hostname`."
+ fi
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/etc/rc.d/netif b/etc/rc.d/netif
new file mode 100644
index 0000000..bfc9f81
--- /dev/null
+++ b/etc/rc.d/netif
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+# Copyright (c) 2003 The FreeBSD Project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE PROJECT ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# PROVIDE: netif
+# REQUIRE: atm1 ipfilter mountcritlocal pccard serial sppp sysctl tty
+# KEYWORD: FreeBSD
+
+. /etc/rc.subr
+. /etc/network.subr
+
+name="network"
+start_cmd="network_start"
+stop_cmd="network_stop"
+cloneup_cmd="clone_up"
+clonedown_cmd="clone_down"
+extra_commands="cloneup clonedown"
+
+network_start()
+{
+ # Create cloned interfaces
+ clone_up
+
+ # Create IPv6<-->IPv4 tunnels
+ gif_up
+
+ # Get a list of network interfaces. Do not include dhcp interfaces.
+ _ifn_list="`list_net_interfaces nodhcp`"
+
+ # Setup the supplied network interfaces including startup
+ # scripts, if they exist.
+ #
+ for ifn in ${_ifn_list}; do
+ ifscript_up ${ifn} && eval showstat_$ifn=1
+
+ ifconfig_up ${ifn} && eval showstat_$ifn=1
+
+ ifalias_up ${ifn} && eval showstat_$ifn=1
+
+ ipx_up ${ifn} && eval showstat_$ifn=1
+ done
+
+ # Display interfaces configured by this script
+ #
+ for ifn in ${_ifn_list}; do
+ eval showstat=\$showstat_${ifn}
+ if [ ! -z ${showstat} ]; then
+ ifconfig ${ifn}
+ fi
+ done
+
+ # Resync ipfilter
+ /etc/rc.d/ipfilter resync
+}
+
+network_stop()
+{
+ echo -n "Stopping network:"
+
+ # flush routes
+ route -n flush
+ echo '.'
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/etc/rc.d/network1 b/etc/rc.d/network1
index 4887042..e9b03f0 100644
--- a/etc/rc.d/network1
+++ b/etc/rc.d/network1
@@ -5,7 +5,7 @@
# PROVIDE: network1
# REQUIRE: atm1 ipfilter mountcritlocal pccard serial sppp sysctl tty
-# KEYWORD: FreeBSD
+# KEYWORD: FreeBSD nostart
. /etc/rc.subr
diff --git a/etc/rc.d/nisdomain b/etc/rc.d/nisdomain
new file mode 100644
index 0000000..4866f4d
--- /dev/null
+++ b/etc/rc.d/nisdomain
@@ -0,0 +1,119 @@
+#!/bin/sh
+#
+# Copyright (c) 1993 - 2003 The FreeBSD Project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# PROVIDE: nisdomain
+# REQUIRE: SERVERS rpcbind
+# BEFORE: ypbind ypserv ypxfrd
+# KEYWORD: FreeBSD
+
+. /etc/rc.subr
+
+name="nisdomain"
+start_cmd="nisdomain_start"
+stop_cmd=":"
+
+convert_host_conf()
+{
+ host_conf=$1; shift;
+ nsswitch_conf=$1; shift;
+ awk ' \
+ /^[:blank:]*#/ { next } \
+ /(hosts|local|file)/ { nsswitch[c] = "files"; c++; next } \
+ /(dns|bind)/ { nsswitch[c] = "dns"; c++; next } \
+ /nis/ { nsswitch[c] = "nis"; c++; next } \
+ { printf "Warning: unrecognized line [%s]", $0 > "/dev/stderr" } \
+ END { \
+ printf "hosts: "; \
+ for (i in nsswitch) printf "%s ", nsswitch[i]; \
+ printf "\n"; \
+ }' < $host_conf > $nsswitch_conf
+}
+
+generate_host_conf()
+{
+ nsswitch_conf=$1; shift;
+ host_conf=$1; shift;
+
+ awk '
+BEGIN {
+ xlat["files"] = "hosts";
+ xlat["dns"] = "bind";
+ xlat["nis"] = "nis";
+ cont = 0;
+}
+sub(/^[\t ]*hosts:/, "") || cont {
+ if (!cont)
+ srcs = ""
+ sub(/#.*/, "")
+ gsub(/[][]/, " & ")
+ cont = sub(/\\$/, "")
+ srcs = srcs " " $0
+}
+END {
+ print "# Auto-generated from nsswitch.conf, do not edit"
+ ns = split(srcs, s)
+ for (n = 1; n <= ns; ++n) {
+ if (s[n] in xlat)
+ print xlat[s[n]]
+ }
+}
+' <$nsswitch_conf >$host_conf
+}
+
+nisdomain_start()
+{
+ # Generate host.conf for compatibility
+ #
+ if [ -f "/etc/nsswitch.conf" ]; then
+ echo 'Generating host.conf.'
+ generate_host_conf /etc/nsswitch.conf /etc/host.conf
+ fi
+
+ # Convert host.conf to nsswitch.conf if necessary
+ #
+ if [ -f "/etc/host.conf" -a ! -f "/etc/nsswitch.conf" ]; then
+ echo ''
+ echo 'Warning: /etc/host.conf is no longer used'
+ echo ' /etc/nsswitch.conf will be created for you'
+ convert_host_conf /etc/host.conf /etc/nsswitch.conf
+ fi
+
+ # Set the domainname if we're using NIS
+ #
+ case ${nisdomainname} in
+ [Nn][Oo]|'')
+ ;;
+ *)
+ domainname ${nisdomainname}
+ echo "Setting NIS domain: `/bin/domainname`."
+ ;;
+ esac
+}
+
+load_rc_config $name
+run_rc_command "$1"
OpenPOWER on IntegriCloud