diff options
author | Francesco Giudici <fgiudici@redhat.com> | 2016-03-07 10:54:59 +0100 |
---|---|---|
committer | Francesco Giudici <fgiudici@redhat.com> | 2016-03-07 11:48:18 +0100 |
commit | bad7e47c8c406be5fafc3a951ee2c458c8e77ff5 (patch) | |
tree | b840abe93cc56eb0f4337f18326cce46e29dc791 | |
parent | fb8fe1d8cb452d203c8cf0941c2a82e5903a0c8a (diff) | |
download | NetworkManager-fg/nmcli-team-bgo762334.tar.gz |
nmcli: check for ip settings is now the default case for connection editing.fg/nmcli-team-bgo762334
make the "no-slave" settings (i.e., ipv4 and ipv6) as the default case
in the check_valid_name() function, so that it is no more required to
retrieve and pass the "no-slave" settings when the connection.slave-type
parameter is empty.
-rw-r--r-- | clients/cli/connections.c | 78 |
1 files changed, 42 insertions, 36 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index d46588696a..59f6c96ea2 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -2864,6 +2864,22 @@ get_name_alias (const char *name, const NameItem array[]) return name; } +static const NameItem * +get_valid_settings_array (const char *con_type) +{ + guint i, num; + + if (!con_type) + return NULL; + + num = G_N_ELEMENTS (nmc_valid_connection_types); + for (i = 0; i < num; i++) { + if (nm_streq0 (con_type, nmc_valid_connection_types[i].name)) + return nmc_valid_connection_types[i].settings; + } + return NULL; +} + /* * Construct a string with names and aliases from the arrays formatted as: * "name (alias), name, name (alias), name, name" @@ -2879,6 +2895,9 @@ get_valid_options_string (const NameItem *array, const NameItem *array_slv) str = g_string_sized_new (150); + if ((!array_slv) && (array != nmc_valid_connection_types)) + array_slv = get_valid_settings_array ("no-slave"); + for (i = 0; i < 2; i++, iter = array_slv) { while (iter && iter->name) { if (str->len) @@ -2893,22 +2912,6 @@ get_valid_options_string (const NameItem *array, const NameItem *array_slv) return g_string_free (str, FALSE); } -static const NameItem * -get_valid_settings_array (const char *con_type) -{ - guint i, num; - - if (!con_type) - return NULL; - - num = G_N_ELEMENTS (nmc_valid_connection_types); - for (i = 0; i < num; i++) { - if (nm_streq0 (con_type, nmc_valid_connection_types[i].name)) - return nmc_valid_connection_types[i].settings; - } - return NULL; -} - /* * Check if 'val' is valid string in either array->name or array->alias for * both array parameters (array & array_slv). @@ -2930,6 +2933,9 @@ check_valid_name (const char *val, const NameItem *array, const NameItem *array_ g_return_val_if_fail (val, NULL); g_return_val_if_fail (array, NULL); + if ((!array_slv) && (array != nmc_valid_connection_types)) + array_slv = get_valid_settings_array ("no-slave"); + /* Create a temporary array that can be used in nmc_string_is_valid() */ tmp_arr = g_ptr_array_sized_new (32); iter = array; @@ -4637,10 +4643,8 @@ read_connection_properties (NMConnection *connection, * have ip properties but possibly others, slave-type specific. */ con_type = nm_setting_connection_get_slave_type (s_con); - if (!con_type) - con_type = "no"; - - slv_type = g_strdup_printf ("%s-slave", con_type); + if (con_type) + slv_type = g_strdup_printf ("%s-slave", con_type); con_type = nm_setting_connection_get_connection_type (s_con); @@ -7314,9 +7318,8 @@ gen_property_names (const char *text, int state) const char *setting_name; char **strv = NULL; const NameItem *valid_settings_main; - const NameItem *valid_settings_slave; + const NameItem *valid_settings_slave = NULL; const char *p1; - const char *slv_type; /* Try to get the setting from 'line' - setting_name.property */ p1 = strchr (line, '.'); @@ -7332,12 +7335,9 @@ gen_property_names (const char *text, int state) * guessing the slave type from the setting name already * typed (or autocompleted) */ if (nm_streq0 (strv[0], NM_SETTING_TEAM_PORT_SETTING_NAME)) - slv_type = "team-slave"; + valid_settings_slave = get_valid_settings_array ("team-slave"); else if (nm_streq0 (strv[0], NM_SETTING_BRIDGE_PORT_SETTING_NAME)) - slv_type = "bridge-slave"; - else - slv_type = "no-slave"; - valid_settings_slave = get_valid_settings_array (slv_type); + valid_settings_slave = get_valid_settings_array ("bridge-slave"); setting_name = check_valid_name (strv[0], valid_settings_main, @@ -7621,7 +7621,7 @@ get_setting_and_property (const char *prompt, const char *line, NMSetting **setting_out, char**property_out) { const NameItem *valid_settings_main; - const NameItem *valid_settings_slave; + const NameItem *valid_settings_slave = NULL; const char *setting_name; NMSetting *setting = NULL; char *property = NULL; @@ -7634,13 +7634,16 @@ get_setting_and_property (const char *prompt, const char *line, if (sett) { /* Is this too much (and useless?) effort for an unlikely case? */ s_con = nm_connection_get_setting_connection (nmc_tab_completion.connection); - if (s_con) + if (s_con) { s_type = nm_setting_connection_get_slave_type (s_con); - slv_type = g_strdup_printf ("%s-slave", s_type ? s_type : "no"); + if (s_type) { + slv_type = g_strdup_printf ("%s-slave", s_type); + valid_settings_slave = get_valid_settings_array (slv_type); + g_free (slv_type); + } + } valid_settings_main = get_valid_settings_array (nmc_tab_completion.con_type); - valid_settings_slave = get_valid_settings_array (slv_type); - g_free (slv_type); setting_name = check_valid_name (sett, valid_settings_main, valid_settings_slave, NULL); @@ -9032,13 +9035,16 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t NmcEditorMenuContext menu_ctx; s_con = nm_connection_get_setting_connection (connection); - if (s_con) + if (s_con) { s_type = nm_setting_connection_get_slave_type (s_con); - slv_type = g_strdup_printf ("%s-slave", s_type ? s_type : "no"); + if (s_type) { + slv_type = g_strdup_printf ("%s-slave", s_type); + valid_settings_slave = get_valid_settings_array (slv_type); + g_free (slv_type); + } + } valid_settings_main = get_valid_settings_array (connection_type); - valid_settings_slave = get_valid_settings_array (slv_type); - g_free (slv_type); valid_settings_str = get_valid_options_string (valid_settings_main, valid_settings_slave); g_print (_("You may edit the following settings: %s\n"), valid_settings_str); |