summaryrefslogtreecommitdiffstats
path: root/source/n/network-scripts/scripts/rc.inet1
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--source/n/network-scripts/scripts/rc.inet1276
-rw-r--r--source/n/network-scripts/scripts/rc.inet1.conf107
2 files changed, 383 insertions, 0 deletions
diff --git a/source/n/network-scripts/scripts/rc.inet1 b/source/n/network-scripts/scripts/rc.inet1
new file mode 100644
index 000000000..0080f7dac
--- /dev/null
+++ b/source/n/network-scripts/scripts/rc.inet1
@@ -0,0 +1,276 @@
+#! /bin/sh
+# /etc/rc.d/rc.inet1
+# This script is used to bring up the various network interfaces.
+#
+# @(#)/etc/rc.d/rc.inet1 10.2 Sun Jul 24 12:45:56 PDT 2005 (pjv)
+
+############################
+# READ NETWORK CONFIG FILE #
+############################
+
+# Get the configuration information from /etc/rc.d/rc.inet1.conf:
+. /etc/rc.d/rc.inet1.conf
+
+###########
+# LOGGING #
+###########
+
+# If possible, log events in /var/log/messages:
+if [ -f /var/run/syslogd.pid -a -x /usr/bin/logger ]; then
+ LOGGER=/usr/bin/logger
+else # output to stdout/stderr:
+ LOGGER=/bin/cat
+fi
+
+############################
+# DETERMINE INTERFACE LIST #
+############################
+
+# Compose a list of interfaces from /etc/rc.d/rc.inet1.conf (with a maximum
+# of 6 interfaces, but you can easily enlarge the interface limit
+# - send me a picture of such a box :-).
+# If a value for IFNAME[n] is not set, we assume it is an eth'n' interface.
+# This way, the new script is compatible with older rc.inet1.conf files.
+# The IFNAME array will be used to determine which interfaces to bring up/down.
+MAXNICS=${MAXNICS:-6}
+i=0
+while [ $i -lt $MAXNICS ];
+do
+ IFNAME[$i]=${IFNAME[$i]:=eth${i}}
+ i=$(($i+1))
+done
+if [ "$DEBUG_ETH_UP" = "yes" ]; then
+ echo "/etc/rc.d/rc.inet1: List of interfaces: '${IFNAME[@]}'" | $LOGGER
+fi
+
+######################
+# LOOPBACK FUNCTIONS #
+######################
+
+# Function to bring up the loopback interface. If loopback is
+# already up, do nothing.
+lo_up() {
+ if grep lo: /proc/net/dev 1> /dev/null ; then
+ if ! /sbin/ifconfig | grep "^lo" 1> /dev/null ; then
+ echo "/etc/rc.d/rc.inet1: /sbin/ifconfig lo 127.0.0.1" | $LOGGER
+ /sbin/ifconfig lo 127.0.0.1
+ echo "/etc/rc.d/rc.inet1: /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo" | $LOGGER
+ /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
+ fi
+ fi
+}
+
+# Function to take down the loopback interface:
+lo_down() {
+ if grep lo: /proc/net/dev 1> /dev/null ; then
+ echo "/etc/rc.d/rc.inet1: /sbin/ifconfig lo down" | $LOGGER
+ /sbin/ifconfig lo down
+ fi
+}
+
+#######################
+# INTERFACE FUNCTIONS #
+#######################
+
+# Function to bring up a network interface. If the interface is
+# already up or does not yet exist (perhaps because the kernel driver
+# is not loaded yet), do nothing.
+if_up() {
+ # Determine position 'i' of this interface in the IFNAME array:
+ i=0
+ while [ $i -lt $MAXNICS ]; do
+ [ "${IFNAME[$i]}" = "${1}" ] && break
+ i=$(($i+1))
+ done
+ # If the interface isn't in the kernel yet (but there's an alias for it in
+ # modules.conf), then it should be loaded first:
+ if ! grep `echo ${1}: | cut -f 1 -d :`: /proc/net/dev 1> /dev/null ; then # no interface yet
+ if /sbin/modprobe -c | grep -v "^#" | grep -w "alias ${1}" | grep -vw "alias ${1} off" > /dev/null ; then
+ echo "/etc/rc.d/rc.inet1: /sbin/modprobe ${1}" | $LOGGER
+ /sbin/modprobe ${1}
+ fi
+ fi
+ if grep `echo ${1}: | cut -f 1 -d :`: /proc/net/dev 1> /dev/null ; then # interface exists
+ if ! /sbin/ifconfig | grep -w "${1}" 1>/dev/null || \
+ ! /sbin/ifconfig ${1} | grep "inet addr" 1> /dev/null ; then # interface not up or not configured
+ if [ ! "${HWADDR[$i]}" = "" ]; then # Set hardware address _before_ the interface goes up:
+ echo "/etc/rc.d/rc.inet1: /sbin/ifconfig ${1} hw ether ${HWADDR[$i]}" | $LOGGER
+ /sbin/ifconfig ${1} hw ether ${HWADDR[$i]}
+ fi
+ if [ ! "${MTU[$i]}" = "" ]; then # Set MTU to something else than 1500
+ echo "/etc/rc.d/rc.inet1: /sbin/ifconfig ${1} mtu ${MTU[$i]}" | $LOGGER
+ /sbin/ifconfig ${1} mtu ${MTU[$i]}
+ fi
+ if [ -x /etc/rc.d/rc.wireless ]; then
+ . /etc/rc.d/rc.wireless ${1} start # Initialize any wireless parameters
+ fi
+ if [ "${USE_DHCP[$i]}" = "yes" ]; then # use DHCP to bring interface up
+ [ ${DHCP_HOSTNAME[$i]} ] && DHCP_OPTIONS="-h ${DHCP_HOSTNAME[$i]}"
+ [ "${DHCP_KEEPRESOLV[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -R"
+ [ "${DHCP_KEEPNTP[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -N"
+ [ "${DHCP_KEEPGW[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -G"
+ [ "${DHCP_DEBUG[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -d"
+ [ "${DHCP_NOIPV4LL[$i]}" = "yes" ] && DHCP_OPTIONS="$DHCP_OPTIONS -L"
+ [ ${DHCP_IPADDR[$i]} ] && DHCP_OPTIONS="$DHCP_OPTIONS -s ${DHCP_IPADDR[$i]}"
+ echo "Polling for DHCP server on interface ${1}:"
+ # If you set a timeout, you get one, even if the kernel doesn't think that
+ # your device is connected, in case /sys isn't right (which it usually isn't
+ # except right after the device is loaded, when it usually is):
+ #### (start commented out)
+ # This is deactivated for now since the kernel has been returning incorrect
+ # results concerning whether the interface carrier is detected.
+ #if [ "${DHCP_TIMEOUT[$i]}" = "" ]; then
+ # ifconfig ${1} up && sleep 1
+ # CONNSTATUS="$(cat /sys/class/net/${1}/carrier 2> /dev/null)"
+ # ifconfig ${1} down
+ # if [ "$CONNSTATUS" = "0" ]; then
+ # # The kernel has just told us the cable isn't even plugged in, but we will
+ # # give any DHCP server a short chance to reply anyway:
+ # echo "No carrier detected on ${1}. Reducing DHCP timeout to 10 seconds."
+ # DHCP_TIMEOUT[$i]=10
+ # fi
+ #fi
+ #### (end commented out)
+ # 10 seconds should be a reasonable default DHCP timeout. 30 was too much.
+ echo "/etc/rc.d/rc.inet1: /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}" | $LOGGER
+ /sbin/dhcpcd -t ${DHCP_TIMEOUT[$i]:-10} ${DHCP_OPTIONS} ${1}
+ else # bring up interface using a static IP address
+ if [ ! "${IPADDR[$i]}" = "" ]; then # skip unconfigured interfaces
+ # Determine broadcast address from the IP address and netmask:
+ BROADCAST[$i]=`/bin/ipmask ${NETMASK[$i]} ${IPADDR[$i]}|cut -f1 -d' '`
+ # Set up the network card:
+ echo "/etc/rc.d/rc.inet1: /sbin/ifconfig ${1} ${IPADDR[$i]} broadcast ${BROADCAST[$i]} netmask ${NETMASK[$i]}" | $LOGGER
+ /sbin/ifconfig ${1} ${IPADDR[$i]} broadcast ${BROADCAST[$i]} netmask ${NETMASK[$i]}
+ else
+ if [ "$DEBUG_ETH_UP" = "yes" ]; then
+ echo "/etc/rc.d/rc.inet1: ${1} interface is not configured in /etc/rc.d/rc.inet1.conf" | $LOGGER
+ fi
+ fi
+ fi
+ else
+ if [ "$DEBUG_ETH_UP" = "yes" ]; then
+ echo "/etc/rc.d/rc.inet1: ${1} is already up, skipping" | $LOGGER
+ fi
+ fi
+ else
+ if [ "$DEBUG_ETH_UP" = "yes" ]; then
+ echo "/etc/rc.d/rc.inet1: ${1} interface does not exist (yet)" | $LOGGER
+ fi
+ fi
+}
+
+# Function to take down a network interface:
+if_down() {
+ # Determine position 'i' of this interface in the IFNAME array:
+ i=0
+ while [ $i -lt $MAXNICS ]; do
+ [ "${IFNAME[$i]}" = "${1}" ] && break
+ i=$(($i+1))
+ done
+ if grep `echo ${1}: | cut -f 1 -d :`: /proc/net/dev 1> /dev/null ; then
+ if [ "${USE_DHCP[$i]}" = "yes" ]; then
+ echo "/etc/rc.d/rc.inet1: /sbin/dhcpcd -k -d ${1}" | $LOGGER
+ /sbin/dhcpcd -k -d ${1} 2> /dev/null || /sbin/ifconfig ${1} down
+ sleep 1
+ else
+ echo "/etc/rc.d/rc.inet1: /sbin/ifconfig ${1} down" | $LOGGER
+ /sbin/ifconfig ${1} down
+ fi
+ if [ -x /etc/rc.d/rc.wireless ]; then
+ . /etc/rc.d/rc.wireless ${1} stop # Kill wireless daemons if any.
+ fi
+ fi
+}
+
+#####################
+# GATEWAY FUNCTIONS #
+#####################
+
+# Function to bring up the gateway if there is not yet a default route:
+gateway_up() {
+ if ! /sbin/route -n | grep "^0.0.0.0" 1> /dev/null ; then
+ if [ ! "$GATEWAY" = "" ]; then
+ echo "/etc/rc.d/rc.inet1: /sbin/route add default gw ${GATEWAY} metric 1" | $LOGGER
+ /sbin/route add default gw ${GATEWAY} metric 1 2>&1 | $LOGGER
+ fi
+ fi
+}
+
+# Function to take down an existing default gateway:
+gateway_down() {
+ if /sbin/route -n | grep "^0.0.0.0" 1> /dev/null ; then
+ echo "/etc/rc.d/rc.inet1: /sbin/route del default" | $LOGGER
+ /sbin/route del default
+ fi
+}
+
+# Function to start the network:
+start() {
+ lo_up
+ for i in ${IFNAME[@]} ; do
+ if_up $i
+ done
+ gateway_up
+}
+
+# Function to stop the network:
+stop() {
+ gateway_down
+ for i in ${IFNAME[@]} ; do
+ if_down $i
+ done
+ lo_down
+}
+
+
+############
+### MAIN ###
+############
+
+case "$1" in
+'start') # "start" brings up all configured interfaces:
+ start
+ ;;
+'stop') # "stop" takes down all configured interfaces:
+ stop
+ ;;
+'restart') # "restart" restarts the network:
+ stop
+ start
+ ;;
+*_start) # Example: "eth1_start" will start the specified interface 'eth1'
+ INTERFACE=`echo $1 | /bin/cut -d '_' -f 1`
+ if_up $INTERFACE
+ gateway_up
+ ;;
+*_stop) # Example: "eth0_stop" will stop the specified interface 'eth0'
+ INTERFACE=`echo $1 | /bin/cut -d '_' -f 1`
+ if_down $INTERFACE
+ ;;
+*_restart) # Example: "wlan0_restart" will take 'wlan0' down and up again
+ INTERFACE=`echo $1 | /bin/cut -d '_' -f 1`
+ if_down $INTERFACE
+ sleep 1
+ if_up $INTERFACE
+ gateway_up
+ ;;
+'up') # "up" does the same thing as "start"
+ start
+ ;;
+'down') # "down" does the same thing as "stop"
+ stop
+ ;;
+*_up) # "*_up" does the same thing as "*_start"
+ INTERFACE=`echo $1 | /bin/cut -d '_' -f 1`
+ if_up $INTERFACE
+ gateway_up
+ ;;
+*_down) # "*_down" does the same thing as "*_stop"
+ INTERFACE=`echo $1 | /bin/cut -d '_' -f 1`
+ if_down $INTERFACE
+ ;;
+*) # The default is to bring up all configured interfaces:
+ start
+esac
+
+# End of /etc/rc.d/rc.inet1
diff --git a/source/n/network-scripts/scripts/rc.inet1.conf b/source/n/network-scripts/scripts/rc.inet1.conf
new file mode 100644
index 000000000..555210c4b
--- /dev/null
+++ b/source/n/network-scripts/scripts/rc.inet1.conf
@@ -0,0 +1,107 @@
+# /etc/rc.d/rc.inet1.conf
+#
+# This file contains the configuration settings for network interfaces.
+# If USE_DHCP[interface] is set to "yes", this overrides any other settings.
+# If you don't have an interface, leave the settings null ("").
+
+# You can configure network interfaces other than eth0,eth1... by setting
+# IFNAME[interface] to the interface's name. If IFNAME[interface] is unset
+# or empty, it is assumed you're configuring eth<interface>.
+
+# Several other parameters are available, the end of this file contains a
+# comprehensive set of examples.
+
+# =============================================================================
+
+# Config information for eth0:
+IPADDR[0]=""
+NETMASK[0]=""
+USE_DHCP[0]=""
+DHCP_HOSTNAME[0]=""
+
+# Config information for eth1:
+IPADDR[1]=""
+NETMASK[1]=""
+USE_DHCP[1]=""
+DHCP_HOSTNAME[1]=""
+
+# Config information for eth2:
+IPADDR[2]=""
+NETMASK[2]=""
+USE_DHCP[2]=""
+DHCP_HOSTNAME[2]=""
+
+# Config information for eth3:
+IPADDR[3]=""
+NETMASK[3]=""
+USE_DHCP[3]=""
+DHCP_HOSTNAME[3]=""
+
+# Default gateway IP address:
+GATEWAY=""
+
+# Change this to "yes" for debugging output to stdout. Unfortunately,
+# /sbin/hotplug seems to disable stdout so you'll only see debugging output
+# when rc.inet1 is called directly.
+DEBUG_ETH_UP="no"
+
+## Example config information for wlan0. Uncomment the lines you need and fill
+## in your data. (You may not need all of these for your wireless network)
+#IFNAME[4]="wlan0"
+#IPADDR[4]=""
+#NETMASK[4]=""
+#USE_DHCP[4]="yes"
+#DHCP_HOSTNAME[4]="icculus-wireless"
+#DHCP_KEEPRESOLV[4]="yes"
+#DHCP_KEEPNTP[4]="yes"
+#DHCP_KEEPGW[4]="yes"
+#DHCP_IPADDR[4]=""
+#WLAN_ESSID[4]=DARKSTAR
+#WLAN_MODE[4]=Managed
+#WLAN_RATE[4]="54M auto"
+#WLAN_CHANNEL[4]="auto"
+#WLAN_KEY[4]="D5A31F54ACF0487C2D0B1C10D2"
+#WLAN_IWPRIV[4]="set AuthMode=WPAPSK | set EncrypType=TKIP | set WPAPSK=96389dc66eaf7e6efd5b5523ae43c7925ff4df2f8b7099495192d44a774fda16"
+#WLAN_WPA[4]="wpa_supplicant"
+#WLAN_WPADRIVER[4]="wext"
+#WLAN_WPAWAIT[4]=30
+
+## Some examples of additional network parameters that you can use.
+## Config information for wlan0:
+#IFNAME[4]="wlan0" # Use a different interface name instead of
+ # the default 'eth4'
+#IFNAME[4]="eth0:1" # Set up an IP alias.
+#HWADDR[4]="00:01:23:45:67:89" # Overrule the card's hardware MAC address
+#MTU[4]="" # The default MTU is 1500, but you might need
+ # 1360 when you use NAT'ed IPSec traffic.
+#DHCP_TIMEOUT[4]=15 # The default timeout for the DHCP client to
+ # wait for server resonse is 10 seconds, but
+ # you might want a shorter or longer wait.
+#DHCP_KEEPRESOLV[4]="yes" # If you dont want /etc/resolv.conf overwritten
+#DHCP_KEEPNTP[4]="yes" # If you don't want ntp.conf overwritten
+#DHCP_KEEPGW[4]="yes" # If you don't want the DHCP server to change
+ # your default gateway
+#DHCP_IPADDR[4]="" # Request a specific IP address from the DHCP
+ # server
+#DHCP_DEBUG[4]="yes" # Make dhcpcd show verbose diagnostics
+#DHCP_NOIPV4LL[4]="yes" # Do not assign an ipv4ll address when a DHCP
+ # server is not found (ipv4ll link-local
+ # adresses in the IP range 169.254.0.0/16 are
+ # also known as "zeroconf" addresses)
+#WLAN_ESSID[4]=DARKSTAR # An example of how you can override _any_
+ # parameter defined in rc.wireless.conf, by
+ # prepending 'WLAN_' to the parameter's name.
+ # Useful with multiple wireless interfaces.
+#WLAN_IWPRIV[4]="set AuthMode=WPAPSK | set EncrypType=TKIP | set WPAPSK=thekey"
+ # Some drivers require a private ioctl to be
+ # set through the iwpriv command. If more than
+ # one is required, you can place them in the
+ # IWPRIV parameter (separated with the pipe (|)
+ # character, see the example).
+#WLAN_WPA[4]="wpa_supplicant" # Run wpa_supplicant for WPA support
+#WLAN_WPADRIVER[4]="ndiswrapper"# Tell wpa_supplicant to specifically use the
+ # ndiswrapper driver (if you leave this empty
+ # the 'wext' driver is used by default)
+#WLAN_WPAWAIT[4]=30 # In case it takes long for the WPA association
+ # to finish, you can increase the wait time
+ # (defaults to 10 seconds)