#!/bin/sh


if ! [ -x /sbin/ifup ]
then
    exit 0
fi

if [ -e /etc/network/spoof-protect ]
then
    . /etc/network/spoof-protect
fi

INTERFACES=/etc/sysconfig/interfaces
if ! [ -f $INTERFACES ];
then
   echo "Networking: Using default interface configuration"
   INTERFACES=/usr/local/fireball/defaults/sysconfig/interfaces
fi

hostname_set () {



  SYSNAME=''

  if [[ -e /etc/sysconfig/sysname ]]
  then
    SYSNAME=$(</etc/sysconfig/sysname)

    if [[ "$SYSNAME" = 'RS0000000000' ]]
    then
      SYSNAME=''
    fi
  fi

  if [[ -z "$SYSNAME" ]]
  then
    SYSNAME=$(/usr/local/fireball/warranty -s)
    SYSNAME=RS${SYSNAME#Serial_number: }

    echo $SYSNAME > /etc/sysconfig/sysname
    echo "Setting default system name to $SYSNAME"
  fi

  hostname $SYSNAME

} # end of hostname_set()



spoofprotect_rp_filter () {

  if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
    for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
        echo 1 > $f
    done
    return 0
  else
    return 1
  fi
}


spoofprotect () {
  echo "Setting up IP spoofing protection: "
  if spoofprotect_rp_filter; then
    echo "rp_filter."
  else
    echo "FAILED"
  fi
}


ip_forward () {
  if [ -e /proc/sys/net/ipv4/ip_forward ]; then
    echo "Enabling packet forwarding: "
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "done."
  fi
}


syncookies () {
  if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
    echo "Enabling TCP/IP SYN cookies: "
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
    echo "done."
  fi
}


disable_tcp_ecn () {
  if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then
    echo "Disable TCP/IP Explicit Congestion Notification: "
    echo 0 > /proc/sys/net/ipv4/tcp_ecn
    echo "done."
  fi
}


doopt () {
  optname=$1
  default=$2
  opt=`grep "^$optname=" /etc/network/options`
  if [ -z "$opt" ]; then
      opt="$optname=$default"
  fi
  optval=${opt#$optname=}
  if [ "$optval" = "yes" ]; then
      eval $optname
  fi
} # end of doopt()


case "$1" in

  start)
    doopt spoofprotect yes
    doopt syncookies no
    doopt ip_forward no
    doopt disable_tcp_ecn no

    if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
      grep -q "^/ nfs$"
    then
      echo "NOT configuring network interfaces: / is an NFS mount"
      echo "Setting up loopback interface"
      /sbin/ifconfig lo 127.0.0.1
      route add -host 127.0.0.1 lo
    else
      echo "Configuring network interfaces: "
      /sbin/ifup -a --interfaces=$INTERFACES
    fi
    hostname_set
    echo "done."

    ;;

  stop)
    if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
      grep -q "^/ nfs$"
    then
      echo "NOT deconfiguring network interfaces: / is an NFS mount"
    else
      echo "Deconfiguring network interfaces: "
      /sbin/ifdown -a --interfaces=/etc/sysconfig/interfaces
      echo "done."
    fi
    ;;

  reload)
    ;;

  force-reload)
    $0 restart
    ;;

  restart)
    echo "Reconfiguring network interfaces: "
    /sbin/ifdown -i /etc/sysconfig/interfaces -a
    /sbin/ifup -i /etc/sysconfig/interfaces -a
    echo "done."
    ;;

  *)
    echo "Usage: /etc/init.d/networking {start|stop|reload|restart}"
    exit 1
    ;;
esac

exit 0

