3b98afb4c5
the new /etc/rc.conf. this also includes the following changes: netstart: ifaliases now includes a netmask, to ensure aliases work. rc/rc.local: make _everything_ based on configuration in rc.conf. also move things around such that DNS and YP are started early enough that other daemons needing their services also exist. move ldconfig from rc.local here, and also make it use /etc/ld.so.conf if it exists. run /etc/rc.lkm if it exists, a boot time.
107 lines
2.9 KiB
Bash
107 lines
2.9 KiB
Bash
#!/bin/sh -
|
|
#
|
|
# $NetBSD: netstart,v 1.27 1997/01/05 12:01:54 mrg Exp $
|
|
# @(#)netstart 5.9 (Berkeley) 3/30/91
|
|
|
|
# /etc/myname contains my symbolic name
|
|
#
|
|
hostname=`cat /etc/myname`
|
|
hostname $hostname
|
|
if [ -f /etc/defaultdomain ]; then
|
|
domainname `cat /etc/defaultdomain`
|
|
fi
|
|
|
|
# install and enable packet filter rules before configuring interfaces.
|
|
if [ "X$ipfilter" != XNO -a -f /etc/ipf.conf ]; then
|
|
echo 'installing packet filter rules ... '
|
|
ipf -f /etc/ipf.conf -E
|
|
fi
|
|
|
|
# configure all of the interfaces which we know about.
|
|
# do this by reading /etc/hostname.* files, where * is the name
|
|
# of a given interface.
|
|
#
|
|
# these files are formatted like the following, but with no # at the
|
|
# beginning of the line
|
|
#
|
|
# addr_family hostname netmask broadcast_addr options
|
|
# dest dest_addr
|
|
#
|
|
# addr_family is the address family of the interface, generally inet
|
|
# hostname is the host name that belongs to the interface, in /etc/hosts.
|
|
# netmask is the network mask for the interface.
|
|
# broadcast_addr is the broadcast address for the interface
|
|
# options are misc. options to ifconfig for the interface.
|
|
#
|
|
# dest is simply the string "dest" (no quotes, though) if the interface
|
|
# has a "destination" (i.e. it's a point-to-point link, like SLIP).
|
|
# dest_addr is the hostname of the other end of the link, in /etc/hosts
|
|
#
|
|
# the only required contents of the file are the addr_family field
|
|
# and the hostname.
|
|
|
|
(
|
|
tmp="$IFS"
|
|
IFS="$IFS."
|
|
set -- `echo /etc/hostname*`
|
|
IFS=$tmp
|
|
unset tmp
|
|
|
|
while [ $# -ge 2 ] ; do
|
|
shift # get rid of "hostname"
|
|
(
|
|
read af name mask bcaddr extras
|
|
read dt dtaddr
|
|
|
|
if [ ! -n "$name" ]; then
|
|
echo "/etc/hostname.$1: invalid network configuration file"
|
|
exit
|
|
fi
|
|
|
|
cmd="ifconfig $1 $af $name "
|
|
if [ "${dt}" = "dest" ]; then cmd="$cmd $dtaddr"; fi
|
|
if [ -n "$mask" ]; then cmd="$cmd netmask $mask"; fi
|
|
if [ -n "$bcaddr" -a "X$bcaddr" != "XNONE" ]; then
|
|
cmd="$cmd broadcast $bcaddr";
|
|
fi
|
|
cmd="$cmd $extras"
|
|
|
|
$cmd
|
|
) < /etc/hostname.$1
|
|
shift
|
|
done
|
|
)
|
|
|
|
# set the address for the loopback interface
|
|
ifconfig lo0 inet localhost
|
|
|
|
# use loopback, not the wire
|
|
route add $hostname localhost
|
|
|
|
# /etc/mygate, if it exists, contains the name of my gateway host
|
|
# that name must be in /etc/hosts.
|
|
if [ -f /etc/mygate ]; then
|
|
route add default `cat /etc/mygate`
|
|
fi
|
|
|
|
# /etc/ifaliases, if it exists, contains the names of additional IP
|
|
# addresses for each interface. It is formatted as a series of lines
|
|
# that contain
|
|
# address interface netmask
|
|
if [ -f /etc/ifaliases ]; then
|
|
(
|
|
while read addr int net; do
|
|
if [ x"$net" = x ]; then
|
|
ifconfig $int inet alias $addr
|
|
else
|
|
ifconfig $int inet alias $addr netmask $net
|
|
fi
|
|
route add $addr localhost
|
|
done
|
|
) < /etc/ifaliases
|
|
fi
|
|
|
|
if [ -s /etc/netstart.local ]; then
|
|
. /etc/netstart.local
|
|
fi
|