#! /bin/bash
#
# network       Bring up/down networking
#
# $Id: network,v 1.14 1999/07/14 21:23:47 ray Exp $
#
# Modified for COL by Raymund Will <ray@lst.de>.

: ${IF_LIST:="dynamic"}
: ${NFS_UNMOUNT_TIMEOUT:=20}
: ${IPFORWARDING:=no}
: ${IP_FORWARD_F:="/proc/sys/net/ipv4/ip_forward"}

# Source function library...
. /etc/rc.d/init.d/functions
# ...and network defaults
. /etc/sysconfig/network

[ -z "$IF_LIST" -o "$IF_LIST" = "dynamic"  ] && IF_LIST=$(ifup -l)

# See how we were called.
case "$1" in
 start)
  [ ${NETWORKING} != "no" ] || exit 2
  [ -x /sbin/ifconfig ] || exit 1

  [ "$2" = "basic" ] && {
    MODE="basic "
    IF_LIST=$(ifup -B)
  }

  [ -z "$IF_LIST" ] && exit 2

  [ -w $IP_FORWARD_F ] && {
    echo -n "IPv4 forwarding: "
    [ -z "$IPFORWARDING" ] && IPFORWARDING="$FORWARDING"
    if [ "$IPFORWARDING" != "yes" -a "$IPFORWARDING" != "true" ]; then
      echo 0 > $IP_FORWARD_F &&
      echo -n " disabled"
    else
      [ "$(cat $IP_FORWARD_F)" != 0 ] || echo 1 > $IP_FORWARD_F
      echo -n " enabled"
    fi
    echo  "."
  }

  echo "Starting ${MODE}network devices..."
  ifup lo boot $2
  for IF in $IF_LIST; do
    [ "$IF" != "lo" ] || continue
    IFcfgs="$(ifup -c $IF)"
    for i in $IFcfgs; do
      ifup $i boot $2
    done
  done
  cd /etc/sysconfig/network-scripts
  if [ -r ifcfg-routes ]; then
    echo "Setting up static routes..."
    ./ifcfg-routes $2
  fi
  ;;

 stop)
  [ -x /sbin/ifconfig ] || exit 1

  # try to get rid of NFS-mounts etc...
  /etc/rc.d/init.d/netmount stop all force

  [ -w $IP_FORWARD_F ] && [ "$(cat $IP_FORWARD_F)" != 0 ] && {
    # stop forwarding...
    echo -n "IPv4 forwarding: "
    echo 0 > $IP_FORWARD_F &&
    echo -n " disabled"
    echo  "."
  }

  echo "Shutting down network devices..."

  TSIL_FI=""; for IF in $IF_LIST; do TSIL_FI="$IF $TSIL_FI"; done
  for IF in $TSIL_FI; do
    [ "$IF" != "lo" ] || continue
    IFcfgs="$(ifdown -c $IF)"
    for i in $IFcfgs; do
      ifdown $i
    done
  done
  ifdown lo
  ;;

 *)
  echo "Usage: network {start|stop}"
  exit 1
  ;;
esac

exit 0

