diff options
author | Dan Williams <dcbw@redhat.com> | 2014-11-06 13:49:28 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-11-07 11:23:33 -0600 |
commit | b93e382f67b17152f51913d8e035925e76c3485d (patch) | |
tree | 74a456c0d907fc5737c8e6e9129869d53abc8e3e | |
parent | 4fe2fd2881549c1d6a6ca2d284b3e86b6add5c9a (diff) | |
download | NetworkManager-b93e382f67b17152f51913d8e035925e76c3485d.tar.gz |
fixup! iface-helper: add nm-iface-helper for dynamic configure-then-quit support
-rw-r--r-- | src/nm-iface-helper.c | 22 |
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; |