Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 5636aec23239d3a7d371201f584e6384 > files > 37

initscripts-7.06-11mdk.ppc.rpm

#! /bin/bash
#
# network       Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
#              start at boot time.
# probe: false
### BEGIN INIT INFO
# Provides: $network
### END INIT INFO

# Source function library.
. /etc/init.d/functions

if [ ! -f /etc/sysconfig/network ]; then
    echo "NETWORKING=no" > /etc/sysconfig/network
    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

# if the ip configuration utility isn't around we can't function.
[ -x /sbin/ip ] || exit 1

# Even if IPX is configured, without the utilities we can't do much
[ ! -x /sbin/ipx_internal_net -o ! -x /sbin/ipx_configure ] && IPX=

# Even if VLAN is configured, without the utility we can't do much
[ ! -x /sbin/vconfig ] && VLAN=

# If IPv6 is explicitly configured, make sure it's available.
if [ "$NETWORKING_IPV6" = "yes" ]; then
	alias=`modprobe -c | awk '/^alias net-pf-10 / { print $3 }'`
	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

. network-functions

# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=`ls ifcfg* | LANG=C egrep -v '(ifcfg-lo|:|rpmsave|rpmorig|rpmnew)' | \
	    LANG=C egrep -v '(~|\.bak)$' | \
            LANG=C egrep 'ifcfg-[A-Za-z0-9\.]+$' | \
            sed 's/^ifcfg-//g'`

# See how we were called.
case "$1" in
  start)
	# IPv6 hook (pre IPv4 start)
	if [ "$NETWORKING_IPV6" = "yes" ]; then
		if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
			/etc/sysconfig/network-scripts/init.ipv6-global start pre
		fi
	fi
  
  	action "Setting network parameters: " sysctl -e -p /etc/sysctl.conf

	if [ -r /etc/ethers -a -x /sbin/arp ]; then
	    action "Storing ARP mapping" /sbin/arp -f /etc/ethers
	fi
	
	# bring up loopback interface
	action "Bringing up loopback interface: " ./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
	# depreciated but we still use it.
	if [ -f /proc/sys/net/ipv4/ip_forward ] && [[ "$FORWARD_IPV4" = "yes" || "$FORWARD_IPV4" = "true" ]]; 
	    then
		action "Enabling IPv4 packet forwarding" sysctl -n -w net.ipv4.ip_forward=1
	fi

	case "$VLAN" in
	  yes|true)
	    if [ -d /proc/net/vlan ] || modprobe 8021q >/dev/null 2>&1 ; then
		action "Setting 802.1Q VLAN parameters: " /sbin/vconfig set_name_type DEV_PLUS_VID_NO_PAD
	    else
		gprintf "No 802.1Q VLAN support available in kernel.\n"
	    fi
	    ;;
	esac

	oldhotplug=`sysctl kernel.hotplug  2>/dev/null | \
	    awk '{ print $3 }' 2>/dev/null`
	sysctl -n -w kernel.hotplug="/bin/true" > /dev/null 2>&1

        cipeinterfaces=""

	# bring up all other interfaces configured to come up at boot time
	for i in $interfaces; do
		eval $(LANG=C fgrep "DEVICE=" ifcfg-$i)
		if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi

		if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
			cipeinterfaces="$cipeinterfaces $DEVICE"
			continue
		fi
		if LANG=C egrep -q -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i; then
		        # this loads the module, to preserve ordering
			is_available $i
			continue
		fi
		# If we're in confirmation mode, get user confirmation
		[ -n "$CONFIRM" ]  && 
			{ 
			    confirm $i
			    case $? in
				0)
				    :
				;;
				2)
				    CONFIRM=
				;;
				*)
				    continue
				;;
			    esac 
		}
		if  [ "${DEVICE:0:3}" != "eth" -o ${DEVICE/:/} != ${DEVICE} -o ! -x /sbin/ifplugd ] || grep -q '^MII_NOT_SUPPORTED' ifcfg-$i; then
		    action "Bringing up interface %s: " $i ./ifup $DEVICE boot
		else
		    IFPLUGD_ARGS="${IFPLUGD_ARGS=-w -b}"
		    action "Bringing up interface %s: " $i /sbin/ifplugd $IFPLUGD_ARGS -i $DEVICE
		fi
	done
	
	# Bring up CIPE VPN interfaces
	for i in $cipeinterfaces ; do 
            if ! LANG=C egrep -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i >/dev/null 2>&1 ; then
		# If we're in confirmation mode, get user confirmation
		[ -n "$CONFIRM" ]  && 
		{ 
			confirm $i
			case $? in
				0)
				    :
				;;
				2)
				    CONFIRM=
				;;
				*)
				    continue
				;;
			esac 
		}
		action "Bringing up interface %s: " $i ./ifup $i boot
	    fi
        done

	sysctl -n -w kernel.hotplug=$oldhotplug > /dev/null 2>&1
	
	# Add non interface-specific static-routes.
	if [ -f /etc/sysconfig/static-routes ]; then
	   grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
              /sbin/route add -$args
	   done
	fi    

 	# IPv6 hook (post IPv4 start)
 	if [ "$NETWORKING_IPV6" = "yes" ]; then
 		if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
 			/etc/sysconfig/network-scripts/init.ipv6-global start post
 		fi
 	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=`LC_ALL=C awk '!/^#/ && $3 == "nfs" { print $2 }' /proc/mounts`
		SMBMTAB=`LC_ALL=C awk '!/^#/ && $3 == "smbfs" { print $2 }' /proc/mounts`
		NCPMTAB=`LC_ALL=C awk '!/^#/ && $3 == "ncpfs" { print $2 }' /proc/mounts`
		if [ -n "$NFSMTAB" -o -n "$SMBMTAB" -o -n "$NCPMTAB" ] ; then
			/etc/init.d/netfs stop
		fi
	fi
	
 	# IPv6 hook (pre IPv4 stop)
 	if [ "$NETWORKING_IPV6" = "yes" ]; then
 		if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
 			/etc/sysconfig/network-scripts/init.ipv6-global stop pre
 		fi
 	fi
 
	# shut down all interfaces (other than loopback)
	for i in $interfaces ; do
		eval $(fgrep "DEVICE=" ifcfg-$i)
		if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi

		if ! check_device_down $i; then
		   action "Shutting down interface %s: " $i ./ifdown $i boot
		fi
	done

	# kill all the ifplugd instances
	/usr/bin/killall ifplugd > /dev/null 2>&1
	
	case "$IPX" in
	  yes|true)
	    if [ "$IPXINTERNALNETNUM" != "0" ]; then
	       /sbin/ipx_internal_net del
	    fi
	    ;;
	esac

	action "Shutting down loopback interface: " ./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 -n -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 -n -w net.ipv4.ip_always_defrag=0
		fi
	  fi
	fi
	if [ -f /proc/sys/net/ipv4/tcp_syncookies ];then
	        if [ `cat /proc/sys/net/ipv4/tcp_syncookies` != 0 ]; then
		    sysctl -n -w net.ipv4.tcp_syncookies=0
		fi
	fi

	# IPv6 hook (post IPv4 stop)
	if [ "$NETWORKING_IPV6" = "yes" ]; then
		if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
			/etc/sysconfig/network-scripts/init.ipv6-global stop post
		fi
	fi
	
        rm -f /var/lock/subsys/network
        ;;
  status)
	gprintf "Configured devices:\n"
	echo lo $interfaces

	gprintf "Currently active devices:\n"
	echo `/sbin/ip -o link show | awk -F ": " '/UP>/ { print $2 }'`
	;;
  restart|reload)
        cd $CWD
	$0 stop
	$0 start
	;;
  *)
        gprintf "Usage: %s\n" "$(basename $0) {start|stop|restart|reload|status}"
        exit 1
esac

exit 0