#!/bin/sh
#
# net.init
#
#        Bring up/down LAN Emulation using SVCs
#

# Notes:
# You must be superuser to execute this script
# mtu is set to 2000
# The LAN Emulation Server provided by the switch is used.
# We could run it on one of the hosts but it takes more connections

# Edit for your configuration

LNET_IPADDR="192.168.2.0"
ATMADDR_LES="47.02.03.04.05.06.07.08.09.00.00.03.01.00.01.02.03.04.05.02"
ATMADDR_SWITCH="47.02.03.04.05.06.07.08.09.00.00.03.01.00.01.02.03.04.05.00"

CNET_IPADDR="192.168.1.0"
CIPADDR_ARP="192.168.1.2"
CIPADDR_SWITCH="192.168.1.3"

ARP_SERVER="glint2"
ATMADDR_ARP="47.02.03.04.05.06.07.08.09.00.00.03.01.00.04.ac.6c.31.25.00"

LANE_MTU=1492
CIP_MTU=2000
LOGPATH="."

START_LANE="true"
START_CLIP="false"

if [ "$#" -lt 1 ]
then
  echo "Usage: net.init <start | stop> [-d]"
  exit 1
fi

if [ "$#" -eq 2 ]
then
  if [ "$2" = "-d" -o "$2" = "d" ]
  then
    debug="true"
  else
    echo "Unrecognized option: $2"
    echo "Usage: net.init <start | stop> [-d]"
    echo "Use -d option to turn on debugging logs"
    exit 2
  fi
else
  debug="false"
fi

case "$1" in

  start)

    echo "Starting ilmi daemon"

    if [ $debug = "true" ]
    then
      if [ -f $LOGPATH/logilmi ]
      then
        /bin/mv $LOGPATH/logilmi $LOGPATH/logilmi.old
      fi
      /usr/sbin/ilmid -b -d -v -l $LOGPATH/logilmi >& logilmi
      /usr/sbin/ilmid -b -d -v -l $LOGPATH/logilmi 1 >& logilmi
#    /usr/sbin/ilmid -b
    else
      /usr/sbin/ilmid 1 -b
      /usr/sbin/ilmid -b
    fi

    sleep 10

    echo "Starting signaling daemon"

    if [ $debug = "true" ]
    then
      if [ -f $LOGPATH/logsig ]
      then
        /bin/mv $LOGPATH/logsig $LOGPATH/logsig.old
      fi
      nice -20 /usr/sbin/atmsigd -b -d -l$LOGPATH/logsig -D . -t 1000
    else
      /usr/sbin/atmsigd -b
    fi

    sleep 10



if [ $START_CLIP = "true" ]
then
    echo "Starting atmarp daemon"

    if [ $debug = "true" ]
    then
      if [ -f $LOGPATH/logarp ]
      then
        /bin/mv $LOGPATH/logarp $LOGPATH/logarp.old
      fi
      /usr/sbin/atmarpd -b -d -l$LOGPATH/logarp -m -n >& logarp
    else
      /usr/sbin/atmarpd -b
    fi

    sleep 10

    echo "Creating classical IP interfaces"
    /usr/sbin/atmarp -c atm0

    echo "Configuring atm interface"

   /sbin/ifconfig atm0 `hostname -s`-atm up mtu $CIP_MTU netmask 255.255.255.0

    echo "Initializing ATMARP"
    if [ "`hostname -s`" = "$ARP_SERVER" ]
    then
       echo Registering local address $CIPADDR_ARP $ATMADDR_ARP
       /usr/sbin/atmarp -s $CIPADDR_ARP $ATMADDR_ARP pub
       /usr/sbin/atmarp -s $CIPADDR_SWITCH $ATMADDR_SWITCH pub
    else
       /usr/sbin/atmarp -s $CIPADDR_ARP $ATMADDR_ARP arpsrv
    fi
fi

if [ $START_LANE = "true" ]
then
    echo "Starting lan emulation client"
    if [ $debug = "true" ]
    then
      if [ -f $LOGPATH/logled ]
      then
        /bin/mv $LOGPATH/logled $LOGPATH/logled.old
      fi
      /usr/sbin/zeppelin -s "$ATMADDR_LES" -n "lan1eth" -m ff -q ubr,aal5:max_pcr=9600,max_sdu=1516  > $LOGPATH/logled0 2>&1 &
      /usr/sbin/zeppelin  -i 1 -I 1 -s "$ATMADDR_LES" -n "lan1eth" -m ff -q ubr,aal5:max_pcr=9600,max_sdu=1516  > $LOGPATH/logled1 2>&1 &
#     /usr/sbin/zeppelin -c "$ATMADDR_LECS" -n "lan1eth" -m 3ff > $LOGPATH/logled 2>&1 &
    else
      /usr/sbin/zeppelin -s "$ATMADDR_LES" -n "lan1eth"  -q ubr,aal5:max_pcr=9600,max_sdu=1516 > $LOGPATH/logled 2>&1 &
      /usr/sbin/zeppelin -e 00.04.AC.6C.31.25  -l glint2-atm -i 1 -I 1 -s "$ATMADDR_LES" -n "lan1eth" -m ff -q ubr,aal5:max_pcr=9600,max_sdu=1516  > $LOGPATH/logled1 2>&1 &
#     /usr/sbin/zeppelin -s "$ATMADDR_LES" -n "lan1eth" &
    fi

    sleep 10

    echo "Configuring lan emulation interfaces "

    /sbin/ifconfig lec0 `hostname -s`-lane up mtu $LANE_MTU netmask 255.255.255.0
    /sbin/ifconfig lec1 `hostname -s`-lane2 up mtu $LANE_MTU netmask 255.255.255.0
#   /sbin/route add -net 130.127.28.0 gw 130.127.4.1 netmask 255.255.255.0 dev lec0
fi

;;

  stop)

    # Stopping atmarp daemon

    atid=`ps -ax | grep /usr/sbin/atmarpd | grep -v grep | awk '{print $1}'`

    echo "Checking for atmarpd..."
    if [ "$atid" ]
    then
        echo "Stopping atmarpd..."
        kill -9 $atid
        echo "done"
    fi
    # Shutting down atm interface

    echo "Shutting down atm interface"
    for Itf in `/sbin/ifconfig | grep lec | awk '{print $1}'`
    do
      echo "Shutting down interface $Itf"
      /sbin/ifconfig $Itf down
    done

    # Shutting down atm interface

    echo "Shutting down atm interface"
    for Itf in `/sbin/ifconfig | grep atm | awk '{print $1}'`
    do
      echo "Shutting down interface $Itf"
      /sbin/ifconfig $Itf down
    done

    #Stopping zeppelin client

    echo "Checking for zeppelin ... "
    pid=`ps -ax | grep /usr/sbin/zeppelin | grep -v grep | awk '{print $1}'`
    if [ "$pid" ]
    then
      echo "Stopping zeppelin ... "
      kill -9 $pid
      echo "done"
    fi

    # Stopping signalization daemon

    echo "Checking for atmsigd"
    pid=`ps -ax | grep /usr/sbin/atmsigd | grep -v grep | awk '{print $1}'`
    if [ "$pid" ]
    then
      echo "Stopping atmsigd ... "
      kill -9 $pid
      echo "done"
    fi

    # Stopping ilmi daemon

    echo "Checking for ilmid ... "
    pid=`ps -ax | grep /usr/sbin/ilmid | grep -v grep | awk '{print $1}'`
    if [ "$pid" ]
    then
      echo "Stopping ilmid ... "
      kill -9 $pid
      echo "done"
    fi
    ;;

  *)
    echo "Usage: lane.init <start | stop> [-d]"
    ;;
esac
