Rev 3 | Rev 95 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#! /bin/bash## network Bring up/down networking## chkconfig: 2345 10 90# description: Activates/Deactivates all network interfaces configured to \# start at boot time.#### BEGIN INIT INFO# Provides: $network# Should-Start: iptables ip6tables# Short-Description: Bring up/down networking# Description: Bring up/down networking### END INIT INFO# Source function library.. /etc/init.d/functionsif [ ! -f /etc/sysconfig/network ]; thenexit 6fi. /etc/sysconfig/networkif [ -f /etc/sysconfig/pcmcia ]; then. /etc/sysconfig/pcmciafi# Check that networking is up.[ "${NETWORKING}" = "no" ] && exit 6# if the ip configuration utility isn't around we can't function.[ -x /sbin/ip ] || exit 1CWD=$(pwd)cd /etc/sysconfig/network-scripts. ./network-functions# find all the interfaces besides loopback.# ignore aliases, alternative configurations, and editor backup filesinterfaces=$(ls ifcfg* | \LANG=C sed -e "$__sed_discard_ignored_files" \-e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \-e '/ifcfg-[A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \LANG=C sort -k 1,1 -k 2n | \LANG=C sed 's/ //')rc=0# See how we were called.case "$1" instart)[ "$EUID" != "0" ] && exit 4rc=0# IPv6 hook (pre IPv4 start)if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then/etc/sysconfig/network-scripts/init.ipv6-global start prefiapply_sysctl# bring up loopback interfaceaction $"Bringing up loopback interface: " ./ifup ifcfg-locase "$VLAN" inyes)if [ ! -d /proc/net/vlan ] && ! modprobe 8021q >/dev/null 2>&1 ; thennet_log $"No 802.1Q VLAN support available in kernel."fi;;esacvlaninterfaces=""xdslinterfaces=""bridgeinterfaces=""# bring up all other interfaces configured to come up at boot timefor i in $interfaces; dounset DEVICE TYPE SLAVEeval $(LANG=C fgrep "DEVICE=" ifcfg-$i)eval $(LANG=C fgrep "TYPE=" ifcfg-$i)eval $(LANG=C fgrep "SLAVE=" ifcfg-$i)if [ -z "$DEVICE" ] ; then DEVICE="$i"; fiif [ "$SLAVE" = "yes" ]; thencontinuefiif [ "$TYPE" = "xDSL" ]; thenxdslinterfaces="$xdslinterfaces $i"continuefiif [ "$TYPE" = "Bridge" ]; thenbridgeinterfaces="$bridgeinterfaces $i"continuefiif [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; thenvlaninterfaces="$vlaninterfaces $i"continuefiif LANG=C egrep -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i > /dev/null ; then# this loads the module, to preserve orderingis_available $icontinuefi# If we're in confirmation mode, get user confirmation.if [ -f /var/run/confirm ]; thenconfirm $itest $? = 1 && continuefiaction $"Bringing up interface $i: " ./ifup $i boot[ $? -ne 0 ] && rc=1done# Bring up xDSL and VPN interfacesfor i in $vlaninterfaces $bridgeinterfaces $xdslinterfaces ; doif ! LANG=C egrep -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i >/dev/null 2>&1 ; then# If we're in confirmation mode, get user confirmation.if [ -f /var/run/confirm ]; thenconfirm $itest $? = 1 && continuefiaction $"Bringing up interface $i: " ./ifup $i boot[ $? -ne 0 ] && rc=1fidone# Add non interface-specific static-routes.if [ -f /etc/sysconfig/static-routes ]; thengrep "^any" /etc/sysconfig/static-routes | while read ignore args ; do/sbin/route add -$argsdonefi# Add non interface-specific static arp entries.if [ -f /etc/ethers ]; then/sbin/arp -f /etc/ethersfi# IPv6 hook (post IPv4 start)if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then/etc/sysconfig/network-scripts/init.ipv6-global start postfi# Run this again to catch any interface-specific actionsapply_sysctltouch /var/lock/subsys/network[ -n "${NETWORKDELAY}" ] && /bin/sleep ${NETWORKDELAY};;stop)[ "$EUID" != "0" ] && exit 4# Don't shut the network down if root is on NFS or a network# block device.rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/" && $3 != "rootfs") { print $3; }}' /proc/mounts)rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab)if [[ "$rootfs" == nfs* || "$rootopts" =~ _r?netdev ]] ; thennet_log $"rootfs is on network filesystem, leaving network up"exit 1fi# If this is a final shutdown/halt, check for network FS,# and unmount them even if the user didn't turn on netfsif [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; thenNETMOUNTS=$(findmnt -m -t nfs,nfs4,smbfs,ncpfs,cifs 2>/dev/null)if [ -n "$NETMOUNTS" ] ; then/etc/init.d/netfs stopfifivlaninterfaces=""xdslinterfaces=""bridgeinterfaces=""remaining=""rc=0# get list of bonding, vpn, and xdsl interfacesfor i in $interfaces; dounset DEVICE TYPEeval $(LANG=C fgrep "DEVICE=" ifcfg-$i)eval $(LANG=C fgrep "TYPE=" ifcfg-$i)if [ -z "$DEVICE" ] ; then DEVICE="$i"; fiif [ "$TYPE" = "Bridge" ]; thenbridgeinterfaces="$bridgeinterfaces $i"continuefiif [ "$TYPE" = "xDSL" ]; thenxdslinterfaces="$xdslinterfaces $i"continuefiif [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; thenvlaninterfaces="$vlaninterfaces $i"continuefiremaining="$remaining $i"donefor i in $xdslinterfaces $bridgeinterfaces $vlaninterfaces $remaining; do(. ./ifcfg-$iif [ -z "$DEVICE" ] ; then DEVICE="$i"; fiif ! check_device_down $DEVICE; thenaction $"Shutting down interface $i: " ./ifdown $i boot[ $? -ne 0 ] && rc=1fi)doneaction $"Shutting down loopback interface: " ./ifdown ifcfg-losysctl -w net.ipv4.ip_forward=0 > /dev/null 2>&1# IPv6 hook (post IPv4 stop)if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then/etc/sysconfig/network-scripts/init.ipv6-global stop postfirm -f /var/lock/subsys/network;;status)echo $"Configured devices:"echo lo $interfacesecho $"Currently active devices:"echo $(/sbin/ip -o link show up | awk -F ": " '{ print $2 }');;restart|reload|force-reload)cd "$CWD"$0 stop$0 startrc=$?;;*)echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"exit 2esacexit $rc