62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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
 |