#!/bin/sh
#
-# network Bring up/down networking
+# network Bring up/down networking
#
-# chkconfig: 2345 10 90
-# description: Activates/Deactivates all network interfaces configured to \
-# start at boot time.
-# probe: true
+# chkconfig: 2345 10 90
+# description: Activates/Deactivates all network interfaces configured to \
+# start at boot time.
+#
+# probe: true
+
+# $Id: network,v 1.58 2002/12/17 14:01:10 baggins Exp $
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# NLS
+NLS_DOMAIN="rc-scripts"
# Source function library.
. /etc/rc.d/init.d/functions
-. /etc/rc.d/init.d/functions.network
+. /etc/sysconfig/network-scripts/functions.network
-[ ! -f /etc/sysconfig/network ] && exit 0
+if [ ! -f /etc/sysconfig/network ]; then
+ nls "%s is missing. Can't continue." "/etc/sysconfig/network"
+ exit 1
+fi
. /etc/sysconfig/network
# Check that networking is up.
-[ "${NETWORKING}" == "no" -o "${NETWORKING}" == "" ] && exit 0
-
-[ -x /sbin/ip ] || exit 0
+is_no "${NETWORKING}" && exit 0
+
+# Will be removed in the future
+if is_yes "$NETWORKING" ; then
+ if [ -z "$IPV4_NETWORKING" ] ; then
+ echo "NETWORKING is set to YES, but IPV4_NETWORKING is empty!"
+ echo "Please upgrade your config"
+ echo "Assuming you want IPv4 networking"
+ IPV4_NETWORKING=yes
+ fi
+fi
+
+if [ ! -x /sbin/ip ]; then
+ nls "%s is missing. Can't continue." "/sbin/ip"
+ exit 1
+fi
######
# initialize networking:
# - check IPv4, IPv6, IPX can be handled by system
# - setup default IPv{4,6} interfaces policy like:
-# - forwarding,
# - spoofig protection,
# - icmp echo ignore broadcasts,
# - setup lo interface
network_init()
{
-[ -f /etc/sysconfig/interfaces/ifcfg-lo ] && /sbin/ifup lo boot
+# Modprobe needed devices
+modprobe_net
+
+# Kernel network parameters
+run_cmd "Setting network parameters" sysctl -p /etc/sysctl.conf
+
+# Set UP loopback interface
+set_up_loopback
+
+# Setup configuration
+setup_nat on
+setup_routes on
+setup_ip_rules on
+# Setup IPX
+if is_yes "$IPX"; then
+ if [ -n $IPXAUTOPRIMARY ] ; then
+ if is_yes "$IPXAUTOPRIMARY"; then
+ IPXAUTOPRIMARY="on"
+ else
+ IPXAUTOPRIMARY="off"
+ fi
+ /sbin/ipx_configure --auto_primary=$IPXAUTOPRIMARY
+ fi
+ if [ -n $IPXAUTOFRAME ] ; then
+ if is_yes "$IPXAUTOFRAME"; then
+ IPXAUTOFRAME="on"
+ else
+ IPXAUTOFRAME="off"
+ fi
+ /sbin/ipx_configure --auto_interface=$IPXAUTOFRAME
+ fi
+ if [ -n "$IPXINTERNALNETNUM" -a "$IPXINTERNALNETNUM" != "0" ]; then
+ /sbin/ipx_internal_net add $IPXINTERNALNETNUM $IPXINTERNALNODENUM
+ fi
+fi
+}
+
+network_postinit()
+{
+# Set static RARP table
+static_rarp
+# Set static ARP table
+static_arp
}
######
# - down lo interface.
network_deinit()
{
-[ -f /etc/sysconfig/interfaces/ifcfg-lo ] && /sbin/ifdown lo boot
-modprobe ipv6 ipip ip_gre 2> /dev/null
+setup_routes off
+setup_ip_rules off
+# Set down NAT rules
+setup_nat off
+# Set DOWN loopback interface
+set_down_loopback
}
-interfaces="`(cd /etc/sysconfig/interfaces && ls -1 ifcfg-* | grep -v ifcfg-lo | xargs ) 2> /dev/null`"
-tunnels="`(cd /etc/sysconfig/interfaces && ls -1 tnlcfg-* | xargs ) 2> /dev/null`"
+# find all the interfaces besides loopback.
+# ignore aliases, alternative configurations, and editor backup files
+interfaces_boot=$((
+ . /etc/rc.d/init.d/functions; \
+ cd /etc/sysconfig/interfaces && ls -1 ifcfg* | \
+ egrep -v '(ifcfg-lo|ifcfg-sit|ifcfg-atm|ifcfg-lec|ifcfg-nas|:)' | \
+ egrep 'ifcfg-[a-z0-9\.]+$' | \
+ for i in `cat`; do \
+ ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; is_yes "$ONBOOT" && echo "$i"; \
+ done | \
+ awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
+interfaces_sit_boot=$((
+ . /etc/rc.d/init.d/functions; \
+ cd /etc/sysconfig/interfaces && ls -1 ifcfg-sit* | \
+ egrep 'ifcfg-[a-z0-9]+$' | \
+ for i in `cat`; do \
+ ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; is_yes "$ONBOOT" && echo "$i"; \
+ done | \
+ awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
+tunnels=$((cd /etc/sysconfig/interfaces && ls -1 tnlcfg-* | \
+ xargs egrep -l "ONBOOT=[^n][^o]" | \
+ awk ' { gsub(/tnlcfg-/,NIL); print $0 } ') 2> /dev/null)
# See how we were called.
case "$1" in
start)
network_init
- for i in $tunnels; do
- [ -f /etc/sysconfig/interfaces/$i ] && /sbin/tnlup $i boot
+
+ for i in $interfaces_boot $interfaces_sit_boot ; do
+ run_cmd -a "$(nls 'Bringing up interface') $i" /sbin/ifup $i boot
done
- for i in $interfaces; do
- [ -f /etc/sysconfig/interfaces/$i ] && /sbin/ifup $i boot
+ for i in $tunnels; do
+ run_cmd -a "$(nls 'Setting tunnel') $i" /sbin/tnlup $i boot
+ run_cmd -a "$(nls 'Bringing up tunnel interface') $i" /sbin/ifup tnlcfg-$i boot
done
+
+ network_postinit
touch /var/lock/subsys/network
;;
stop)
- for i in $interfaces; do
- [ -f /etc/sysconfig/interfaces/$i ] && /sbin/ifdown $i boot
- done
+ # If we go to runlevel 0, 1 or 6 then umount all network fs
+ if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
+ if [ -x /etc/rc.d/init.d/netfs -a -f /var/lock/subsys/netfs ];
+ then
+ /etc/rc.d/init.d/netfs stop
+ else
+ netmtab=$(awk '{ if ($3 ~ /^(nfs|smbfs|ncpfs)$/ ) print $3}' /proc/mounts)
+ if (echo "$netmtab" | grep -q nfs); then
+ run_cmd "Unmounting NFS filesystems" umount -fat nfs
+ fi
+ if (echo "$netmtab" | grep -q smbfs); then
+ run_cmd "Unmounting SMB filesystems" umount -at smbfs
+ fi
+ if (echo "$netmtab" | grep -q ncpfs); then
+ run_cmd "Unmounting NCP filesystems" umount -at ncpfs
+ fi
+ fi
+ fi
for i in $tunnels; do
- [ -f /etc/sysconfig/interfaces/$i ] && /sbin/tnldown $i boot
- done
+ run_cmd -a "$(nls 'Shutting down tunnel interface') $i" /sbin/ifdown tnlcfg-$i boot
+ run_cmd -a "$(nls 'Removing tunnel') $i" /sbin/tnldown $i boot
+ done
+
+ for i in $interfaces_sit_boot $interfaces_boot ; do
+ run_cmd -a "$(nls 'Shutting down interface') $i" /sbin/ifdown $i boot
+ done
network_deinit
+
rm -f /var/lock/subsys/network
;;
status)
- echo "Configured devices:"
+ nls "Configured devices:"
echo "lo $interfaces"
-
- echo "Currently active devices:"
- echo "`/sbin/ifconfig | grep ^[a-z] | awk '{print $1}'`"
-
- echo "Configured tunnels:"
+ nls "Configured tunnels:"
echo "$tunnels"
-
- echo "Currently active tunnels:"
- echo "`/sbin/ip tunnel show | egrep -v "^sit0|^tunl0" | cut -d":" -f1 | xargs`"
+ echo
+ nls "Currently inactive devices and tunnels:"
+ /sbin/ip link show | awk -F":" '(/^[0-90-90-9]:/) && ! (/UP/) { print $2 }' | xargs
+ nls "Currently active devices and tunnels:"
+ /sbin/ip link show | awk -F":" ' (/UP/) { print $2 }' | xargs
;;
restart)
$0 stop
$0 start
;;
*)
- echo "Usage: network {start|stop|restart|status}"
+ echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
+
+# This must be last line !
+# vi:syntax=sh:tw=78:ts=8:sw=4