summaryrefslogtreecommitdiff
path: root/cli/src/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'cli/src/settings.c')
-rw-r--r--cli/src/settings.c45
1 files changed, 26 insertions, 19 deletions
diff --git a/cli/src/settings.c b/cli/src/settings.c
index cf56cfbe98..84a162c001 100644
--- a/cli/src/settings.c
+++ b/cli/src/settings.c
@@ -1031,16 +1031,16 @@ nmc_property_bond_get_options (NMSetting *setting)
{
NMSettingBond *s_bond = NM_SETTING_BOND (setting);
GString *bond_options_s;
- int i;
+ const char *const* kernel_names;
bond_options_s = g_string_new (NULL);
- for (i = 0; i < nm_setting_bond_get_num_options (s_bond); i++) {
- const char *key, *value;
-
- nm_setting_bond_get_option (s_bond, i, &key, &value);
- g_string_append_printf (bond_options_s, "%s=%s,", key, value);
+ kernel_names = nm_setting_bond_get_kernel_names ();
+ for (; *kernel_names; kernel_names++) {
+ g_string_append_printf (bond_options_s, "%s=%s,", *kernel_names,
+ nm_setting_bond_get_string (s_bond, *kernel_names));
}
- g_string_truncate (bond_options_s, bond_options_s->len-1); /* chop off trailing ',' */
+ if (bond_options_s->len > 0)
+ g_string_truncate (bond_options_s, bond_options_s->len-1); /* chop off trailing ',' */
return g_string_free (bond_options_s, FALSE);
}
@@ -2629,15 +2629,16 @@ static gboolean
_validate_and_remove_bond_option (NMSettingBond *setting, const char *option)
{
const char *opt;
- const char **valid_options;
+ const char *const*valid_options;
- valid_options = nm_setting_bond_get_valid_options (setting);
- opt = nmc_string_is_valid (option, valid_options, NULL);
+ valid_options = nm_setting_bond_get_kernel_names ();
+ opt = nmc_string_is_valid (option, (const char **) valid_options, NULL);
- if (opt)
- return nm_setting_bond_remove_option (setting, opt);
- else
+ if (!opt)
return FALSE;
+
+ nm_setting_bond_set_default (setting, opt);
+ return TRUE;
}
/* Validate bonding 'options' values */
@@ -2650,11 +2651,17 @@ _validate_bond_option_value (const char *option, const char *value, GError **err
return value;
}
+static const char **
+_nm_setting_bond_get_kernel_names (NMSettingBond *bond)
+{
+ return (const char **) nm_setting_bond_get_kernel_names ();
+}
+
DEFINE_SETTER_OPTIONS (nmc_property_bond_set_options,
NM_SETTING_BOND,
NMSettingBond,
- nm_setting_bond_add_option,
- nm_setting_bond_get_valid_options,
+ nm_setting_bond_set_string,
+ _nm_setting_bond_get_kernel_names,
_validate_bond_option_value)
DEFINE_REMOVER_OPTION (nmc_property_bond_remove_option_options,
NM_SETTING_BOND,
@@ -2664,11 +2671,11 @@ static const char *
nmc_property_bond_describe_options (NMSetting *setting, const char *prop)
{
static char *desc = NULL;
- const char **valid_options;
+ const char *const*valid_options;
char *options_str;
if (G_UNLIKELY (desc == NULL)) {
- valid_options = nm_setting_bond_get_valid_options (NM_SETTING_BOND (setting));
+ valid_options = nm_setting_bond_get_kernel_names ();
options_str = g_strjoinv (", ", (char **) valid_options);
desc = g_strdup_printf (_("Enter a list of bonding options formatted as:\n"
@@ -2691,11 +2698,11 @@ nmc_property_bond_describe_options (NMSetting *setting, const char *prop)
static const char *
nmc_property_bond_allowed_options (NMSetting *setting, const char *prop)
{
- const char **valid_options;
+ const char *const*valid_options;
static char *allowed_vals = NULL;
if (G_UNLIKELY (allowed_vals == NULL)) {
- valid_options = nm_setting_bond_get_valid_options (NM_SETTING_BOND (setting));
+ valid_options = nm_setting_bond_get_kernel_names ();
allowed_vals = g_strjoinv (", ", (char **) valid_options);
}
return allowed_vals;