#!/bin/sh ########################################################################## # Copyright 2001-2008 VMware, Inc. All rights reserved. -- VMware Confidential ########################################################################## ########################################################################## # DO NOT modify this file directly as it will be overwritten the next # time the VMware Tools are installed. ########################################################################## echo `date` ": Executing '$0'" echo find_networking_script() { local script="error" for dir in "/etc/init.d" "/sbin/init.d" "/etc" "/etc/rc.d" ; do if [ -d "$dir/rc0.d" ] && [ -d "$dir/rc1.d" ] && [ -d "$dir/rc2.d" ] && [ -d "$dir/rc3.d" ] && [ -d "$dir/rc4.d" ] && [ -d "$dir/rc5.d" ] && [ -d "$dir/rc6.d" ]; then # Now find the appropriate networking script. if [ -d "$dir/init.d" ]; then if [ -x "$dir/init.d/network" ]; then script="$dir/init.d/network" elif [ -x "$dir/init.d/networking" ]; then script="$dir/init.d/networking" fi else if [ -x "$dir/network" ]; then script="$dir/network" elif [ -x "$dir/networking" ]; then script="$dir/networking" fi fi fi done echo "$script" } save_active_NIC_list() { ifconfig_path=`which ifconfig 2>/dev/null` if [ $? ]; then # Add nic to the list only if it is not already there, # since suspend-vm-default might already create the list. "$ifconfig_path" | grep '^[^[:space:]]' | awk '{ print $1 }' | \ while read nic; do if ! grep -q "$nic" /var/run/vmware-active-nics 2>/dev/null; then echo "$nic" >> /var/run/vmware-active-nics fi done fi } rescue_NIC() { niclist="/var/run/vmware-active-nics" ifup_path=`which ifup 2>/dev/null`; if [ $? -ne 0 ]; then return 1; fi ifconfig_path=`which ifconfig 2>/dev/null`; if [ $? -ne 0 ]; then return 1; fi if [ -f "$niclist" ]; then while read nic; do if $ifconfig_path $nic | egrep '^ +UP ' >/dev/null 2>&1; then echo `date` "[resume-vm-default::rescue_nic] $nic is already active." else echo `date` "[rescue_nic] activating $nic ..." $ifup_path $nic fi done < $niclist rm -f $niclist fi } # # wakeNetworkManager -- # # Wake the NetworkManager daemon (maybe). # # See http://projects.gnome.org/NetworkManager/developers/spec.html . # # Results: # Sleep(false)request is sent to the NetworkManager D-Bus interface. # # Side effects: # None. # wakeNetworkManager() { # `which' may be a bit noisy, so we'll shush it. dbusSend=`which dbus-send 2>/dev/null` if [ $? -eq 0 ]; then # NetworkManager 0.6 $dbusSend --system --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.wake # NetworkManager 0.7.0 $dbusSend --system --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Sleep boolean:false fi } # # main # # Save nic list for later rescue, or we might lose the active nic after # calling '/etc/init.d/networking restart'. save_active_NIC_list scriptsdir="`dirname $0`/scripts/`basename $0`.d" if [ -d "$scriptsdir" ]; then for scriptfile in "$scriptsdir"/*; do [ -x "$scriptfile" ] && "$scriptfile" resume-vm done fi wakeNetworkManager network=`find_networking_script` if [ "$network" != "error" ]; then "$network" restart # Continue even if the networking init script wasn't successful. status=0 else echo "networking script not found" status=1 fi if [ $status -eq 0 ]; then rescue_NIC fi exit "$status"