diff options
Diffstat (limited to 'sysconfig/network-scripts/ifdown-eth')
-rwxr-xr-x | sysconfig/network-scripts/ifdown-eth | 158 |
1 files changed, 79 insertions, 79 deletions
diff --git a/sysconfig/network-scripts/ifdown-eth b/sysconfig/network-scripts/ifdown-eth index 9808ed67..ab3507c0 100755 --- a/sysconfig/network-scripts/ifdown-eth +++ b/sysconfig/network-scripts/ifdown-eth @@ -36,50 +36,50 @@ if [ -n "${TEAM_MASTER}" ] && [ ! "${DEVICETYPE}" = "TeamPort" ] && [ -x ./ifdow fi if [ "${SLAVE}" != "yes" -o -z "${MASTER}" ]; then -if [ -n "${HWADDR}" -a -z "${MACADDR}" ]; then - FOUNDMACADDR=$(get_hwaddr ${REALDEVICE}) - if [ -n "${FOUNDMACADDR}" -a "${FOUNDMACADDR}" != "${HWADDR}" ]; then - NEWCONFIG=$(get_config_by_hwaddr ${FOUNDMACADDR}) - if [ -n "${NEWCONFIG}" ]; then - eval $(LANG=C grep -F "DEVICE=" $NEWCONFIG) - else - net_log $"Device ${DEVICE} has MAC address ${FOUNDMACADDR}, instead of configured address ${HWADDR}. Ignoring." - exit 1 - fi - if [ -n "${NEWCONFIG}" -a "${NEWCONFIG##*/}" != "${CONFIG##*/}" -a "${DEVICE}" = "${REALDEVICE}" ]; then - exec /sbin/ifdown ${NEWCONFIG} - else - net_log $"Device ${DEVICE} has MAC address ${FOUNDMACADDR}, instead of configured address ${HWADDR}. Ignoring." - exit 1 - fi + if [ -n "${HWADDR}" -a -z "${MACADDR}" ]; then + FOUNDMACADDR=$(get_hwaddr ${REALDEVICE}) + if [ -n "${FOUNDMACADDR}" -a "${FOUNDMACADDR}" != "${HWADDR}" ]; then + NEWCONFIG=$(get_config_by_hwaddr ${FOUNDMACADDR}) + if [ -n "${NEWCONFIG}" ]; then + eval $(LANG=C grep -F "DEVICE=" $NEWCONFIG) + else + net_log $"Device ${DEVICE} has MAC address ${FOUNDMACADDR}, instead of configured address ${HWADDR}. Ignoring." + exit 1 + fi + if [ -n "${NEWCONFIG}" -a "${NEWCONFIG##*/}" != "${CONFIG##*/}" -a "${DEVICE}" = "${REALDEVICE}" ]; then + exec /sbin/ifdown ${NEWCONFIG} + else + net_log $"Device ${DEVICE} has MAC address ${FOUNDMACADDR}, instead of configured address ${HWADDR}. Ignoring." + exit 1 + fi + fi fi fi -fi if is_bonding_device ${DEVICE} ; then for device in $(LANG=C grep -l "^[[:space:]]*MASTER=['\"]\?${DEVICE}['\"]\?\([[:space:]#]\|$\)" /etc/sysconfig/network-scripts/ifcfg-*) ; do - is_ignored_file "$device" && continue - /sbin/ifdown ${device##*/} + is_ignored_file "$device" && continue + /sbin/ifdown ${device##*/} done for arg in $BONDING_OPTS ; do - key=${arg%%=*}; - [[ "${key}" != "arp_ip_target" ]] && continue - value=${arg##*=}; - if [ "${value:0:1}" != "" ]; then + key=${arg%%=*}; + [[ "${key}" != "arp_ip_target" ]] && continue + value=${arg##*=}; + if [ "${value:0:1}" != "" ]; then OLDIFS=$IFS; IFS=','; for arp_ip in $value; do - if grep -q $arp_ip /sys/class/net/${DEVICE}/bonding/arp_ip_target; then + if grep -q $arp_ip /sys/class/net/${DEVICE}/bonding/arp_ip_target; then echo "-$arp_ip" > /sys/class/net/${DEVICE}/bonding/arp_ip_target - fi + fi done IFS=$OLDIFS; - else - value=${value#+}; - if grep -q $value /sys/class/net/${DEVICE}/bonding/arp_ip_target; then + else + value=${value#+}; + if grep -q $value /sys/class/net/${DEVICE}/bonding/arp_ip_target; then echo "-$value" > /sys/class/net/${DEVICE}/bonding/arp_ip_target - fi - fi + fi + fi done fi @@ -87,66 +87,66 @@ fi retcode=0 [ -n "$(pidof -x dhclient)" ] && { - for VER in "" 6 ; do - if [ -f "/var/run/dhclient$VER-${DEVICE}.pid" ]; then - dhcpid=$(cat /var/run/dhclient$VER-${DEVICE}.pid) - generate_lease_file_name $VER - if [[ "$DHCPRELEASE" = [yY1]* ]]; then - /sbin/dhclient -r -lf ${LEASEFILE} -pf /var/run/dhclient$VER-${DEVICE}.pid ${DEVICE} >/dev/null 2>&1 - retcode=$? - else - kill $dhcpid >/dev/null 2>&1 - retcode=$? - reason=STOP$VER interface=${DEVICE} /sbin/dhclient-script - fi - if [ -f "/var/run/dhclient$VER-${DEVICE}.pid" ]; then - rm -f /var/run/dhclient$VER-${DEVICE}.pid - kill $dhcpid >/dev/null 2>&1 - fi - fi - done -} +for VER in "" 6 ; do + if [ -f "/var/run/dhclient$VER-${DEVICE}.pid" ]; then + dhcpid=$(cat /var/run/dhclient$VER-${DEVICE}.pid) + generate_lease_file_name $VER + if [[ "$DHCPRELEASE" = [yY1]* ]]; then + /sbin/dhclient -r -lf ${LEASEFILE} -pf /var/run/dhclient$VER-${DEVICE}.pid ${DEVICE} >/dev/null 2>&1 + retcode=$? + else + kill $dhcpid >/dev/null 2>&1 + retcode=$? + reason=STOP$VER interface=${DEVICE} /sbin/dhclient-script + fi + if [ -f "/var/run/dhclient$VER-${DEVICE}.pid" ]; then + rm -f /var/run/dhclient$VER-${DEVICE}.pid + kill $dhcpid >/dev/null 2>&1 + fi + fi +done +} # 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 [ -d "/sys/class/net/${REALDEVICE}" ]; then - LABEL= - if [ "${REALDEVICE}" != "${DEVICE}" ]; then - LABEL="label ${DEVICE}" - fi - if [ "${REALDEVICE}" = "lo" ]; then - ip addr flush dev ${REALDEVICE} ${LABEL} scope host 2>/dev/null - else - ip addr flush dev ${REALDEVICE} ${LABEL} scope global 2>/dev/null - ip -4 addr flush dev ${REALDEVICE} ${LABEL} scope host 2>/dev/null - fi - - if [ "${SLAVE}" = "yes" -a -n "${MASTER}" ]; then - echo "-${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null - fi - - if [ "${REALDEVICE}" = "${DEVICE}" ]; then - ip link set dev ${DEVICE} down 2>/dev/null - fi + LABEL= + if [ "${REALDEVICE}" != "${DEVICE}" ]; then + LABEL="label ${DEVICE}" + fi + if [ "${REALDEVICE}" = "lo" ]; then + ip addr flush dev ${REALDEVICE} ${LABEL} scope host 2>/dev/null + else + ip addr flush dev ${REALDEVICE} ${LABEL} scope global 2>/dev/null + ip -4 addr flush dev ${REALDEVICE} ${LABEL} scope host 2>/dev/null + fi + + if [ "${SLAVE}" = "yes" -a -n "${MASTER}" ]; then + echo "-${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null + fi + + if [ "${REALDEVICE}" = "${DEVICE}" ]; then + ip link set dev ${DEVICE} down 2>/dev/null + fi fi [ "$retcode" = "0" ] && retcode=$? if [ -n "${BRIDGE}" ] && [ -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) - if [ -d /sys/class/net/${BRIDGE}/brif ] && [ $(ls -1 /sys/class/net/${BRIDGE}/brif | wc -l) -eq 0 ]; then - /usr/sbin/brctl delbr -- ${BRIDGE} - fi + /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) + if [ -d /sys/class/net/${BRIDGE}/brif ] && [ $(ls -1 /sys/class/net/${BRIDGE}/brif | wc -l) -eq 0 ]; then + /usr/sbin/brctl delbr -- ${BRIDGE} + fi fi if [ "${TYPE}" = "Tap" ]; then - TUNMODE="mode tap" - [[ ${DEVICE} == tun* ]] && TUNMODE="mode tun" - ip tuntap del ${TUNMODE} dev ${DEVICE} >/dev/null + TUNMODE="mode tap" + [[ ${DEVICE} == tun* ]] && TUNMODE="mode tun" + ip tuntap del ${TUNMODE} dev ${DEVICE} >/dev/null fi if [ -n "${TEAM_CONFIG}" ] && [ ! "${DEVICETYPE}" = "Team" ] && [ -x ./ifdown-Team ]; then @@ -174,7 +174,7 @@ fi if [ -n "$VLAN" ]; then # 802.1q VLAN if [ -f /proc/net/vlan/${DEVICE} ]; then - ip link delete ${DEVICE} type vlan + ip link delete ${DEVICE} type vlan fi fi |