mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-25 11:50:40 +01:00
merge: branch 'issue1476'
bond: change default value of `arp_missed_max` Closes #1476 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2288
This commit is contained in:
commit
83fc987ff2
6 changed files with 36 additions and 16 deletions
|
|
@ -52,11 +52,12 @@
|
|||
NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE, NM_SETTING_BOND_OPTION_PRIMARY_RESELECT, \
|
||||
NM_SETTING_BOND_OPTION_RESEND_IGMP, NM_SETTING_BOND_OPTION_USE_CARRIER, \
|
||||
NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY, NM_SETTING_BOND_OPTION_NUM_GRAT_ARP, \
|
||||
NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY, NM_SETTING_BOND_OPTION_ARP_MISSED_MAX
|
||||
NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY
|
||||
|
||||
#define OPTIONS_REAPPLY_FULL \
|
||||
OPTIONS_REAPPLY_SUBSET, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE, \
|
||||
NM_SETTING_BOND_OPTION_ARP_IP_TARGET, NM_SETTING_BOND_OPTION_NS_IP6_TARGET
|
||||
#define OPTIONS_REAPPLY_FULL \
|
||||
OPTIONS_REAPPLY_SUBSET, NM_SETTING_BOND_OPTION_ACTIVE_SLAVE, \
|
||||
NM_SETTING_BOND_OPTION_ARP_IP_TARGET, NM_SETTING_BOND_OPTION_NS_IP6_TARGET, \
|
||||
NM_SETTING_BOND_OPTION_ARP_MISSED_MAX
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
|
|
@ -501,6 +502,8 @@ _platform_lnk_bond_init_from_setting(NMSettingBond *s_bond, NMPlatformLnkBond *p
|
|||
props->lp_interval_has = props->lp_interval != 1;
|
||||
props->tlb_dynamic_lb_has = NM_IN_SET(props->mode, NM_BOND_MODE_TLB, NM_BOND_MODE_ALB);
|
||||
props->lacp_active_has = NM_IN_SET(props->mode, NM_BOND_MODE_8023AD);
|
||||
props->arp_missed_max_has =
|
||||
!NM_IN_SET(props->mode, NM_BOND_MODE_TLB, NM_BOND_MODE_ALB, NM_BOND_MODE_8023AD);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -907,6 +910,8 @@ reapply_connection(NMDevice *device, NMConnection *con_old, NMConnection *con_ne
|
|||
set_bond_arp_ip_targets(device, s_bond);
|
||||
|
||||
set_bond_attrs_or_default(device, s_bond, NM_MAKE_STRV(OPTIONS_REAPPLY_SUBSET));
|
||||
if (!NM_IN_SET(mode, NM_BOND_MODE_TLB, NM_BOND_MODE_ALB, NM_BOND_MODE_8023AD))
|
||||
set_bond_attr_or_default(device, s_bond, NM_SETTING_BOND_OPTION_ARP_MISSED_MAX);
|
||||
|
||||
_balance_slb_setup(self, con_new);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ static NM_UTILS_STRING_TABLE_LOOKUP_STRUCT_DEFINE(
|
|||
{"any", NM_BOND_OPTION_TYPE_BOTH, 0, 1, _option_default_strv_arp_all_targets}},
|
||||
{NM_SETTING_BOND_OPTION_ARP_INTERVAL, {"0", NM_BOND_OPTION_TYPE_INT, 0, G_MAXINT}},
|
||||
{NM_SETTING_BOND_OPTION_ARP_IP_TARGET, {"", NM_BOND_OPTION_TYPE_IP}},
|
||||
{NM_SETTING_BOND_OPTION_ARP_MISSED_MAX, {"0", NM_BOND_OPTION_TYPE_INT, 0, 255}},
|
||||
{NM_SETTING_BOND_OPTION_ARP_MISSED_MAX, {"2", NM_BOND_OPTION_TYPE_INT, 0, 255}},
|
||||
{NM_SETTING_BOND_OPTION_ARP_VALIDATE,
|
||||
{"none", NM_BOND_OPTION_TYPE_BOTH, 0, 6, _option_default_strv_arp_validate}},
|
||||
{NM_SETTING_BOND_OPTION_BALANCE_SLB, {"0", NM_BOND_OPTION_TYPE_INT, 0, 1}},
|
||||
|
|
@ -950,14 +950,17 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
|
|||
g_prefix_error(error, "%s.%s: ", NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS);
|
||||
return FALSE;
|
||||
}
|
||||
if (arp_missed_max > 0) {
|
||||
}
|
||||
|
||||
if (!NM_IN_SET(bond_mode, NM_BOND_MODE_8023AD, NM_BOND_MODE_TLB, NM_BOND_MODE_ALB)) {
|
||||
if (arp_missed_max == 0) {
|
||||
g_set_error(error,
|
||||
NM_CONNECTION_ERROR,
|
||||
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
||||
_("'%s=%s' is incompatible with '%s > 0'"),
|
||||
_("'%s = 0' option is not a valid value for '%s=%s'"),
|
||||
NM_SETTING_BOND_OPTION_ARP_MISSED_MAX,
|
||||
NM_SETTING_BOND_OPTION_MODE,
|
||||
mode_str,
|
||||
NM_SETTING_BOND_OPTION_ARP_MISSED_MAX);
|
||||
mode_str);
|
||||
g_prefix_error(error, "%s.%s: ", NM_SETTING_BOND_SETTING_NAME, NM_SETTING_BOND_OPTIONS);
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5533,7 +5533,7 @@ test_bond_meta(void)
|
|||
_A(_nm_setting_bond_opt_value_as_u16, set, NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO, 0, EINVAL);
|
||||
_A(_nm_setting_bond_opt_value_as_u16, set, NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY, 0, EINVAL);
|
||||
_A(_nm_setting_bond_opt_value_as_u8, set, NM_SETTING_BOND_OPTION_NUM_GRAT_ARP, 1, 0);
|
||||
_A(_nm_setting_bond_opt_value_as_u8, set, NM_SETTING_BOND_OPTION_ARP_MISSED_MAX, 0, 0);
|
||||
_A(_nm_setting_bond_opt_value_as_u8, set, NM_SETTING_BOND_OPTION_ARP_MISSED_MAX, 2, 0);
|
||||
_A(_nm_setting_bond_opt_value_as_u8, set, NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE, 0, 0);
|
||||
_A(_nm_setting_bond_opt_value_as_intbool, set, NM_SETTING_BOND_OPTION_USE_CARRIER, 1, 0);
|
||||
_A(_nm_setting_bond_opt_value_as_intbool,
|
||||
|
|
|
|||
|
|
@ -1766,8 +1766,12 @@ _parse_lnk_bond(const char *kind, struct nlattr *info_data)
|
|||
props->num_grat_arp = nla_get_u8(tb[IFLA_BOND_NUM_PEER_NOTIF]);
|
||||
if (tb[IFLA_BOND_ALL_PORTS_ACTIVE])
|
||||
props->all_ports_active = nla_get_u8(tb[IFLA_BOND_ALL_PORTS_ACTIVE]);
|
||||
if (tb[IFLA_BOND_MISSED_MAX])
|
||||
props->arp_missed_max = nla_get_u8(tb[IFLA_BOND_MISSED_MAX]);
|
||||
if (tb[IFLA_BOND_MISSED_MAX]) {
|
||||
props->arp_missed_max = nla_get_u8(tb[IFLA_BOND_MISSED_MAX]);
|
||||
props->arp_missed_max_has = TRUE;
|
||||
} else {
|
||||
props->arp_missed_max_has = FALSE;
|
||||
}
|
||||
if (tb[IFLA_BOND_MIN_LINKS])
|
||||
props->min_links = nla_get_u32(tb[IFLA_BOND_MIN_LINKS]);
|
||||
if (tb[IFLA_BOND_LP_INTERVAL])
|
||||
|
|
@ -5114,7 +5118,7 @@ _nl_msg_new_link_set_linkinfo(struct nl_msg *msg, NMLinkType link_type, gconstpo
|
|||
&props->ad_actor_system);
|
||||
if (props->ad_select)
|
||||
NLA_PUT_U8(msg, IFLA_BOND_AD_SELECT, props->ad_select);
|
||||
if (props->arp_missed_max)
|
||||
if (props->arp_missed_max_has)
|
||||
NLA_PUT_U8(msg, IFLA_BOND_MISSED_MAX, props->arp_missed_max);
|
||||
|
||||
NLA_PUT_U8(msg, IFLA_BOND_ALL_PORTS_ACTIVE, props->all_ports_active);
|
||||
|
|
|
|||
|
|
@ -6387,6 +6387,7 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le
|
|||
char sbuf_resend_igmp[30];
|
||||
char sbuf_lp_interval[30];
|
||||
char sbuf_tlb_dynamic_lb[30];
|
||||
char sbuf_arp_missed_max[30];
|
||||
int i;
|
||||
|
||||
if (!nm_utils_to_string_buffer_init_null(lnk, &buf, &len))
|
||||
|
|
@ -6417,7 +6418,7 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le
|
|||
" xmit_hash_policy %u"
|
||||
" num_gray_arp %u"
|
||||
" all_ports_active %u"
|
||||
" arp_missed_max %u"
|
||||
"%s" /* arp_missed_max %u */
|
||||
" lacp_rate %u"
|
||||
"%s" /* lacp_active */
|
||||
" ad_select %u"
|
||||
|
|
@ -6469,7 +6470,11 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le
|
|||
lnk->xmit_hash_policy,
|
||||
lnk->num_grat_arp,
|
||||
lnk->all_ports_active,
|
||||
lnk->arp_missed_max,
|
||||
lnk->arp_missed_max_has ? nm_sprintf_buf(sbuf_arp_missed_max,
|
||||
" arp_missed_max%s %u",
|
||||
!lnk->arp_missed_max_has ? "?" : "",
|
||||
(int) lnk->arp_missed_max)
|
||||
: "",
|
||||
lnk->lacp_rate,
|
||||
lnk->lacp_active_has || lnk->lacp_active != 0
|
||||
? nm_sprintf_buf(sbuf_lacp_active,
|
||||
|
|
@ -8399,7 +8404,8 @@ nm_platform_lnk_bond_hash_update(const NMPlatformLnkBond *obj, NMHashState *h)
|
|||
obj->tlb_dynamic_lb,
|
||||
obj->tlb_dynamic_lb_has,
|
||||
obj->updelay_has,
|
||||
obj->use_carrier));
|
||||
obj->use_carrier,
|
||||
obj->arp_missed_max_has));
|
||||
|
||||
nm_hash_update(h, obj->arp_ip_target, obj->arp_ip_targets_num * sizeof(obj->arp_ip_target[0]));
|
||||
nm_hash_update(h, obj->ns_ip6_target, obj->ns_ip6_targets_num * sizeof(obj->ns_ip6_target[0]));
|
||||
|
|
@ -8477,6 +8483,7 @@ nm_platform_lnk_bond_cmp(const NMPlatformLnkBond *a, const NMPlatformLnkBond *b)
|
|||
NM_CMP_FIELD_BOOL(a, b, tlb_dynamic_lb_has);
|
||||
NM_CMP_FIELD_BOOL(a, b, updelay_has);
|
||||
NM_CMP_FIELD_BOOL(a, b, use_carrier);
|
||||
NM_CMP_FIELD_BOOL(a, b, arp_missed_max_has);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -833,6 +833,7 @@ typedef struct {
|
|||
bool tlb_dynamic_lb_has : 1;
|
||||
bool updelay_has : 1;
|
||||
bool use_carrier : 1;
|
||||
bool arp_missed_max_has : 1;
|
||||
} _nm_alignas(NMPlatformObject) NMPlatformLnkBond;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue