#!/bin/bash # # network Bring up/down networking # # chkconfig: 2345 10 90 # description: Activates/Deactivates all network interfaces configured to \ # start at boot time. # probe: true # Source function library. . /etc/init.d/functions if [ ! -f /etc/sysconfig/network ]; then exit 0 fi . /etc/sysconfig/network if [ -f /etc/sysconfig/pcmcia ]; then . /etc/sysconfig/pcmcia fi # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /sbin/ifconfig ] || exit 0 # Even if IPX is configured, without the utilities we can't do much [ ! -x /sbin/ipx_internal_net -o ! -x /sbin/ipx_configure ] && IPX= # If IPv6 is explicitly configured, make sure it's available. if [ "$NETWORKING_IPV6" = "yes" ]; then alias=`modprobe -c | grep net-pf-10 | awk '{ print $2 }'` if [ "$alias" != "ipv6" -a ! -f /proc/net/if_inet6 ]; then echo "alias net-pf-10 ipv6" >> /etc/modules.conf fi fi CWD=`pwd` cd /etc/sysconfig/network-scripts # find all the interfaces besides loopback. # ignore aliases, alternative configurations, and editor backup files interfaces=`ls ifcfg* | egrep -v '(ifcfg-lo|:|rpmsave|rpmorig|rpmnew)' | \ egrep -v '(~|\.bak)$' | \ egrep -v 'ifcfg-ippp[0-9]+$' | \ egrep 'ifcfg-[a-z0-9]+$' | \ sed 's/^ifcfg-//g'` # See how we were called. case "$1" in start) action $"Setting network parameters: " sysctl -p /etc/sysctl.conf action $"Bringing up interface lo: " ./ifup ifcfg-lo case "$IPX" in yes|true) /sbin/ipx_configure --auto_primary=$IPXAUTOPRIMARY \ --auto_interface=$IPXAUTOFRAME if [ "$IPXINTERNALNETNUM" != "0" ]; then /sbin/ipx_internal_net add $IPXINTERNALNETNUM $IPXINTERNALNODENUM fi ;; esac for i in $interfaces; do if egrep -L "^ONBOOT=\"?[Nn][Oo]\"?" ifcfg-$i >/dev/null 2>&1 ; then if [ "${i##eth}" != "$i" ]; then # Probe module to preserve interface ordering if [ -n "`modprobe -vn $i | grep -v Note:`" ]; then /sbin/ifconfig $i >/dev/null 2>&1 fi fi else # If we're in confirmation mode, get user confirmation [ -n "$CONFIRM" ] && { confirm $i case $? in 0) : ;; 2) CONFIRM= ;; *) continue ;; esac } action $"Bringing up interface $i: " ./ifup $i boot fi done # Add non interface-specific static-routes. if [ -f /etc/sysconfig/static-routes ]; then grep "^any" /etc/sysconfig/static-routes | while read ignore type dest netmask mask bogus args; do if [ "${bogus}" = "gw" ]; then /sbin/route add -$type $dest $netmask $mask $args else /sbin/route add -$type $dest $netmask $mask $bogus $args fi done fi touch /var/lock/subsys/network ;; stop) # If this is a final shutdown/halt, check for network FS, # and unmount them even if the user didn't turn on netfs if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then NFSMTAB=`grep -v '^#' /proc/mounts | awk '{ if ($3 ~ /^nfs$/ ) print $2}'` SMBMTAB=`grep -v '^#' /proc/mounts | awk '{ if ($3 ~ /^smbfs$/ ) print $2}'` NCPMTAB=`grep -v '^#' /proc/mounts | awk '{ if ($3 ~ /^ncpfs$/ ) print $2}'` if [ -n "$NFSMTAB" -o -n "$SMBMTAB" -o -n "$NCPMTAB" ] ; then /etc/init.d/netfs stop fi fi for i in $interfaces ; do if LC_ALL= LANG= ifconfig $i 2>/dev/null | grep -q " UP " >/dev/null 2>&1 ; then action $"Shutting down interface $i: " ./ifdown $i boot fi done case "$IPX" in yes|true) if [ "$IPXINTERNALNETNUM" != "0" ]; then /sbin/ipx_internal_net del fi ;; esac ./ifdown ifcfg-lo if [ -d /proc/sys/net/ipv4 ]; then if [ -f /proc/sys/net/ipv4/ip_forward ]; then if [ `cat /proc/sys/net/ipv4/ip_forward` != 0 ]; then action $"Disabling IPv4 packet forwarding: " sysctl -w net.ipv4.ip_forward=0 fi fi if [ -f /proc/sys/net/ipv4/ip_always_defrag ]; then if [ `cat /proc/sys/net/ipv4/ip_always_defrag` != 0 ]; then action $"Disabling IPv4 automatic defragmentation: " sysctl -w net.ipv4.ip_always_defrag=0 fi fi fi rm -f /var/lock/subsys/network ;; status) echo $"Configured devices:" echo lo $interfaces if [ -x /sbin/linuxconf ] ; then eval `/sbin/linuxconf --hint netdev` echo $"Devices that are down:" echo $DEV_UP echo $"Devices with modified configuration:" echo $DEV_RECONF else echo $"Currently active devices:" echo `/sbin/ifconfig | grep ^[a-z] | awk '{print $1}'` fi ;; restart) cd $CWD $0 stop $0 start ;; reload) if [ -x /sbin/linuxconf ] ; then eval `/sbin/linuxconf --hint netdev` for device in $DEV_UP ; do action $"Bringing up device %s: " $device ./ifup $device done for device in $DEV_DOWN ; do action $"Shutting down device %s: " $device ./ifdown $device done for device in $DEV_RECONF ; do action $"Shutting down device %s: " $device ./ifdown $device action $"Bringing up device %s: " $device ./ifup $device done for device in $DEV_RECONF_ALIASES ; do action $"Bringing up alias %s: " $device /etc/sysconfig/network-scripts/ifup-aliases $device done for device in $DEV_RECONF_ROUTES ; do action $"Bringing up route %s: " $device /etc/sysconfig/network-scripts/ifup-routes $device done case $IPX in yes|true) case $IPXINTERNALNET in reconf) action $"Deleting internal IPX network: " /sbin/ipx_internal_net del action $"Adding internal IPX network %s %s: " $IPXINTERNALNETNUM $IPXINTERNALNODENUM /sbin/ipx_internal_net add $IPXINTERNALNETNUM \ $IPXINTERNALNODENUM ;; add) action $"Adding internal IPX network $IPXINTERNALNETNUM $IPXINTERNALNODENUM: "/sbin/ipx_internal_net add $IPXINTERNALNETNUM \ $IPXINTERNALNODENUM ;; del) action $"Deleting internal IPX network: " /sbin/ipx_internal_net del ;; esac ;; esac else cd $CWD $0 restart fi ;; probe) if [ -x /sbin/linuxconf ] ; then eval `/sbin/linuxconf --hint netdev` [ -n "$DEV_UP$DEV_DOWN$DEV_RECONF$DEV_RECONF_ALIASES" -o \ -n "$DEV_RECONF_ROUTES$IPXINTERNALNET" ] && \ echo reload exit 0 else # if linuxconf isn't around to figure stuff out for us, # we punt. Probably better than completely reloading # networking if user isn't sure which to do. If user # is sure, they would run restart or reload, not probe. exit 0 fi ;; *) echo $"Usage: $0 {start|stop|restart|reload|status|probe}" exit 1 esac exit 0