mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-07 13:08:10 +02:00
bond: fix arp_all_target option when arp_interval is disabled
The bond option arp_all_target can be set even if arp_interval is disabled. https://bugzilla.redhat.com/show_bug.cgi?id=2123311 Fixes:e064eb9d13('bond: use netlink to set bond options') (cherry picked from commit3871c670ab)
This commit is contained in:
parent
30366e5b3a
commit
178ff4e42a
4 changed files with 5 additions and 19 deletions
|
|
@ -459,7 +459,6 @@ _platform_lnk_bond_init_from_setting(NMSettingBond *s_bond, NMPlatformLnkBond *p
|
||||||
props->updelay_has = props->miimon_has && props->miimon;
|
props->updelay_has = props->miimon_has && props->miimon;
|
||||||
props->downdelay_has = props->miimon_has && props->miimon;
|
props->downdelay_has = props->miimon_has && props->miimon;
|
||||||
props->peer_notif_delay_has = (props->miimon || props->arp_interval) && props->peer_notif_delay;
|
props->peer_notif_delay_has = (props->miimon || props->arp_interval) && props->peer_notif_delay;
|
||||||
props->arp_all_targets_has = props->arp_interval && props->arp_all_targets;
|
|
||||||
props->resend_igmp_has = props->resend_igmp != 1;
|
props->resend_igmp_has = props->resend_igmp != 1;
|
||||||
props->lp_interval_has = props->lp_interval != 1;
|
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->tlb_dynamic_lb_has = NM_IN_SET(props->mode, NM_BOND_MODE_TLB, NM_BOND_MODE_ALB);
|
||||||
|
|
|
||||||
|
|
@ -1628,12 +1628,8 @@ _parse_lnk_bond(const char *kind, struct nlattr *info_data)
|
||||||
}
|
}
|
||||||
if (tb[IFLA_BOND_ARP_VALIDATE])
|
if (tb[IFLA_BOND_ARP_VALIDATE])
|
||||||
props->arp_validate = nla_get_u32(tb[IFLA_BOND_ARP_VALIDATE]);
|
props->arp_validate = nla_get_u32(tb[IFLA_BOND_ARP_VALIDATE]);
|
||||||
if (tb[IFLA_BOND_ARP_ALL_TARGETS]) {
|
if (tb[IFLA_BOND_ARP_ALL_TARGETS])
|
||||||
props->arp_all_targets = nla_get_u32(tb[IFLA_BOND_ARP_ALL_TARGETS]);
|
props->arp_all_targets = nla_get_u32(tb[IFLA_BOND_ARP_ALL_TARGETS]);
|
||||||
props->arp_all_targets_has = TRUE;
|
|
||||||
} else {
|
|
||||||
props->arp_all_targets_has = FALSE;
|
|
||||||
}
|
|
||||||
if (tb[IFLA_BOND_PRIMARY_RESELECT])
|
if (tb[IFLA_BOND_PRIMARY_RESELECT])
|
||||||
props->primary_reselect = nla_get_u8(tb[IFLA_BOND_PRIMARY_RESELECT]);
|
props->primary_reselect = nla_get_u8(tb[IFLA_BOND_PRIMARY_RESELECT]);
|
||||||
if (tb[IFLA_BOND_FAIL_OVER_MAC])
|
if (tb[IFLA_BOND_FAIL_OVER_MAC])
|
||||||
|
|
@ -4518,7 +4514,7 @@ _nl_msg_new_link_set_linkinfo(struct nl_msg *msg, NMLinkType link_type, gconstpo
|
||||||
nla_nest_end(msg, targets);
|
nla_nest_end(msg, targets);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (props->arp_all_targets_has)
|
if (props->arp_all_targets)
|
||||||
NLA_PUT_U32(msg, IFLA_BOND_ARP_ALL_TARGETS, props->arp_all_targets);
|
NLA_PUT_U32(msg, IFLA_BOND_ARP_ALL_TARGETS, props->arp_all_targets);
|
||||||
if (props->arp_interval)
|
if (props->arp_interval)
|
||||||
NLA_PUT_U32(msg, IFLA_BOND_ARP_INTERVAL, props->arp_interval);
|
NLA_PUT_U32(msg, IFLA_BOND_ARP_INTERVAL, props->arp_interval);
|
||||||
|
|
|
||||||
|
|
@ -6082,7 +6082,6 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le
|
||||||
char sbuf_updelay[30];
|
char sbuf_updelay[30];
|
||||||
char sbuf_downdelay[30];
|
char sbuf_downdelay[30];
|
||||||
char sbuf_peer_notif_delay[60];
|
char sbuf_peer_notif_delay[60];
|
||||||
char sbuf_arp_all_targets[30];
|
|
||||||
char sbuf_resend_igmp[30];
|
char sbuf_resend_igmp[30];
|
||||||
char sbuf_lp_interval[30];
|
char sbuf_lp_interval[30];
|
||||||
char sbuf_tlb_dynamic_lb[30];
|
char sbuf_tlb_dynamic_lb[30];
|
||||||
|
|
@ -6106,7 +6105,7 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le
|
||||||
"%s" /* lp_interval */
|
"%s" /* lp_interval */
|
||||||
" packets_per_port %u"
|
" packets_per_port %u"
|
||||||
"%s" /* peer_notif_delay */
|
"%s" /* peer_notif_delay */
|
||||||
"%s" /* arp_all_targets */
|
" arp_all_targets %u"
|
||||||
" arp_validate %u"
|
" arp_validate %u"
|
||||||
" ad_actor_sys_prio %u"
|
" ad_actor_sys_prio %u"
|
||||||
" ad_user_port_key %u"
|
" ad_user_port_key %u"
|
||||||
|
|
@ -6156,12 +6155,7 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le
|
||||||
!lnk->peer_notif_delay_has ? "?" : "",
|
!lnk->peer_notif_delay_has ? "?" : "",
|
||||||
lnk->peer_notif_delay)
|
lnk->peer_notif_delay)
|
||||||
: "",
|
: "",
|
||||||
lnk->arp_all_targets_has || lnk->arp_all_targets != 0
|
lnk->arp_all_targets,
|
||||||
? nm_sprintf_buf(sbuf_arp_all_targets,
|
|
||||||
" arp_all_targets%s %u",
|
|
||||||
!lnk->arp_all_targets_has ? "?" : "",
|
|
||||||
lnk->arp_all_targets)
|
|
||||||
: "",
|
|
||||||
lnk->arp_validate,
|
lnk->arp_validate,
|
||||||
lnk->ad_actor_sys_prio,
|
lnk->ad_actor_sys_prio,
|
||||||
lnk->ad_user_port_key,
|
lnk->ad_user_port_key,
|
||||||
|
|
@ -8043,7 +8037,6 @@ nm_platform_lnk_bond_hash_update(const NMPlatformLnkBond *obj, NMHashState *h)
|
||||||
obj->primary_reselect,
|
obj->primary_reselect,
|
||||||
obj->xmit_hash_policy,
|
obj->xmit_hash_policy,
|
||||||
NM_HASH_COMBINE_BOOLS(guint16,
|
NM_HASH_COMBINE_BOOLS(guint16,
|
||||||
obj->arp_all_targets_has,
|
|
||||||
obj->downdelay_has,
|
obj->downdelay_has,
|
||||||
obj->lp_interval_has,
|
obj->lp_interval_has,
|
||||||
obj->miimon_has,
|
obj->miimon_has,
|
||||||
|
|
@ -8089,7 +8082,6 @@ nm_platform_lnk_bond_cmp(const NMPlatformLnkBond *a, const NMPlatformLnkBond *b)
|
||||||
NM_CMP_FIELD(a, b, mode);
|
NM_CMP_FIELD(a, b, mode);
|
||||||
NM_CMP_FIELD(a, b, primary_reselect);
|
NM_CMP_FIELD(a, b, primary_reselect);
|
||||||
NM_CMP_FIELD(a, b, xmit_hash_policy);
|
NM_CMP_FIELD(a, b, xmit_hash_policy);
|
||||||
NM_CMP_FIELD_BOOL(a, b, arp_all_targets_has);
|
|
||||||
NM_CMP_FIELD_BOOL(a, b, downdelay_has);
|
NM_CMP_FIELD_BOOL(a, b, downdelay_has);
|
||||||
NM_CMP_FIELD_BOOL(a, b, lp_interval_has);
|
NM_CMP_FIELD_BOOL(a, b, lp_interval_has);
|
||||||
NM_CMP_FIELD_BOOL(a, b, miimon_has);
|
NM_CMP_FIELD_BOOL(a, b, miimon_has);
|
||||||
|
|
|
||||||
|
|
@ -920,7 +920,6 @@ typedef struct {
|
||||||
guint8 mode;
|
guint8 mode;
|
||||||
guint8 primary_reselect;
|
guint8 primary_reselect;
|
||||||
guint8 xmit_hash_policy;
|
guint8 xmit_hash_policy;
|
||||||
bool arp_all_targets_has : 1;
|
|
||||||
bool downdelay_has : 1;
|
bool downdelay_has : 1;
|
||||||
bool lp_interval_has : 1;
|
bool lp_interval_has : 1;
|
||||||
bool miimon_has : 1;
|
bool miimon_has : 1;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue