summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/network1
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2001-11-01 12:39:01 +0000
committerdes <des@FreeBSD.org>2001-11-01 12:39:01 +0000
commit5f5f051f7e1ee40cae98749b313b6624415243e2 (patch)
tree4de74fab1ec43ef702bd4219d257497b6bd2d3be /etc/rc.d/network1
parentefca3566fb3d2a6810cd1b3bb4c71a6ae78126e2 (diff)
downloadFreeBSD-src-5f5f051f7e1ee40cae98749b313b6624415243e2.zip
FreeBSD-src-5f5f051f7e1ee40cae98749b313b6624415243e2.tar.gz
Modify the way host.conf and nsswitch.conf are treated at boot time:
- if nsswitch.conf exists, host.conf is auto-generated for compatibility with legacy applications and libraries. - if host.conf exists but nsswitch.conf does not, nsswitch.conf is auto- generated as usual.
Diffstat (limited to 'etc/rc.d/network1')
-rw-r--r--etc/rc.d/network141
1 files changed, 34 insertions, 7 deletions
diff --git a/etc/rc.d/network1 b/etc/rc.d/network1
index 1f50bea..1ca57d5 100644
--- a/etc/rc.d/network1
+++ b/etc/rc.d/network1
@@ -38,16 +38,21 @@
network_pass1() {
echo -n 'Doing initial network setup:'
+ # Generate host.conf for compatibility
+ #
+ if [ -f "/etc/nsswitch.conf" ]; then
+ echo ''
+ echo 'Generating /etc/host.conf for compatibility'
+ generate_host_conf /etc/nsswitch.conf /etc/host.conf
+ fi
+
# Convert host.conf to nsswitch.conf if necessary
- if [ -f "/etc/host.conf" ]; then
+ #
+ if [ -f "/etc/host.conf" -a ! -f "/etc/nsswitch.conf" ]; then
echo ''
echo 'Warning: /etc/host.conf is no longer used'
- if [ -f "/etc/nsswitch.conf" ]; then
- echo ' /etc/nsswitch.conf will be used instead'
- else
- echo ' /etc/nsswitch.conf will be created for you'
- convert_host_conf /etc/host.conf /etc/nsswitch.conf
- fi
+ echo ' /etc/nsswitch.conf will be created for you'
+ convert_host_conf /etc/host.conf /etc/nsswitch.conf
fi
# Set the host name if it is not already set
@@ -866,3 +871,25 @@ convert_host_conf() {
}' < $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";
+}
+/^hosts:/ {
+ print "# Auto-generated, do not edit";
+ for (n = 2; n <= NF; ++n)
+ if ($n in xlat)
+ print xlat[$n];
+ quit;
+}
+// {
+ next;
+}
+' <$nsswitch_conf >$host_conf
+}
OpenPOWER on IntegriCloud