#!/bin/sh # If we are running dhclient, shutdown running instances cleanly and # bring them back up on resume. . "${PM_FUNCTIONS}" PM_DHCLIENT_RUNDIR="${PM_UTILS_RUNDIR}/network" PM_DHCLIENT_SUSPEND="${PM_DHCLIENT_RUNDIR}/dhclient.suspend" suspend_dhclient() { [ ! -d /etc/sysconfig/network-scripts ] && return [ ! -x /sbin/ifdown ] && return [ ! -d ${PM_DHCLIENT_RUNDIR} ] && /bin/mkdir -p ${PM_DHCLIENT_RUNDIR} [ -f ${PM_DHCLIENT_SUSPEND} ] && /bin/rm -f ${PM_DHCLIENT_SUSPEND} cd /etc/sysconfig/network-scripts for ifcfg in ifcfg-* ; do # Clear relevant parameters set by previous interface # (lo doesn't set them) NM_CONTROLLED= BOOTPROTO= . ./"${ifcfg}" if [ "${NM_CONTROLLED}" = "no" ] || [ "${NM_CONTROLLED}" = "n" ] || [ "${NM_CONTROLLED}" = "false" ]; then if [ "${BOOTPROTO}" = "bootp" ] || [ "${BOOTPROTO}" = "dhcp" ] || [ -z "${BOOTPROTO}" ]; then # device is not NetworkManager controlled and uses dhcp, # now see if it's actually up at the moment /sbin/ip link show ${DEVICE} | /bin/grep -qE "state (UP|UNKNOWN)" >/dev/null 2>&1 if [ $? -eq 0 ]; then echo "${DEVICE}" >> ${PM_DHCLIENT_SUSPEND} /sbin/ifdown ${DEVICE} fi fi fi done } resume_dhclient() { [ ! -f ${PM_DHCLIENT_SUSPEND} ] && return [ ! -x /sbin/ifup ] && return cd /etc/sysconfig/network-scripts while read device ; do /sbin/ifup ${device} done < ${PM_DHCLIENT_SUSPEND} /bin/rm -f ${PM_DHCLIENT_SUSPEND} } case "$1" in hibernate|suspend) suspend_dhclient ;; thaw|resume) resume_dhclient ;; *) exit $NA ;; esac