summaryrefslogtreecommitdiffstats
path: root/dkms-modules-info/2.6.33-desktop586-0.rc8.1mnb/adv717x.description
blob: e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (plain)

a> 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
#!/bin/bash

. /etc/init.d/functions

cd /etc/sysconfig/network-scripts
. network-functions

[ -f ../network ] && . ../network

CONFIG=$1

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

need_config $CONFIG

[ -f "$CONFIG" ] || {
    echo $"usage: ifdown <device name>" >&2
    exit 1
}

if [ $UID != 0 ]; then
    if [ -x /usr/sbin/usernetctl ]; then
	source_config
	if /usr/sbin/usernetctl ${CONFIG} report ; then
	    exec /usr/sbin/usernetctl ${CONFIG} down
	fi
    fi
    echo $"Users cannot control this device." >&2
    exit 1
fi

source_config

if [ -x /sbin/ifdown-pre-local ]; then
    /sbin/ifdown-pre-local ${DEVICE}
fi

OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-${DEVICETYPE}"

if [ -x $OTHERSCRIPT ]; then
	exec $OTHERSCRIPT $CONFIG $2
fi

if [ -n "${BRIDGE}" -a -x /usr/sbin/brctl ]; then
      /sbin/ip link set dev ${DEVICE} down
      /usr/sbin/brctl delif ${BRIDGE} ${DEVICE}
      # Upon removing a device from a bridge,
      # it's necessary to make radvd reload its config
      [ -r /var/run/radvd/radvd.pid ] && kill -HUP `cat /var/run/radvd/radvd.pid`
      exit 0
fi 

. /etc/sysconfig/network

# Check to make sure the device is actually up
check_device_down ${DEVICE} && [ "$BOOTPROTO" != "dhcp" -a "$BOOTPROTO" != "bootp" ] && [ -n "$VLAN" -a "$VLAN" != "yes" ] && exit 0

if [ -n "${HWADDR}" -a -z "${MACADDR}" ]; then
    FOUNDMACADDR=`get_hwaddr ${REALDEVICE}`
    if [ "${FOUNDMACADDR}" != "${HWADDR}" ]; then
        NEWCONFIG=`fgrep -il "HWADDR=${HWADDR}" /etc/sysconfig/network-scripts/ifcfg-*`
	if [ -n "${NEWCONFIG}" -a "${NEWCONFIG}" != "${CONFIG}" ]; then
	   exec /sbin/ifdown ${NEWCONFIG}
	else
	   echo $"Device ${DEVICE} has different MAC address than expected, ignoring."
	   exit 1
	fi
    fi
fi

if [ "${NETWORKING_IPV6}" = "yes" ]; then
    /etc/sysconfig/network-scripts/ifdown-ipv6 ${CONFIG}
fi

retcode=0
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
	[ -n "`pidof -x dhclient`" ] && {
		if [ -f "/var/run/dhclient-${DEVICE}.pid" ]; then
		   kill `cat /var/run/dhclient-${DEVICE}.pid` >/dev/null 2>&1
		   retcode=$?
		fi
	}	
	[ -n "`pidof -x dhcpcd`" ] && {
		if [ -f "/etc/dhcpc/dhcpcd-${DEVICE}.pid" ]; then
		   kill `cat /etc/dhcpc/dhcpcd-${DEVICE}.pid` >/dev/null 2>&1
		   retcode=$?
		elif [ -f "/var/run/dhcpcd-${DEVICE}.pid" ]; then
		   kill `cat /var/run/dhcpcd-${DEVICE}.pid` >/dev/null 2>&1
		   retcode=$?
		fi
	}	
	[ -n "`pidof -x pump`" ] && {
	 	pump -r -i ${DEVICE}
		retcode=$?
	}
else
	# we can't just delete the configured address because that address
	# may have been changed in the config file since the device was
	# brought up.  Flush all addresses associated with this
	# instance instead.
	if [ "${REALDEVICE}" = "${DEVICE}" ]; then
		ip addr flush dev ${REALDEVICE} 2>/dev/null
	else
		ip addr flush dev ${REALDEVICE} label ${DEVICE} 2>/dev/null
	fi
fi

if [ "${REALDEVICE}" = "${DEVICE}" ]; then
  ip link set dev ${DEVICE} down
fi
[ "$retcode" = "0" ] && retcode=$?

# wait up to 5 seconds for device to actually come down...
waited=0
while ! check_device_down ${DEVICE} && [ "$waited" -lt 50 ] ; do
    usleep 10000
    waited=$(($waited+1))
done

# don't leave an outdated key sitting around
if [ -n "${WIRELESS_ENC_KEY}" -a -x /sbin/iwconfig ]; then
    /sbin/iwconfig ${DEVICE} enc 0 >/dev/null 2>&1
fi

if [ "$retcode" = 0 ] ; then
    /etc/sysconfig/network-scripts/ifdown-post $CONFIG
    # do NOT use $? because ifdown should return whether or not
    # the interface went down.
fi

if [ "$TYPE" = "Bridge" -a -x /usr/sbin/brctl ]; then
    /usr/sbin/brctl delbr ${DEVICE}
fi

if [ -n "$VLAN" -a -x /sbin/vconfig ]; then
    # 802.1q VLAN
    if echo ${DEVICE} | LANG=C egrep -v '(:)' | LANG=C egrep -q 'eth[0-9][0-9]*\.[0-9][0-9]?[0-9]?[0-9]?' ; then
	[ -f /proc/net/vlan/${DEVICE} ] && {
	    /sbin/vconfig rem ${DEVICE}
	}
    fi
fi

exit $retcode