#!/bin/sh
#
#	$Id: ifdown,v 1.26 2000/11/16 15:58:55 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

if [ "$BOOTPROTO" = bootp ]; then
    DYNIP=pump
fi

if [ "$BOOTPROTO" = "dhcp" ]; then
    DYNIP=dhcpcd
fi

# IPv4, IPv6 or both ?
[ -n "$IPV6_ADDR" ]             && IPv6=yes || IPv6=no
[ -n "$IPADDR" -o -n "$DYNIP" ] && 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"
# detect network device type (ie. dummy, eth for dummy0, eth0 ..)
DEVICETYPE=$(echo $DEVICE | awk ' { gsub(/[0-9]*$/,NUL); print $0 } ')
# real name of device (ie. is eth0 for eth0,eth0:1,eth0:alias)
DEVICE=$(echo $DEVICE | awk ' { gsub(/:.*$/,NUL); print $0 } ')
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
    if [ "$DYNIP" = "dhcpcd" ]; then
       /sbin/dhcpcd -k $FULLDEVNAME
    fi
    ip link set ${DEVICE} down
    ip addr flush dev ${DEVICE} 2> /dev/null
fi

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

