device: unify setting of bond options

Add a macro for the list of bond options we are going to set. By seeing
them side-by-side, it is hopefully simpler to see that all options are
specified correctly.

We see that:

- the *_SUBSET defines don't include the options that we are explicitly
  setting, that is "mode", "active_slave" and "arp_ip_target".

- OPTIONS_REAPPLY_SUBSET contains 4 options less than OPTIONS_APPLY_SUBSET:
  "ad_select", "ad_user_port_key", "lacp_rate" and "tlb_dynamic_lb".
  These are the options that are marked as BOND_OPTFLAG_IFDOWN in
  kernel.

(cherry picked from commit 5402943420)
This commit is contained in:
Thomas Haller 2020-09-09 11:05:24 +02:00
parent a0ae53c8bb
commit 7030cd2c8b
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -22,6 +22,31 @@ _LOG_DECLARE_SELF(NMDeviceBond);
/*****************************************************************************/
#define OPTIONS_APPLY_SUBSET \
NM_SETTING_BOND_OPTION_MIIMON, \
NM_SETTING_BOND_OPTION_UPDELAY, \
NM_SETTING_BOND_OPTION_DOWNDELAY, \
NM_SETTING_BOND_OPTION_ARP_INTERVAL, \
NM_SETTING_BOND_OPTION_ARP_VALIDATE, \
NM_SETTING_BOND_OPTION_PRIMARY, \
NM_SETTING_BOND_OPTION_AD_ACTOR_SYSTEM, \
NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO, \
NM_SETTING_BOND_OPTION_AD_SELECT, \
NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY, \
NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE, \
NM_SETTING_BOND_OPTION_ARP_ALL_TARGETS, \
NM_SETTING_BOND_OPTION_FAIL_OVER_MAC, \
NM_SETTING_BOND_OPTION_LACP_RATE, \
NM_SETTING_BOND_OPTION_LP_INTERVAL, \
NM_SETTING_BOND_OPTION_MIN_LINKS, \
NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE, \
NM_SETTING_BOND_OPTION_PRIMARY_RESELECT, \
NM_SETTING_BOND_OPTION_RESEND_IGMP, \
NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB, \
NM_SETTING_BOND_OPTION_USE_CARRIER, \
NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY, \
NM_SETTING_BOND_OPTION_NUM_GRAT_ARP
#define OPTIONS_REAPPLY_SUBSET \
NM_SETTING_BOND_OPTION_MIIMON, \
NM_SETTING_BOND_OPTION_UPDELAY, \
@ -43,6 +68,11 @@ _LOG_DECLARE_SELF(NMDeviceBond);
NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY, \
NM_SETTING_BOND_OPTION_NUM_GRAT_ARP
#define OPTIONS_REAPPLY_FULL \
OPTIONS_REAPPLY_SUBSET, \
NM_SETTING_BOND_OPTION_ACTIVE_SLAVE, \
NM_SETTING_BOND_OPTION_ARP_IP_TARGET
/*****************************************************************************/
struct _NMDeviceBond {
@ -369,29 +399,7 @@ apply_bonding_config (NMDeviceBond *self)
set_bond_attrs_or_default (device,
s_bond,
NM_MAKE_STRV (NM_SETTING_BOND_OPTION_MIIMON,
NM_SETTING_BOND_OPTION_UPDELAY,
NM_SETTING_BOND_OPTION_DOWNDELAY,
NM_SETTING_BOND_OPTION_ARP_INTERVAL,
NM_SETTING_BOND_OPTION_ARP_VALIDATE,
NM_SETTING_BOND_OPTION_PRIMARY,
NM_SETTING_BOND_OPTION_AD_ACTOR_SYSTEM,
NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO,
NM_SETTING_BOND_OPTION_AD_SELECT,
NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY,
NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE,
NM_SETTING_BOND_OPTION_ARP_ALL_TARGETS,
NM_SETTING_BOND_OPTION_FAIL_OVER_MAC,
NM_SETTING_BOND_OPTION_LACP_RATE,
NM_SETTING_BOND_OPTION_LP_INTERVAL,
NM_SETTING_BOND_OPTION_MIN_LINKS,
NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE,
NM_SETTING_BOND_OPTION_PRIMARY_RESELECT,
NM_SETTING_BOND_OPTION_RESEND_IGMP,
NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB,
NM_SETTING_BOND_OPTION_USE_CARRIER,
NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY,
NM_SETTING_BOND_OPTION_NUM_GRAT_ARP));
NM_MAKE_STRV (OPTIONS_APPLY_SUBSET));
return TRUE;
}
@ -564,10 +572,7 @@ check_changed_options (NMSettingBond *s_a, NMSettingBond *s_b, GError **error)
const char *name = *option_list;
/* We support changes to these */
if (NM_IN_STRSET (name,
OPTIONS_REAPPLY_SUBSET,
NM_SETTING_BOND_OPTION_ACTIVE_SLAVE,
NM_SETTING_BOND_OPTION_ARP_IP_TARGET))
if (NM_IN_STRSET (name, OPTIONS_REAPPLY_FULL))
continue;
/* Reject any other changes */