diff options
| author | Michael Biebl <biebl@debian.org> | 2016-10-01 00:33:49 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2016-10-01 00:33:49 +0200 |
| commit | 270c4830551c9810ad4e83f9a1db2b1cb946208c (patch) | |
| tree | 5df09188f7e43b70896efb7b6e942e0b130d75d3 /clients/cli | |
| parent | 7514efc2f38c9ace4557d4e69d68e7d380389030 (diff) | |
New upstream version 1.4.2 upstream/1.4.2
Diffstat (limited to 'clients/cli')
| -rw-r--r-- | clients/cli/Makefile.in | 2 | ||||
| -rw-r--r-- | clients/cli/agent.c | 8 | ||||
| -rw-r--r-- | clients/cli/common.c | 33 | ||||
| -rw-r--r-- | clients/cli/common.h | 1 | ||||
| -rw-r--r-- | clients/cli/connections.c | 75 | ||||
| -rw-r--r-- | clients/cli/devices.c | 39 |
6 files changed, 102 insertions, 56 deletions
diff --git a/clients/cli/Makefile.in b/clients/cli/Makefile.in index beb0d697..9aae6bfe 100644 --- a/clients/cli/Makefile.in +++ b/clients/cli/Makefile.in @@ -97,7 +97,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ $(top_srcdir)/m4/ax_lib_readline.m4 \ $(top_srcdir)/m4/compiler_options.m4 \ - $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/git-sha-record.m4 \ $(top_srcdir)/m4/gnome-code-coverage.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intltool.m4 \ diff --git a/clients/cli/agent.c b/clients/cli/agent.c index bc837c72..9211d9a0 100644 --- a/clients/cli/agent.c +++ b/clients/cli/agent.c @@ -96,7 +96,8 @@ get_secrets_from_user (const char *request_id, char *pwd = NULL; /* Ask user for the password */ - g_print ("%s\n", msg); + if (msg) + g_print ("%s\n", msg); if (secret->value) { /* Prefill the password if we have it. */ rl_startup_hook = set_deftext; @@ -148,7 +149,10 @@ do_agent_secret (NmCli *nmc, int argc, char **argv) nmc->should_wait++; nm_secret_agent_simple_enable (NM_SECRET_AGENT_SIMPLE (nmc->secret_agent), NULL); - g_signal_connect (nmc->secret_agent, "request-secrets", G_CALLBACK (secrets_requested), nmc); + g_signal_connect (nmc->secret_agent, + NM_SECRET_AGENT_SIMPLE_REQUEST_SECRETS, + G_CALLBACK (secrets_requested), + nmc); g_print (_("nmcli successfully registered as a NetworkManager's secret agent.\n")); } else { g_string_printf (nmc->return_text, _("Error: secret agent initialization failed")); diff --git a/clients/cli/common.c b/clients/cli/common.c index f1ec46a1..f8dc5239 100644 --- a/clients/cli/common.c +++ b/clients/cli/common.c @@ -1058,13 +1058,15 @@ get_secrets_from_user (const char *request_id, nmc_rl_pre_input_deftext = g_strdup (secret->value); } } - g_print ("%s\n", msg); + if (msg) + g_print ("%s\n", msg); pwd = nmc_readline_echo (secret->password ? echo_on : TRUE, "%s (%s): ", secret->name, secret->prop_name); if (!pwd) pwd = g_strdup (""); } else { - g_print ("%s\n", msg); + if (msg) + g_print ("%s\n", msg); g_printerr (_("Warning: password for '%s' not given in 'passwd-file' " "and nmcli cannot ask without '--ask' option.\n"), secret->prop_name); @@ -1354,6 +1356,33 @@ nmc_rl_gen_func_basic (const char *text, int state, const char **words) return NULL; } +char * +nmc_rl_gen_func_ifnames (const char *text, int state) +{ + int i; + const GPtrArray *devices; + 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; + + ifnames = g_new (const char *, devices->len + 1); + for (i = 0; i < devices->len; i++) { + NMDevice *dev = g_ptr_array_index (devices, i); + const char *ifname = nm_device_get_iface (dev); + ifnames[i] = ifname; + } + ifnames[i] = NULL; + + ret = nmc_rl_gen_func_basic (text, state, ifnames); + + g_free (ifnames); + return ret; +} + /* for pre-filling a string to readline prompt */ char *nmc_rl_pre_input_deftext; diff --git a/clients/cli/common.h b/clients/cli/common.h index 579c44a7..114a8e63 100644 --- a/clients/cli/common.h +++ b/clients/cli/common.h @@ -65,6 +65,7 @@ void nmc_cleanup_readline (void); char *nmc_readline (const char *prompt_fmt, ...) G_GNUC_PRINTF (1, 2); char *nmc_readline_echo (gboolean echo_on, const char *prompt_fmt, ...) G_GNUC_PRINTF (2, 3); char *nmc_rl_gen_func_basic (const char *text, int state, const char **words); +char *nmc_rl_gen_func_ifnames (const char *text, int state); gboolean nmc_get_in_readline (void); void nmc_set_in_readline (gboolean in_readline); diff --git a/clients/cli/connections.c b/clients/cli/connections.c index ea7c8a79..dfd619cc 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -65,6 +65,7 @@ struct _OptionInfo { /* define some other prompts */ #define PROMPT_CON_TYPE N_("Connection type") +#define PROMPT_IFNAME N_("Interface name [*]") #define PROMPT_VPN_TYPE N_("VPN type") #define PROMPT_MASTER N_("Master") @@ -2530,7 +2531,10 @@ nmc_activate_connection (NmCli *nmc, /* Create secret agent */ nmc->secret_agent = nm_secret_agent_simple_new ("nmcli-connect"); if (nmc->secret_agent) { - g_signal_connect (nmc->secret_agent, "request-secrets", G_CALLBACK (nmc_secrets_requested), nmc); + g_signal_connect (nmc->secret_agent, + NM_SECRET_AGENT_SIMPLE_REQUEST_SECRETS, + G_CALLBACK (nmc_secrets_requested), + nmc); if (connection) { nm_secret_agent_simple_enable (NM_SECRET_AGENT_SIMPLE (nmc->secret_agent), nm_object_get_path (NM_OBJECT (connection))); @@ -3753,6 +3757,12 @@ ensure_settings (NMConnection *connection, const NameItem *item) /*----------------------------------------------------------------------------*/ +static char * +gen_func_slave_type (const char *text, int state) +{ + const char *words[] = { "bond", "team", "bridge", NULL }; + return nmc_rl_gen_func_basic (text, state, words); +} static char * gen_func_vpn_types (const char *text, int state) @@ -3804,6 +3814,12 @@ gen_func_bond_mon_mode (const char *text, int state) const char *words[] = { "miimon", "arp", NULL }; return nmc_rl_gen_func_basic (text, state, words); } +static char * +gen_func_bond_lacp_rate (const char *text, int state) +{ + const char *words[] = { "slow", "fast", NULL }; + return nmc_rl_gen_func_basic (text, state, words); +} static char * gen_func_adsl_proto (const char *text, int state) @@ -4162,11 +4178,14 @@ static OptionInfo option_info[] = { { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_TYPE, "type", OPTION_REQD, PROMPT_CON_TYPE, NULL, set_connection_type, gen_connection_types }, { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID, "con-name", OPTION_DONT_ASK, NULL, NULL, NULL, NULL }, - { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_AUTOCONNECT, "autoconnect", OPTION_DONT_ASK, NULL, NULL, NULL, gen_func_bool_values_l10n }, - { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_INTERFACE_NAME, "ifname", OPTION_REQD, N_("Interface name [*]"), NULL, set_connection_iface, NULL }, + { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_AUTOCONNECT, "autoconnect", OPTION_DONT_ASK, NULL, NULL, NULL, + gen_func_bool_values_l10n }, + { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_INTERFACE_NAME, "ifname", OPTION_REQD, PROMPT_IFNAME, NULL, + set_connection_iface, nmc_rl_gen_func_ifnames }, { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_MASTER, "master", OPTION_DONT_ASK, PROMPT_MASTER, NULL, set_connection_master, gen_func_master_ifnames }, - { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_SLAVE_TYPE, "slave-type", OPTION_DONT_ASK, NULL, NULL, NULL, NULL }, + { NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_SLAVE_TYPE, "slave-type", OPTION_DONT_ASK, NULL, NULL, NULL, + gen_func_slave_type }, { NM_SETTING_PPPOE_SETTING_NAME, NM_SETTING_PPPOE_USERNAME, "username", OPTION_REQD, N_("PPPoE username"), NULL, NULL, NULL }, { NM_SETTING_PPPOE_SETTING_NAME, NM_SETTING_PPPOE_PASSWORD, "password", OPTION_NONE, N_("Password [none]"), NULL, NULL, NULL }, { NM_SETTING_PPPOE_SETTING_NAME, NM_SETTING_PPPOE_SERVICE, "service", OPTION_NONE, N_("Service [none]"), NULL, NULL, NULL }, @@ -4196,7 +4215,7 @@ static OptionInfo option_info[] = { { NM_SETTING_BLUETOOTH_SETTING_NAME, NM_SETTING_BLUETOOTH_TYPE, "bt-type", OPTION_NONE, PROMPT_BT_TYPE, PROMPT_BT_TYPE_CHOICES, set_bluetooth_type, gen_func_bt_type }, { NM_SETTING_VLAN_SETTING_NAME, NM_SETTING_VLAN_PARENT, "dev", OPTION_REQD, N_("VLAN parent device or connection UUID"), NULL, - NULL, NULL }, + NULL, nmc_rl_gen_func_ifnames }, { NM_SETTING_VLAN_SETTING_NAME, NM_SETTING_VLAN_ID, "id", OPTION_REQD, N_("VLAN ID (<0-4094>)"), NULL, NULL, NULL }, { NM_SETTING_VLAN_SETTING_NAME, NM_SETTING_VLAN_FLAGS, "flags", OPTION_NONE, N_("VLAN flags (<0-7>) [none]"), NULL, NULL, NULL }, { NM_SETTING_VLAN_SETTING_NAME, NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, "ingress", OPTION_NONE, N_("Ingress priority maps [none]"), NULL, NULL, NULL }, @@ -4204,7 +4223,7 @@ static OptionInfo option_info[] = { { NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS, "mode", OPTION_NONE, PROMPT_BOND_MODE, "[balance-rr]", set_bond_option, gen_func_bond_mode }, { NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS, "primary", OPTION_DONT_ASK, N_("Bonding primary interface [none]"), - NULL, set_bond_option, NULL }, + NULL, set_bond_option, nmc_rl_gen_func_ifnames }, { NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS, NULL, OPTION_NONE, N_("Bonding monitoring mode"), PROMPT_BOND_MON_MODE_CHOICES, set_bond_monitoring_mode, gen_func_bond_mon_mode }, { NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS, "miimon", OPTION_DONT_ASK, N_("Bonding miimon [100]"), NULL, set_bond_option, NULL }, @@ -4215,7 +4234,7 @@ static OptionInfo option_info[] = { { NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS, "arp-ip-target", OPTION_DONT_ASK, N_("Bonding arp-ip-target [none]"), NULL, set_bond_option, NULL }, { NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS, "lacp-rate", OPTION_DONT_ASK, N_("LACP rate ('slow' or 'fast') [slow]"), NULL, - set_bond_option, NULL }, + set_bond_option, gen_func_bond_lacp_rate }, { NM_SETTING_TEAM_SETTING_NAME, NM_SETTING_TEAM_CONFIG, "config", OPTION_NONE, N_("Team JSON configuration [none]"), NULL, NULL, NULL }, { NM_SETTING_TEAM_PORT_SETTING_NAME, NM_SETTING_TEAM_PORT_CONFIG, "config", OPTION_NONE, N_("Team JSON configuration [none]"), NULL, NULL, NULL }, { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_STP, "stp", OPTION_NONE, N_("Enable STP [no]"), NULL, @@ -4225,7 +4244,7 @@ static OptionInfo option_info[] = { { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_HELLO_TIME, "hello-time", OPTION_NONE, N_("Hello time [2]"), NULL, NULL, NULL }, { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_MAX_AGE, "max-age", OPTION_NONE, N_("Max age [20]"), NULL, NULL, NULL }, { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_AGEING_TIME, "ageing-time", OPTION_NONE, N_("MAC address ageing time [300]"), NULL, NULL, NULL }, - { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_MULTICAST_SNOOPING, "multicast-snooping", OPTION_NONE, N_("Enable IGMP snooping %s [no]"), NULL, + { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_MULTICAST_SNOOPING, "multicast-snooping", OPTION_NONE, N_("Enable IGMP snooping [no]"), NULL, set_yes_no, gen_func_bool_values_l10n }, { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_BRIDGE_MAC_ADDRESS, "mac", OPTION_NONE, N_("MAC [none]"), NULL, NULL, NULL }, { NM_SETTING_BRIDGE_PORT_SETTING_NAME, NM_SETTING_BRIDGE_PORT_PRIORITY, "priority", OPTION_NONE, N_("Bridge port priority [32]"), NULL, NULL, NULL }, @@ -4244,13 +4263,15 @@ static OptionInfo option_info[] = { { NM_SETTING_ADSL_SETTING_NAME, NM_SETTING_ADSL_ENCAPSULATION, "encapsulation", OPTION_NONE, PROMPT_ADSL_ENCAP, PROMPT_ADSL_ENCAP_CHOICES, NULL, gen_func_adsl_encap }, { NM_SETTING_MACVLAN_SETTING_NAME, NM_SETTING_MACVLAN_PARENT, "dev", OPTION_REQD, N_("MACVLAN parent device or connection UUID"), NULL, - NULL, NULL }, - { NM_SETTING_MACVLAN_SETTING_NAME, NM_SETTING_MACVLAN_MODE, "mode", OPTION_REQD, PROMPT_MACVLAN_MODE, NULL, NULL, gen_func_macvlan_mode }, + NULL, nmc_rl_gen_func_ifnames }, + { NM_SETTING_MACVLAN_SETTING_NAME, NM_SETTING_MACVLAN_MODE, "mode", OPTION_REQD, PROMPT_MACVLAN_MODE, NULL, + NULL, gen_func_macvlan_mode }, { NM_SETTING_MACVLAN_SETTING_NAME, NM_SETTING_MACVLAN_TAP, "tap", OPTION_NONE, N_("Tap [no]"), NULL, set_yes_no, gen_func_bool_values_l10n }, { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_ID, "id", OPTION_REQD, N_("VXLAN ID"), NULL, NULL, NULL }, { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_REMOTE, "remote", OPTION_REQD, N_("Remote"), NULL, NULL, NULL }, - { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_PARENT, "dev", OPTION_NONE, N_("Parent device [none]"), NULL, NULL, NULL }, + { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_PARENT, "dev", OPTION_NONE, N_("Parent device [none]"), NULL, + NULL, nmc_rl_gen_func_ifnames }, { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_LOCAL, "local", OPTION_NONE, N_("Local address [none]"), NULL, NULL, NULL }, { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_SOURCE_PORT_MIN, "source-port-min", OPTION_NONE, N_("Minimum source port [0]"), NULL, NULL, NULL }, { NM_SETTING_VXLAN_SETTING_NAME, NM_SETTING_VXLAN_SOURCE_PORT_MAX, "source-port-max", OPTION_NONE, N_("Maximum source port [0]"), NULL, NULL, NULL }, @@ -4268,7 +4289,8 @@ static OptionInfo option_info[] = { { NM_SETTING_IP_TUNNEL_SETTING_NAME, NM_SETTING_IP_TUNNEL_MODE, "mode", OPTION_REQD, PROMPT_IP_TUNNEL_MODE, NULL, NULL, gen_func_ip_tunnel_mode }, { NM_SETTING_IP_TUNNEL_SETTING_NAME, NM_SETTING_IP_TUNNEL_LOCAL, "local", OPTION_NONE, N_("Local endpoint [none]"), NULL, NULL, NULL }, { NM_SETTING_IP_TUNNEL_SETTING_NAME, NM_SETTING_IP_TUNNEL_REMOTE, "remote", OPTION_REQD, N_("Remote"), NULL, NULL, NULL }, - { NM_SETTING_IP_TUNNEL_SETTING_NAME, NM_SETTING_IP_TUNNEL_PARENT, "dev", OPTION_NONE, N_("Parent device [none]"), NULL, NULL, NULL }, + { NM_SETTING_IP_TUNNEL_SETTING_NAME, NM_SETTING_IP_TUNNEL_PARENT, "dev", OPTION_NONE, N_("Parent device [none]"), NULL, + NULL, nmc_rl_gen_func_ifnames }, { NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP_CONFIG_ADDRESSES, "ip4", OPTION_MULTI, N_("IPv4 address (IP[/plen]) [none]"), NULL, set_ip4_address, NULL }, { NM_SETTING_IP4_CONFIG_SETTING_NAME, NM_SETTING_IP_CONFIG_GATEWAY, "gw4", OPTION_NONE, N_("IPv4 gateway [none]"), NULL, NULL, NULL }, @@ -4362,6 +4384,8 @@ complete_property (const gchar *setting_name, const gchar *property, const gchar run_rl_generator (gen_connection_types, prefix); else if (strcmp (property, NM_SETTING_CONNECTION_MASTER) == 0) run_rl_generator (gen_func_master_ifnames, prefix); + else if (strcmp (property, NM_SETTING_CONNECTION_INTERFACE_NAME) == 0) + run_rl_generator (nmc_rl_gen_func_ifnames, prefix); } else if ( strcmp (setting_name, NM_SETTING_VPN_SETTING_NAME) == 0 && strcmp (property, NM_SETTING_VPN_SERVICE_TYPE) == 0) run_rl_generator (gen_func_vpn_types, prefix); @@ -4382,12 +4406,21 @@ complete_property (const gchar *setting_name, const gchar *property, const gchar } else if ( strcmp (setting_name, NM_SETTING_TUN_SETTING_NAME) == 0 && strcmp (property, NM_SETTING_TUN_MODE) == 0) run_rl_generator (gen_func_tun_mode, prefix); - else if ( strcmp (setting_name, NM_SETTING_IP_TUNNEL_SETTING_NAME) == 0 - && strcmp (property, NM_SETTING_IP_TUNNEL_MODE) == 0) - run_rl_generator (gen_func_ip_tunnel_mode, prefix); - else if ( strcmp (setting_name, NM_SETTING_MACVLAN_SETTING_NAME) == 0 - && strcmp (property, NM_SETTING_MACVLAN_MODE) == 0) - run_rl_generator (gen_func_macvlan_mode, prefix); + else if (strcmp (setting_name, NM_SETTING_IP_TUNNEL_SETTING_NAME) == 0) { + if (strcmp (property, NM_SETTING_IP_TUNNEL_MODE) == 0) + run_rl_generator (gen_func_ip_tunnel_mode, prefix); + else if (strcmp (property, NM_SETTING_IP_TUNNEL_PARENT) == 0) + run_rl_generator (nmc_rl_gen_func_ifnames, prefix); + } else if (strcmp (setting_name, NM_SETTING_MACVLAN_SETTING_NAME) == 0) { + if (strcmp (property, NM_SETTING_MACVLAN_MODE) == 0) + run_rl_generator (gen_func_macvlan_mode, prefix); + else if (strcmp (property, NM_SETTING_MACVLAN_PARENT) == 0) + run_rl_generator (nmc_rl_gen_func_ifnames, prefix); + else if (strcmp (property, NM_SETTING_MACVLAN_TAP) == 0) + run_rl_generator (gen_func_bool_values_l10n, prefix); + } else if ( strcmp (setting_name, NM_SETTING_VXLAN_SETTING_NAME) == 0 + && strcmp (property, NM_SETTING_VXLAN_PARENT) == 0) + run_rl_generator (nmc_rl_gen_func_ifnames, prefix); } @@ -4602,8 +4635,8 @@ nmcli_con_add_tab_completion (const char *text, int start, int end) { char **match_array = NULL; rl_compentry_func_t *generator_func = NULL; - gs_free char *no = g_strdup_printf (": [%s]", gettext ("no")); - gs_free char *yes = g_strdup_printf (": [%s]", gettext ("yes")); + gs_free char *no = g_strdup_printf ("[%s]: ", gettext ("no")); + gs_free char *yes = g_strdup_printf ("[%s]: ", gettext ("yes")); /* Disable readline's default filename completion */ rl_attempted_completion_over = 1; @@ -4616,6 +4649,8 @@ nmcli_con_add_tab_completion (const char *text, int start, int end) if (g_str_has_prefix (rl_prompt, PROMPT_CON_TYPE)) generator_func = gen_connection_types; + else if (g_str_has_prefix (rl_prompt, PROMPT_IFNAME)) + generator_func = nmc_rl_gen_func_ifnames; else if (g_str_has_prefix (rl_prompt, PROMPT_VPN_TYPE)) generator_func = gen_func_vpn_types; else if (g_str_has_prefix (rl_prompt, PROMPT_MASTER)) diff --git a/clients/cli/devices.c b/clients/cli/devices.c index afa769f6..550f0c2e 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -1860,8 +1860,12 @@ do_device_connect (NmCli *nmc, int argc, char **argv) /* Create secret agent */ nmc->secret_agent = nm_secret_agent_simple_new ("nmcli-connect"); - if (nmc->secret_agent) - g_signal_connect (nmc->secret_agent, "request-secrets", G_CALLBACK (nmc_secrets_requested), nmc); + if (nmc->secret_agent) { + g_signal_connect (nmc->secret_agent, + NM_SECRET_AGENT_SIMPLE_REQUEST_SECRETS, + G_CALLBACK (nmc_secrets_requested), + nmc); + } info = g_malloc0 (sizeof (AddAndActivateInfo)); info->nmc = nmc; @@ -3809,33 +3813,6 @@ is_single_word (const char* line) return FALSE; } -static char * -gen_func_ifnames (const char *text, int state) -{ - int i; - const GPtrArray *devices; - 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; - - ifnames = g_new (const char *, devices->len + 1); - for (i = 0; i < devices->len; i++) { - NMDevice *dev = g_ptr_array_index (devices, i); - const char *ifname = nm_device_get_iface (dev); - ifnames[i] = ifname; - } - ifnames[i] = NULL; - - ret = nmc_rl_gen_func_basic (text, state, ifnames); - - g_free (ifnames); - return ret; -} - static char ** nmcli_device_tab_completion (const char *text, int start, int end) { @@ -3852,9 +3829,9 @@ nmcli_device_tab_completion (const char *text, int start, int end) if (!is_single_word (rl_line_buffer)) return NULL; - generator_func = gen_func_ifnames; + generator_func = nmc_rl_gen_func_ifnames; } else if (g_strcmp0 (rl_prompt, PROMPT_INTERFACES) == 0) { - generator_func = gen_func_ifnames; + generator_func = nmc_rl_gen_func_ifnames; } if (generator_func) |