summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-07-09 19:17:27 +0200
committerThomas Haller <thaller@redhat.com>2020-07-11 11:18:54 +0200
commit211d799817948d683e4bf8166151b9ab83e47d63 (patch)
tree6477e9b51474a438b3676243ac4ec4ec7c6078d7
parentb55578bf6e6ed449b03c87e6ca6ab38e9787583b (diff)
downloadNetworkManager-211d799817948d683e4bf8166151b9ab83e47d63.tar.gz
tui: fix alternating miimon/arp_interval settings for bond options in nmtui
-rw-r--r--clients/tui/nmt-page-bond.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/clients/tui/nmt-page-bond.c b/clients/tui/nmt-page-bond.c
index b9cd9a0b9b..09dcdbc22a 100644
--- a/clients/tui/nmt-page-bond.c
+++ b/clients/tui/nmt-page-bond.c
@@ -16,6 +16,7 @@
#include "nmt-page-bond.h"
+#include "nm-libnm-core-intern/nm-libnm-core-utils.h"
#include "nmt-mac-entry.h"
#include "nmt-address-list.h"
#include "nmt-slave-list.h"
@@ -193,6 +194,22 @@ slaves_changed (GObject *object,
nmt_newt_component_set_sensitive (NMT_NEWT_COMPONENT (priv->mode), TRUE);
}
+static void
+_bond_add_option (NMSettingBond *s_bond,
+ const char *option,
+ const char *value)
+{
+ if (nm_str_is_empty (value))
+ nm_setting_bond_remove_option (s_bond, option);
+ else
+ nm_setting_bond_add_option (s_bond, option, value);
+
+ if (nm_streq (option, NM_SETTING_BOND_OPTION_ARP_INTERVAL))
+ _nm_setting_bond_remove_options_miimon (s_bond);
+ else if (nm_streq (option, NM_SETTING_BOND_OPTION_MIIMON))
+ _nm_setting_bond_remove_options_arp_interval (s_bond);
+}
+
#define WIDGET_CHANGED_FUNC(widget, func, option) \
static void \
widget ## _widget_changed (GObject *object, \
@@ -206,7 +223,7 @@ widget ## _widget_changed (GObject *object, \
return; \
\
priv->updating = TRUE; \
- nm_setting_bond_add_option (priv->s_bond, option, func (priv->widget)); \
+ _bond_add_option (priv->s_bond, option, func (priv->widget)); \
priv->updating = FALSE; \
}
@@ -230,7 +247,7 @@ mode_widget_changed (GObject *object,
mode = nmt_newt_popup_get_active_id (priv->mode);
priv->updating = TRUE;
- nm_setting_bond_add_option (priv->s_bond, NM_SETTING_BOND_OPTION_MODE, mode);
+ _bond_add_option (priv->s_bond, NM_SETTING_BOND_OPTION_MODE, mode);
priv->updating = FALSE;
if (!strcmp (mode, "balance-tlb") || !strcmp (mode, "balance-alb")) {
@@ -241,8 +258,8 @@ mode_widget_changed (GObject *object,
if (!strcmp (mode, "active-backup")) {
nmt_newt_widget_set_visible (NMT_NEWT_WIDGET (priv->primary), TRUE);
- nm_setting_bond_add_option (priv->s_bond, NM_SETTING_BOND_OPTION_PRIMARY,
- nmt_newt_entry_get_text (priv->primary));
+ _bond_add_option (priv->s_bond, NM_SETTING_BOND_OPTION_PRIMARY,
+ nmt_newt_entry_get_text (priv->primary));
} else {
nmt_newt_widget_set_visible (NMT_NEWT_WIDGET (priv->primary), FALSE);
nm_setting_bond_remove_option (priv->s_bond, NM_SETTING_BOND_OPTION_PRIMARY);
@@ -296,7 +313,7 @@ arp_ip_target_widget_changed (GObject *object,
target = g_strjoinv (",", ips);
priv->updating = TRUE;
- nm_setting_bond_add_option (priv->s_bond, NM_SETTING_BOND_OPTION_ARP_IP_TARGET, target);
+ _bond_add_option (priv->s_bond, NM_SETTING_BOND_OPTION_ARP_IP_TARGET, target);
priv->updating = FALSE;
g_free (target);