summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-11-06 13:49:28 -0600
committerDan Williams <dcbw@redhat.com>2014-11-07 11:23:33 -0600
commitb93e382f67b17152f51913d8e035925e76c3485d (patch)
tree74a456c0d907fc5737c8e6e9129869d53abc8e3e
parent4fe2fd2881549c1d6a6ca2d284b3e86b6add5c9a (diff)
downloadNetworkManager-b93e382f67b17152f51913d8e035925e76c3485d.tar.gz
fixup! iface-helper: add nm-iface-helper for dynamic configure-then-quit support
-rw-r--r--src/nm-iface-helper.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/nm-iface-helper.c b/src/nm-iface-helper.c
index 81a44b040a..6ca72c2c18 100644
--- a/src/nm-iface-helper.c
+++ b/src/nm-iface-helper.c
@@ -20,6 +20,7 @@
#include <config.h>
#include <glib.h>
+#include <glib-unix.h>
#include <getopt.h>
#include <locale.h>
#include <errno.h>
@@ -241,6 +242,24 @@ rdisc_ra_timeout (NMRDisc *rdisc, gpointer user_data)
nm_log_warn (LOGD_IP6, "(%s): IPv6 timed out or failed", iface);
}
+static gboolean
+quit_handler (gpointer user_data)
+{
+ gboolean *quit_early_ptr = user_data;
+
+ *quit_early_ptr = TRUE;
+ g_main_loop_quit (main_loop);
+ return G_SOURCE_CONTINUE;
+}
+
+static void
+setup_signals (gboolean *quit_early_ptr)
+{
+ signal (SIGPIPE, SIG_IGN);
+ g_unix_signal_add (SIGINT, quit_handler, quit_early_ptr);
+ g_unix_signal_add (SIGTERM, quit_handler, quit_early_ptr);
+}
+
int
main (int argc, char *argv[])
{
@@ -350,8 +369,7 @@ main (int argc, char *argv[])
/* Set up unix signal handling - before creating threads, but after daemonizing! */
main_loop = g_main_loop_new (NULL, FALSE);
- if (!nm_main_utils_setup_signals (main_loop, &quit_early))
- exit (1);
+ setup_signals (&quit_early);
if (g_fatal_warnings) {
GLogLevelFlags fatal_mask;