diff options
Diffstat (limited to 'source/n/NetworkManager/55NetworkManager')
-rw-r--r-- | source/n/NetworkManager/55NetworkManager | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/source/n/NetworkManager/55NetworkManager b/source/n/NetworkManager/55NetworkManager new file mode 100644 index 00000000..f3c6df5e --- /dev/null +++ b/source/n/NetworkManager/55NetworkManager @@ -0,0 +1,42 @@ +#!/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 interaces to sleep..." + dbus_send --system \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.sleep && \ + 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.wake && \ + echo Done. || echo Failed. +} + +case "$1" in + hibernate|suspend) + suspend_nm + ;; + thaw|resume) + resume_nm + ;; + *) exit $NA + ;; +esac |