#!/bin/sh
#
# planetplugin: Calls planet plugin
#
# Author: Shun-ichi TAHARA <jado@flowernet.gr.jp>
# Time-stamp: <04/03/15 22:39:15 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=
for f in $PLUGIN/*; do
    if [ -x "$f" ]; then
	. "$f"
	n="${f##*/}"
	vv="${n}_VARS"
	PLUGINS="$PLUGINS $n"
	VARS="$VARS ${!vv}"
    fi
done

# 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
