1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!/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
|