diff options
Diffstat (limited to 'src/settings/plugins/ifcfg-rh/writer.c')
| -rw-r--r-- | src/settings/plugins/ifcfg-rh/writer.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c index 6f302b4f7c..c83ee0a872 100644 --- a/src/settings/plugins/ifcfg-rh/writer.c +++ b/src/settings/plugins/ifcfg-rh/writer.c @@ -1250,7 +1250,8 @@ write_bonding_setting (NMConnection *connection, shvarFile *ifcfg, GError **erro { NMSettingBond *s_bond; const char *iface; - guint32 i, num_opts; + const char *const* kernel_names; + GString *str; s_bond = nm_connection_get_setting_bond (connection); if (!s_bond) { @@ -1268,25 +1269,21 @@ write_bonding_setting (NMConnection *connection, shvarFile *ifcfg, GError **erro svSetValue (ifcfg, "DEVICE", iface, FALSE); svSetValue (ifcfg, "BONDING_OPTS", NULL, FALSE); - num_opts = nm_setting_bond_get_num_options (s_bond); - if (num_opts > 0) { - GString *str = g_string_sized_new (64); - - for (i = 0; i < nm_setting_bond_get_num_options (s_bond); i++) { - const char *key, *value; + str = g_string_sized_new (64); - if (!nm_setting_bond_get_option (s_bond, i, &key, &value)) - continue; + kernel_names = nm_setting_bond_get_kernel_names(); + for (; *kernel_names; kernel_names++) { + if (nm_setting_bond_is_default (s_bond, *kernel_names, NULL)) { + const char *strval = nm_setting_bond_get_string (s_bond, *kernel_names); - if (str->len) - g_string_append_c (str, ' '); - - g_string_append_printf (str, "%s=%s", key, value); + /* FIXME: how to represent NULL values that are not default values? */ + g_string_append_printf (str, "%s=%s ", *kernel_names, strval ? strval : ""); } + } + if (str->len > 0) { + g_string_truncate (str, str->len-1); - if (str->len) - svSetValue (ifcfg, "BONDING_OPTS", str->str, FALSE); - + svSetValue (ifcfg, "BONDING_OPTS", str->str, FALSE); g_string_free (str, TRUE); } |
