#!/bin/sh
#
# planetplugin: Calls planet plugin
#
# Author: Shun-ichi TAHARA <jado@flowernet.gr.jp>
# Time-stamp: <05/03/28 16:22:40 jado@sheira>
#

PLUGIN=/etc/rc.d/inet.d
NETCONF=/etc/network.conf

usage ()
{
    echo "planetplugin dev scheme up|down"
    exit 1
}

if [ ! $# = 3 ]; then
    usage
fi

DEVICE=$1
SCHEME=$2
ACTION=$3

# Init plugins
PLUGINSTATE=/var/lib/net/plugins
PLUGINS=;VARS=
if [ -r "$PLUGIN/.plugins.dir" ]; then
    for f in `/usr/bin/grep -v '^#' $PLUGIN/.plugins.dir`; do
	if [ -x "$PLUGIN/$f" ]; then
	    . "$PLUGIN/$f"
	    PLUGINS="$PLUGINS $f"
	    vv="${f}_VARS"
	    VARS="$VARS ${!vv}"
	fi
    done
fi

# Load site-specific settings
for v in $VARS; do
    declare "${v%%:*}"=
    case "$v" in
    *:*)
	declare "DHCP_${v%%:*}"=
	;;
    esac
done

ADDRESS="_$DEVICE,$SCHEME,"
. $NETCONF
DHCP=n

# Get IP address
IPADDR=`LANG=C /sbin/ifconfig $DEVICE | /usr/bin/sed -e '
    /inet addr/{
	s/[^:]*[: ]*\([0-9.]*\).*/\1/
	q
    }
    d'`

# Call plugins
DO_PLUGINS=
for p in $PLUGINS; do
    vv="${p}_VARS"
    for v in ${!vv}; do
	v=${v%%:*}
	if [ -n "${!v}" ]; then
	    DO_PLUGINS="$DO_PLUGINS $p"
	    break
	fi
    done
done

case "$ACTION" in
up)
    for p in $DO_PLUGINS; do
	"${p}_begin" $DEVICE
    done
    for p in $DO_PLUGINS; do
	"${p}_start" $DEVICE
    done
    ;;

down)
    for p in $DO_PLUGINS; do
	"${p}_end" $DEVICE
    done
    for p in $DO_PLUGINS; do
	"${p}_stop" $DEVICE
    done
    ;;

*)
    usage
    ;;
esac
