mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-06 19:00:16 +01:00
cli: use nmc_do_cmd to get the client and check if the daemon is running
The makes use of asynchronous client initialization, making things a bit faster and reduces code duplication too.
This commit is contained in:
parent
3ee03afecc
commit
01a20015e0
7 changed files with 54 additions and 142 deletions
|
|
@ -209,24 +209,15 @@ do_agent_all (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
|
||||
static const NMCCommand agent_cmds[] = {
|
||||
{ "secret", do_agent_secret, usage_agent_secret, FALSE },
|
||||
{ "polkit", do_agent_polkit, usage_agent_polkit, FALSE },
|
||||
{ "all", do_agent_all, usage_agent_all, FALSE },
|
||||
{ NULL, do_agent_all, usage, FALSE },
|
||||
{ "secret", do_agent_secret, usage_agent_secret, TRUE, TRUE },
|
||||
{ "polkit", do_agent_polkit, usage_agent_polkit, TRUE, TRUE },
|
||||
{ "all", do_agent_all, usage_agent_all, TRUE, TRUE },
|
||||
{ NULL, do_agent_all, usage, TRUE, TRUE },
|
||||
};
|
||||
|
||||
NMCResultCode
|
||||
do_agent (NmCli *nmc, int argc, char **argv)
|
||||
{
|
||||
/* Get NMClient object */
|
||||
nmc->get_client (nmc);
|
||||
|
||||
/* Check whether NetworkManager is running */
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
|
||||
return NMC_RESULT_ERROR_NM_NOT_RUNNING;
|
||||
}
|
||||
|
||||
nmc_do_cmd (nmc, agent_cmds, *argv, argc, argv);
|
||||
|
||||
return nmc->return_value;
|
||||
|
|
|
|||
|
|
@ -1487,7 +1487,6 @@ nmc_rl_gen_func_ifnames (const char *text, int state)
|
|||
const char **ifnames;
|
||||
char *ret;
|
||||
|
||||
nm_cli.get_client (&nm_cli);
|
||||
devices = nm_client_get_devices (nm_cli.client);
|
||||
if (devices->len == 0)
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -8796,20 +8796,20 @@ nmcli_con_tab_completion (const char *text, int start, int end)
|
|||
}
|
||||
|
||||
static const NMCCommand connection_cmds[] = {
|
||||
{ "show", do_connections_show, usage_connection_show, FALSE },
|
||||
{ "up", do_connection_up, usage_connection_up, FALSE },
|
||||
{ "down", do_connection_down, usage_connection_down, FALSE },
|
||||
{ "add", do_connection_add, usage_connection_add, FALSE },
|
||||
{ "edit", do_connection_edit, usage_connection_edit, FALSE },
|
||||
{ "delete", do_connection_delete, usage_connection_delete, FALSE },
|
||||
{ "reload", do_connection_reload, usage_connection_reload, FALSE },
|
||||
{ "load", do_connection_load, usage_connection_load, FALSE },
|
||||
{ "modify", do_connection_modify, usage_connection_modify, FALSE },
|
||||
{ "clone", do_connection_clone, usage_connection_clone, FALSE },
|
||||
{ "import", do_connection_import, usage_connection_import, FALSE },
|
||||
{ "export", do_connection_export, usage_connection_export, FALSE },
|
||||
{ "monitor", do_connection_monitor, usage_connection_monitor, FALSE },
|
||||
{ NULL, do_connections_show, usage, FALSE },
|
||||
{ "show", do_connections_show, usage_connection_show, TRUE, TRUE },
|
||||
{ "up", do_connection_up, usage_connection_up, TRUE, TRUE },
|
||||
{ "down", do_connection_down, usage_connection_down, TRUE, TRUE },
|
||||
{ "add", do_connection_add, usage_connection_add, TRUE, TRUE },
|
||||
{ "edit", do_connection_edit, usage_connection_edit, TRUE, TRUE },
|
||||
{ "delete", do_connection_delete, usage_connection_delete, TRUE, TRUE },
|
||||
{ "reload", do_connection_reload, usage_connection_reload, TRUE, TRUE },
|
||||
{ "load", do_connection_load, usage_connection_load, TRUE, TRUE },
|
||||
{ "modify", do_connection_modify, usage_connection_modify, TRUE, TRUE },
|
||||
{ "clone", do_connection_clone, usage_connection_clone, TRUE, TRUE },
|
||||
{ "import", do_connection_import, usage_connection_import, TRUE, TRUE },
|
||||
{ "export", do_connection_export, usage_connection_export, TRUE, TRUE },
|
||||
{ "monitor", do_connection_monitor, usage_connection_monitor, TRUE, TRUE },
|
||||
{ NULL, do_connections_show, usage, TRUE, TRUE },
|
||||
};
|
||||
|
||||
/* Entry point function for connections-related commands: 'nmcli connection' */
|
||||
|
|
@ -8822,18 +8822,6 @@ do_connections (NmCli *nmc, int argc, char **argv)
|
|||
/* Set completion function for 'nmcli con' */
|
||||
rl_attempted_completion_function = (rl_completion_func_t *) nmcli_con_tab_completion;
|
||||
|
||||
/* Get NMClient object early */
|
||||
nmc->get_client (nmc);
|
||||
|
||||
/* Check whether NetworkManager is running */
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
if (!nmc->complete) {
|
||||
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING;
|
||||
}
|
||||
return nmc->return_value;
|
||||
}
|
||||
|
||||
nmc_do_cmd (nmc, connection_cmds, *argv, argc, argv);
|
||||
|
||||
return nmc->return_value;
|
||||
|
|
|
|||
|
|
@ -3607,11 +3607,11 @@ finish:
|
|||
}
|
||||
|
||||
static NMCCommand device_wifi_cmds[] = {
|
||||
{ "list", do_device_wifi_list, NULL, FALSE },
|
||||
{ "connect", do_device_wifi_connect_network, NULL, FALSE },
|
||||
{ "hotspot", do_device_wifi_hotspot, NULL, FALSE },
|
||||
{ "rescan", do_device_wifi_rescan, NULL, FALSE },
|
||||
{ NULL, do_device_wifi_list, NULL, FALSE },
|
||||
{ "list", do_device_wifi_list, NULL, TRUE, TRUE },
|
||||
{ "connect", do_device_wifi_connect_network, NULL, TRUE, TRUE },
|
||||
{ "hotspot", do_device_wifi_hotspot, NULL, TRUE, TRUE },
|
||||
{ "rescan", do_device_wifi_rescan, NULL, TRUE, TRUE },
|
||||
{ NULL, do_device_wifi_list, NULL, TRUE, TRUE },
|
||||
};
|
||||
|
||||
static NMCResultCode
|
||||
|
|
@ -3782,8 +3782,8 @@ do_device_lldp_list (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
|
||||
static NMCCommand device_lldp_cmds[] = {
|
||||
{ "list", do_device_lldp_list, NULL, FALSE },
|
||||
{ NULL, do_device_lldp_list, NULL, FALSE },
|
||||
{ "list", do_device_lldp_list, NULL, TRUE, TRUE },
|
||||
{ NULL, do_device_lldp_list, NULL, TRUE, TRUE },
|
||||
};
|
||||
|
||||
static NMCResultCode
|
||||
|
|
@ -3848,18 +3848,18 @@ nmcli_device_tab_completion (const char *text, int start, int end)
|
|||
}
|
||||
|
||||
static const NMCCommand device_cmds[] = {
|
||||
{ "status", do_devices_status, usage_device_status, FALSE },
|
||||
{ "show", do_device_show, usage_device_show, FALSE },
|
||||
{ "connect", do_device_connect, usage_device_connect, FALSE },
|
||||
{ "reapply", do_device_reapply, usage_device_reapply, FALSE },
|
||||
{ "disconnect", do_devices_disconnect, usage_device_disconnect, FALSE },
|
||||
{ "delete", do_devices_delete, usage_device_delete, FALSE },
|
||||
{ "set", do_device_set, usage_device_set, FALSE },
|
||||
{ "monitor", do_devices_monitor, usage_device_monitor, FALSE },
|
||||
{ "wifi", do_device_wifi, usage_device_wifi, FALSE },
|
||||
{ "lldp", do_device_lldp, usage_device_lldp, FALSE },
|
||||
{ "modify", do_device_modify, usage_device_modify, FALSE },
|
||||
{ NULL, do_devices_status, usage, FALSE },
|
||||
{ "status", do_devices_status, usage_device_status, TRUE, TRUE },
|
||||
{ "show", do_device_show, usage_device_show, TRUE, TRUE },
|
||||
{ "connect", do_device_connect, usage_device_connect, TRUE, TRUE },
|
||||
{ "reapply", do_device_reapply, usage_device_reapply, TRUE, TRUE },
|
||||
{ "disconnect", do_devices_disconnect, usage_device_disconnect, TRUE, TRUE },
|
||||
{ "delete", do_devices_delete, usage_device_delete, TRUE, TRUE },
|
||||
{ "set", do_device_set, usage_device_set, TRUE, TRUE },
|
||||
{ "monitor", do_devices_monitor, usage_device_monitor, TRUE, TRUE },
|
||||
{ "wifi", do_device_wifi, usage_device_wifi, FALSE, FALSE },
|
||||
{ "lldp", do_device_lldp, usage_device_lldp, FALSE, FALSE },
|
||||
{ "modify", do_device_modify, usage_device_modify, TRUE, TRUE },
|
||||
{ NULL, do_devices_status, usage, TRUE, TRUE },
|
||||
};
|
||||
|
||||
NMCResultCode
|
||||
|
|
@ -3870,15 +3870,6 @@ do_devices (NmCli *nmc, int argc, char **argv)
|
|||
|
||||
rl_attempted_completion_function = (rl_completion_func_t *) nmcli_device_tab_completion;
|
||||
|
||||
/* Get NMClient object early */
|
||||
nmc->get_client (nmc);
|
||||
|
||||
/* Check whether NetworkManager is running */
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
|
||||
return NMC_RESULT_ERROR_NM_NOT_RUNNING;
|
||||
}
|
||||
|
||||
nmc_do_cmd (nmc, device_cmds, *argv, argc, argv);
|
||||
|
||||
return nmc->return_value;
|
||||
|
|
|
|||
|
|
@ -340,14 +340,6 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
state = nm_client_get_state (nmc->client);
|
||||
startup = nm_client_get_startup (nmc->client);
|
||||
connectivity = nm_client_get_connectivity (nmc->client);
|
||||
|
|
@ -490,14 +482,6 @@ show_nm_permissions (NmCli *nmc)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
nmc->print_fields.header_name = _("NetworkManager permissions");
|
||||
arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES);
|
||||
g_ptr_array_add (nmc->output_data, arr);
|
||||
|
|
@ -562,7 +546,6 @@ show_general_logging (NmCli *nmc)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_get_logging (nmc->client, &level, &domains, &error);
|
||||
if (error) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||
|
|
@ -618,7 +601,6 @@ do_general_logging (NmCli *nmc, int argc, char **argv)
|
|||
return error->code;
|
||||
}
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_set_logging (nmc->client, level, domains, &error);
|
||||
if (error) {
|
||||
g_string_printf (nmc->return_text, _("Error: failed to set logging: %s"),
|
||||
|
|
@ -656,7 +638,6 @@ do_general_hostname (NmCli *nmc, int argc, char **argv)
|
|||
/* no arguments -> get hostname */
|
||||
char *hostname = NULL;
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &hostname, NULL);
|
||||
if (hostname)
|
||||
g_print ("%s\n", hostname);
|
||||
|
|
@ -669,7 +650,6 @@ do_general_hostname (NmCli *nmc, int argc, char **argv)
|
|||
g_print ("Warning: ignoring extra garbage after '%s' hostname\n", hostname);
|
||||
|
||||
nmc->should_wait++;
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_save_hostname_async (nmc->client, hostname, NULL, save_hostname_cb, nmc);
|
||||
}
|
||||
|
||||
|
|
@ -678,11 +658,11 @@ do_general_hostname (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
|
||||
static const NMCCommand general_cmds[] = {
|
||||
{ "status", do_general_status, usage_general_status, FALSE },
|
||||
{ "hostname", do_general_hostname, usage_general_hostname, FALSE },
|
||||
{ "permissions", do_general_permissions, usage_general_permissions, FALSE },
|
||||
{ "logging", do_general_logging, usage_general_logging, FALSE },
|
||||
{ NULL, do_general_status, usage_general, FALSE },
|
||||
{ "status", do_general_status, usage_general_status, TRUE, TRUE },
|
||||
{ "hostname", do_general_hostname, usage_general_hostname, TRUE, TRUE },
|
||||
{ "permissions", do_general_permissions, usage_general_permissions, TRUE, TRUE },
|
||||
{ "logging", do_general_logging, usage_general_logging, TRUE, TRUE },
|
||||
{ NULL, do_general_status, usage_general, TRUE, TRUE },
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -788,7 +768,6 @@ do_networking (NmCli *nmc, int argc, char **argv)
|
|||
} else if (matches (*argv, "check") == 0) {
|
||||
GError *error = NULL;
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_check_connectivity (nmc->client, NULL, &error);
|
||||
if (error) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||
|
|
@ -812,7 +791,6 @@ do_networking (NmCli *nmc, int argc, char **argv)
|
|||
goto finish;
|
||||
}
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_networking_set_enabled (nmc->client, enable_flag, NULL);
|
||||
} else {
|
||||
if (nmc->complete)
|
||||
|
|
@ -854,7 +832,6 @@ do_radio_all (NmCli *nmc, int argc, char **argv)
|
|||
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
||||
return nmc->return_value;
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_wireless_set_enabled (nmc->client, enable_flag);
|
||||
nm_client_wimax_set_enabled (nmc->client, enable_flag);
|
||||
nm_client_wwan_set_enabled (nmc->client, enable_flag);
|
||||
|
|
@ -883,7 +860,6 @@ do_radio_wifi (NmCli *nmc, int argc, char **argv)
|
|||
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
||||
return nmc->return_value;
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_wireless_set_enabled (nmc->client, enable_flag);
|
||||
}
|
||||
|
||||
|
|
@ -910,7 +886,6 @@ do_radio_wwan (NmCli *nmc, int argc, char **argv)
|
|||
if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
|
||||
return nmc->return_value;
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
nm_client_wwan_set_enabled (nmc->client, enable_flag);
|
||||
}
|
||||
|
||||
|
|
@ -918,10 +893,10 @@ do_radio_wwan (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
|
||||
static const NMCCommand radio_cmds[] = {
|
||||
{ "all", do_radio_all, usage_radio_all, FALSE },
|
||||
{ "wifi", do_radio_wifi, usage_radio_wifi, FALSE },
|
||||
{ "wwan", do_radio_wwan, usage_radio_wwan, FALSE },
|
||||
{ NULL, do_radio_all, usage_radio, FALSE },
|
||||
{ "all", do_radio_all, usage_radio_all, TRUE, TRUE },
|
||||
{ "wifi", do_radio_wifi, usage_radio_wifi, TRUE, TRUE },
|
||||
{ "wwan", do_radio_wwan, usage_radio_wwan, TRUE, TRUE },
|
||||
{ NULL, do_radio_all, usage_radio, TRUE, TRUE },
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -1157,15 +1132,6 @@ do_overview (NmCli *nmc, int argc, char **argv)
|
|||
/* Register polkit agent */
|
||||
nmc_start_polkit_agent_start_try (nmc);
|
||||
|
||||
/* Get NMClient object early */
|
||||
nmc->get_client (nmc);
|
||||
|
||||
/* Check whether NetworkManager is running */
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
|
||||
return NMC_RESULT_ERROR_NM_NOT_RUNNING;
|
||||
}
|
||||
|
||||
/* The VPN connections don't have devices (yet?). */
|
||||
p = nm_client_get_active_connections (nmc->client);
|
||||
for (i = 0; i < p->len; i++) {
|
||||
|
|
@ -1242,8 +1208,6 @@ do_monitor (NmCli *nmc, int argc, char **argv)
|
|||
return nmc->return_value;
|
||||
}
|
||||
|
||||
nmc->get_client (nmc); /* create NMClient */
|
||||
|
||||
if (!nm_client_get_nm_running (nmc->client)) {
|
||||
char *str;
|
||||
|
||||
|
|
|
|||
|
|
@ -205,14 +205,14 @@ usage (void)
|
|||
}
|
||||
|
||||
static const NMCCommand nmcli_cmds[] = {
|
||||
{ "general", do_general, NULL, FALSE },
|
||||
{ "monitor", do_monitor, NULL, FALSE },
|
||||
{ "networking", do_networking, NULL, FALSE },
|
||||
{ "radio", do_radio, NULL, FALSE },
|
||||
{ "connection", do_connections, NULL, FALSE },
|
||||
{ "device", do_devices, NULL, FALSE },
|
||||
{ "agent", do_agent, NULL, FALSE },
|
||||
{ NULL, do_overview, usage, FALSE },
|
||||
{ "general", do_general, NULL, FALSE, FALSE },
|
||||
{ "monitor", do_monitor, NULL, TRUE, FALSE },
|
||||
{ "networking", do_networking, NULL, FALSE, FALSE },
|
||||
{ "radio", do_radio, NULL, FALSE, FALSE },
|
||||
{ "connection", do_connections, NULL, FALSE, FALSE },
|
||||
{ "device", do_devices, NULL, FALSE, FALSE },
|
||||
{ "agent", do_agent, NULL, FALSE, FALSE },
|
||||
{ NULL, do_overview, usage, TRUE, TRUE },
|
||||
};
|
||||
|
||||
static gboolean
|
||||
|
|
@ -514,29 +514,11 @@ nmc_value_transforms_register (void)
|
|||
nmc_convert_bytes_to_string);
|
||||
}
|
||||
|
||||
static NMClient *
|
||||
nmc_get_client (NmCli *nmc)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if (!nmc->client) {
|
||||
nmc->client = nm_client_new (NULL, &error);
|
||||
if (!nmc->client) {
|
||||
g_printerr ("%s\n", error->message);
|
||||
g_clear_error (&error);
|
||||
exit (NMC_RESULT_ERROR_UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
return nmc->client;
|
||||
}
|
||||
|
||||
/* Initialize NmCli structure - set default values */
|
||||
static void
|
||||
nmc_init (NmCli *nmc)
|
||||
{
|
||||
nmc->client = NULL;
|
||||
nmc->get_client = &nmc_get_client;
|
||||
|
||||
nmc->return_value = NMC_RESULT_SUCCESS;
|
||||
nmc->return_text = g_string_new (_("Success"));
|
||||
|
|
@ -592,8 +574,6 @@ nmc_cleanup (NmCli *nmc)
|
|||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
ArgsInfo args_info = { &nm_cli, argc, argv };
|
||||
|
||||
/* Set locale to use environment variables */
|
||||
setlocale (LC_ALL, "");
|
||||
|
||||
|
|
|
|||
|
|
@ -132,7 +132,6 @@ typedef enum {
|
|||
/* NmCli - main structure */
|
||||
typedef struct _NmCli {
|
||||
NMClient *client; /* Pointer to NMClient of libnm */
|
||||
NMClient *(*get_client) (struct _NmCli *nmc); /* Pointer to function for creating NMClient */
|
||||
|
||||
NMCResultCode return_value; /* Return code of nmcli */
|
||||
GString *return_text; /* Reason text */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue