diff options
-rw-r--r-- | src/platform/tests/monitor.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/platform/tests/monitor.c b/src/platform/tests/monitor.c index 4d721ce947..5cc3114cd9 100644 --- a/src/platform/tests/monitor.c +++ b/src/platform/tests/monitor.c @@ -10,6 +10,36 @@ NMTST_DEFINE (); +static struct { + gboolean persist; +} global_opt = { + .persist = TRUE, +}; + +static gboolean +read_argv (int *argc, char ***argv) +{ + GOptionContext *context; + GOptionEntry options[] = { + { "no-persist", 'P', G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &global_opt.persist, "Exit after processing netlink messages", NULL }, + { 0 }, + }; + gs_free_error GError *error = NULL; + + context = g_option_context_new (NULL); + g_option_context_set_summary (context, "Monitor netlink events in NMPlatform."); + g_option_context_add_main_entries (context, options, NULL); + + if (!g_option_context_parse (context, argc, argv, &error)) { + g_warning ("Error parsing command line arguments: %s", error->message); + g_option_context_free (context); + return FALSE; + } + + g_option_context_free (context); + return TRUE; +} + int main (int argc, char **argv) { @@ -20,13 +50,19 @@ main (int argc, char **argv) nmtst_init_with_logging (&argc, &argv, "DEBUG", "ALL"); + if (!read_argv (&argc, &argv)) + return 2; + nm_log_info (LOGD_PLATFORM, "platform monitor start"); loop = g_main_loop_new (NULL, FALSE); nm_linux_platform_setup (); - g_main_loop_run (loop); + if (global_opt.persist) + g_main_loop_run (loop); + + g_main_loop_unref (loop); return EXIT_SUCCESS; } |