#!/bin/sh # If we are running NetworkManager, tell it we are going to sleep. # TODO: Make NetworkManager smarter about how to handle sleep/resume # If we are asleep for less time than it takes for TCP to reset a # connection, and we are assigned the same IP on resume, we should # not break established connections. Apple can do this, and it is # rather nifty. . "${PM_FUNCTIONS}" suspend_nm() { # Tell NetworkManager to shut down networking printf "Having NetworkManager put all interfaces to sleep..." dbus_send --system \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Sleep boolean:true && \ echo Done. || echo Failed. } resume_nm() { # Wake up NetworkManager and make it do a new connection printf "Having NetworkManager wake interfaces back up..." dbus_send --system \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.NetworkManager.Sleep boolean:false && \ echo Done. || echo Failed. } case "$1" in hibernate|suspend) suspend_nm ;; thaw|resume) resume_nm ;; *) exit $NA ;; esac