diff options
author | Thomas Haller <thaller@redhat.com> | 2020-07-09 19:17:27 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-07-11 11:18:54 +0200 |
commit | 211d799817948d683e4bf8166151b9ab83e47d63 (patch) | |
tree | 6477e9b51474a438b3676243ac4ec4ec7c6078d7 | |
parent | b55578bf6e6ed449b03c87e6ca6ab38e9787583b (diff) | |
download | NetworkManager-211d799817948d683e4bf8166151b9ab83e47d63.tar.gz |
tui: fix alternating miimon/arp_interval settings for bond options in nmtui
-rw-r--r-- | clients/tui/nmt-page-bond.c | 27 |
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); |