#!/bin/bash

RUNLEVEL=3
NEEDS="+network +remote_fs"
PROGRAM=/usr/sbin/ifplugd

CONFFILE=/etc/ifplugd/ifplugd.conf
DROPFILE=/var/tmp/ifplugd.drop

[[ ! -f $CONFFILE ]] && echo "No config file: $CONFFILE" && exit 1
. $CONFFILE
. /etc/init.d/smgl_init

required_executable /usr/sbin/ifplugd

(($#>1)) && INTERFACES="${@/$1}"
[[ $INTERFACES == auto ]] && INTERFACES="$(cat /proc/net/dev | awk '{ print $1 }' | egrep '^(eth|wlan)' | cut -d: -f1)"

start()
{
  local STATE
  for IF in $INTERFACES; do
    echo "Starting daemon on interface $IF..."
    A="$(eval builtin echo \$\{ARGS_${IF}\})"
    [[ -z $A ]] && A="$ARGS"
    $PROGRAM -i $IF $A
    STATE=$?
    if ((STATE==2)); then
      echo "Link up."
      unset STATE
    elif ((STATE==3)); then
      echo "Link down."
      STATE=
    fi
    (exit $STATE)
    evaluate_retval
  done
  /bin/echo "INTERFACES=\"$INTERFACES\"" > $DROPFILE
}

stop()
{
  [[ -f $DROPFILE ]] && . $DROPFILE && rm $DROPFILE
  for IF in $INTERFACES; do
    echo "Stopping daemon on interface $IF..."
    $PROGRAM -k -i $IF -W
    evaluate_retval
  done
}

status()
{
  [[ -f $DROPFILE ]] && . $DROPFILE
  for IF in $INTERFACES; do
    echo "Status on interface $IF:"
    $PROGRAM -c -i $IF
    evaluate_retval
  done
}

force-reload()
{
  stop
  sleep 3
  start
}
