summaryrefslogtreecommitdiff
path: root/source/n/NetworkManager/55NetworkManager
diff options
context:
space:
mode:
Diffstat (limited to 'source/n/NetworkManager/55NetworkManager')
-rw-r--r--source/n/NetworkManager/55NetworkManager42
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