#!/bin/sh
#
# netplug - policy agent for netplugd
#
# Copyright 2003 Key Research, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2, as
# published by the Free Software Foundation.  You are forbidden from
# redistributing or modifying it under the terms of any other license,
# including other versions of the GNU General Public License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.


PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

dev="$1"
action="$2"

case "$action" in
in)
    if [ -x /sbin/ifup ]; then
	exec /sbin/ifup $dev
    else
	echo "Please teach me how to plug in an interface!" 1>&2
	exit 1
    fi
    ;;
out)
    if [ -x /sbin/ifdown ]; then
	# At least on Fedora Core 1, the call to ip addr flush infloops
	# /sbin/ifdown $dev && exec /sbin/ip addr flush $dev
	exec /sbin/ifdown $dev
    else
	echo "Please teach me how to unplug an interface!" 1>&2
	exit 1
    fi
    ;;
probe)
    # exec /sbin/ip link set $dev up >/dev/null 2>&1
    if [ -x /sbin/ifconfig ]; then
	exec /sbin/ifconfig $dev up >/dev/null 2>&1
    else
	echo "Failed to probe an interface!" 1>&2
	exit 1
    fi
    ;;
*)
    echo "I have been called with a funny action of '%s'!" 1>&2
    exit 1
    ;;
esac
