#!/bin/sh
#
#	$Id: ifdown,v 1.21 2000/04/03 14:50:47 baggins Exp $
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin

DEV=$1

[ -z "$DEV" ] && {
    echo "usage: ifdown <device name>" >&2
    exit 1
}

. /etc/sysconfig/network
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network-scripts/.functions

if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
	CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
else
	CONFIG="$DEV"
fi

if [ `id -u` != 0 ]; then
    if [ -x /sbin/usernetctl ]; then
        exec /sbin/usernetctl $CONFIG down
    fi
    echo "Users cannot control this device." >&2
    exit 1
fi

source_config

# IPv4, IPv6 or both ?
[ -n "$IPV6_ADDR" ]                  && IPv6=yes || IPv6=no
[ -n "$IPADDR" -o "$PUMP" = "true" ] && IPv4=yes || IPv4=no

if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
	PREFIX="`calcprefix $NETMASK`"
fi

if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
	NETMASK="`calcnetmask $PREFIX`"
fi

FULLDEVNAME="$DEVICE"
DEVICETYPE=`echo $FULLDEVNAME | sed "s/[0-9]*$//"`
DEVICE=`echo $FULLDEVNAME | sed 's/:.*//g'`
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-${DEVICETYPE}"

if [ -x $OTHERSCRIPT ]; then
    if [ "$DEFAULTHANDLING" = "yes" ]; then
        $OTHERSCRIPT $CONFIG $2
    else
	$OTHERSCRIPT $CONFIG $2
	exit $?
    fi
fi

if echo "$FULLDEVNAME" | grep -q ':' ; then
    ISALIAS=yes
else
    ISALIAS=no
fi

if [ "$ISALIAS" = "yes" ]; then
	if [ "$IPv4" = "yes" ]; then
		ip -family inet addr del ${IPADDR}/${PREFIX} dev ${DEVICE} label ${FULLDEVNAME}
	fi
		for ADDR in ${IPV6_ADDR} ; do
			ip -family inet6 addr del ${ADDR} dev ${DEVICE} label ${FULLDEVNAME}
		done
else
    ip link set ${DEVICE} down
    ip addr flush dev ${DEVICE} 2> /dev/null
fi

exec /etc/sysconfig/network-scripts/ifdown-post $CONFIG

