#!/bin/sh
#
# Start/stop the network....
#

# Setup or teardown wireless or wired client.
client()
{
    case "$1" in
      start)
        doWlan=`grep wlan0 /etc/network/interfaces`
        if [ "$doWlan" != "" ]
        then
            wpa_supplicant -B -c /etc/wpa_supplicant.conf -Dnl80211 -iwlan0
        fi
        /sbin/ifup -a
        ;;
    
      stop)
        /sbin/ifdown -a
        doWlan=`ps | grep wpa_supplicant | grep -v grep`
        if [ "$doWlan" != "" ]
        then
            killall wpa_supplicant                                             
        fi
        ;;
    esac
}

# Setup or teardown wireless access point
wap()
{
    case "$1" in
      start)
        /sbin/ifup -a
        doWlan=`grep wlan0 /etc/network/interfaces`
        if [ "$doWlan" != "" ]
        then
            hostapd -B /etc/hostapd.conf
            dhcpd wlan0
        fi
        ;;
    
      stop)
        /sbin/ifdown -a
        doWlan=`ps | grep hostapd | grep -v grep`
        if [ "$doWlan" != "" ]
        then
            killall hostapd                                             
        fi
        doWlan=`ps | grep dhcpd | grep -v grep`
        if [ "$doWlan" != "" ]
        then
            killall dhcpd                                             
        fi
        ;;
    esac
}

# Choose client or wap
type=""
if [ -f /etc/network/nettype ]
then
    type=`grep wap /etc/network/nettype`
fi

# Now change the run state of the network.
case "$1" in
  start)
    echo "Starting network..."
    if [ "$type" = "" ]
    then
        client $1
    else
        wap $1
    fi
    ;;

  stop)
    echo "Stopping network..."
    if [ "$type" = "" ]
    then
        client $1
    else
        wap $1
    fi
    ;;

  restart|reload)
    "$0" stop
    "$0" start
    ;;

  *)
    echo $"Usage: $0 {start|stop|restart}"
    exit 1
esac
exit $?

