diff options
Diffstat (limited to 'libnm-util/nm-setting-bond.c')
-rw-r--r-- | libnm-util/nm-setting-bond.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libnm-util/nm-setting-bond.c b/libnm-util/nm-setting-bond.c index 50cad2da7a..0e9bb0f452 100644 --- a/libnm-util/nm-setting-bond.c +++ b/libnm-util/nm-setting-bond.c @@ -237,17 +237,26 @@ gboolean nm_setting_bond_add_option (NMSettingBond *setting, const char *name, const char *value) { + NMSettingBondPrivate *priv; size_t value_len; g_return_val_if_fail (NM_IS_SETTING_BOND (setting), FALSE); g_return_val_if_fail (validate_option (name), FALSE); g_return_val_if_fail (value != NULL, FALSE); + priv = NM_SETTING_BOND_GET_PRIVATE (setting); + value_len = strlen (value); g_return_val_if_fail (value_len > 0 && value_len < 200, FALSE); - g_hash_table_insert (NM_SETTING_BOND_GET_PRIVATE (setting)->options, - g_strdup (name), g_strdup (value)); + g_hash_table_insert (priv->options, g_strdup (name), g_strdup (value)); + + if (!strcmp (name, NM_SETTING_BOND_OPTION_MIIMON)) { + g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_ARP_INTERVAL); + g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_ARP_IP_TARGET); + } else if (!strcmp (name, NM_SETTING_BOND_OPTION_ARP_INTERVAL)) + g_hash_table_remove (priv->options, NM_SETTING_BOND_OPTION_MIIMON); + return TRUE; } |