diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c index 495262ef..53d2cf64 100644 --- a/src/main.c +++ b/src/main.c @@ -72,6 +72,7 @@ static gboolean configure_and_quit = FALSE; static struct { gboolean show_version; + gboolean print_config; gboolean become_daemon; gboolean debug; gboolean g_fatal_warnings; @@ -228,6 +229,28 @@ manager_configure_quit (NMManager *manager, gpointer user_data) configure_and_quit = TRUE; } +static int +print_config (NMConfigCmdLineOptions *config_cli) +{ + gs_unref_object NMConfig *config = NULL; + gs_free_error GError *error = NULL; + NMConfigData *config_data; + + nm_logging_setup ("OFF", "ALL", NULL, NULL); + + config = nm_config_new (config_cli, &error); + if (config == NULL) { + fprintf (stderr, _("Failed to read configuration: %s\n"), + (error && error->message) ? error->message : _("unknown")); + return 7; + } + + config_data = nm_config_get_data (config); + fprintf (stdout, "# NetworkManager configuration: %s\n", nm_config_data_get_config_description (config_data)); + nm_config_data_log (config_data, "", "", stdout); + return 0; +} + static void do_early_setup (int *argc, char **argv[], NMConfigCmdLineOptions *config_cli) { @@ -243,10 +266,10 @@ do_early_setup (int *argc, char **argv[], NMConfigCmdLineOptions *config_cli) { "pid-file", 'p', 0, G_OPTION_ARG_FILENAME, &global_opt.pidfile, N_("Specify the location of a PID file"), N_(NM_DEFAULT_PID_FILE) }, { "state-file", 0, 0, G_OPTION_ARG_FILENAME, &global_opt.state_file, N_("State file location"), N_(NM_DEFAULT_SYSTEM_STATE_FILE) }, { "run-from-build-dir", 0, 0, G_OPTION_ARG_NONE, &global_opt.run_from_build_dir, "Run from build directory", NULL }, + { "print-config", 0, 0, G_OPTION_ARG_NONE, &global_opt.print_config, N_("Print NetworkManager configuration and exit"), NULL }, {NULL} }; - config_cli = nm_config_cmd_line_options_new (); if (!nm_main_utils_early_setup ("NetworkManager", argc, argv, @@ -302,6 +325,14 @@ main (int argc, char *argv[]) exit (0); } + if (global_opt.print_config) { + int result; + + result = print_config (config_cli); + nm_config_cmd_line_options_free (config_cli); + exit (result); + } + nm_main_utils_ensure_root (); nm_main_utils_ensure_not_running_pidfile (global_opt.pidfile); @@ -423,7 +454,7 @@ main (int argc, char *argv[]) dbus_glib_global_set_disable_legacy_property_access (); nm_log_info (LOGD_CORE, "Read config: %s", nm_config_data_get_config_description (nm_config_get_data (config))); - nm_config_data_log (nm_config_get_data (config), "CONFIG: "); + nm_config_data_log (nm_config_get_data (config), "CONFIG: ", " ", NULL); nm_log_dbg (LOGD_CORE, "WEXT support is %s", #if HAVE_WEXT "enabled" |