From 178ff4e42ab8eb41241688b7a76ba78fefde7169 Mon Sep 17 00:00:00 2001 From: Fernando Fernandez Mancera Date: Tue, 27 Sep 2022 09:06:55 +0200 Subject: [PATCH] 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: e064eb9d1361 ('bond: use netlink to set bond options') (cherry picked from commit 3871c670ab9417fc54d3c0450e91e08ced4a98b4) --- src/core/devices/nm-device-bond.c | 1 - src/libnm-platform/nm-linux-platform.c | 10 +++------- src/libnm-platform/nm-platform.c | 12 ++---------- src/libnm-platform/nm-platform.h | 1 - 4 files changed, 5 insertions(+), 19 deletions(-) diff --git a/src/core/devices/nm-device-bond.c b/src/core/devices/nm-device-bond.c index 29eea0fc69..721acf027b 100644 --- a/src/core/devices/nm-device-bond.c +++ b/src/core/devices/nm-device-bond.c @@ -459,7 +459,6 @@ _platform_lnk_bond_init_from_setting(NMSettingBond *s_bond, NMPlatformLnkBond *p props->updelay_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->arp_all_targets_has = props->arp_interval && props->arp_all_targets; props->resend_igmp_has = props->resend_igmp != 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); diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c index 766c059826..a01761ca80 100644 --- a/src/libnm-platform/nm-linux-platform.c +++ b/src/libnm-platform/nm-linux-platform.c @@ -1628,12 +1628,8 @@ _parse_lnk_bond(const char *kind, struct nlattr *info_data) } if (tb[IFLA_BOND_ARP_VALIDATE]) props->arp_validate = nla_get_u32(tb[IFLA_BOND_ARP_VALIDATE]); - if (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_ARP_ALL_TARGETS]) + props->arp_all_targets = nla_get_u32(tb[IFLA_BOND_ARP_ALL_TARGETS]); if (tb[IFLA_BOND_PRIMARY_RESELECT]) props->primary_reselect = nla_get_u8(tb[IFLA_BOND_PRIMARY_RESELECT]); 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); } - if (props->arp_all_targets_has) + if (props->arp_all_targets) NLA_PUT_U32(msg, IFLA_BOND_ARP_ALL_TARGETS, props->arp_all_targets); if (props->arp_interval) NLA_PUT_U32(msg, IFLA_BOND_ARP_INTERVAL, props->arp_interval); diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c index 35e6bf5956..7d82083c4c 100644 --- a/src/libnm-platform/nm-platform.c +++ b/src/libnm-platform/nm-platform.c @@ -6082,7 +6082,6 @@ nm_platform_lnk_bond_to_string(const NMPlatformLnkBond *lnk, char *buf, gsize le char sbuf_updelay[30]; char sbuf_downdelay[30]; char sbuf_peer_notif_delay[60]; - char sbuf_arp_all_targets[30]; char sbuf_resend_igmp[30]; char sbuf_lp_interval[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 */ " packets_per_port %u" "%s" /* peer_notif_delay */ - "%s" /* arp_all_targets */ + " arp_all_targets %u" " arp_validate %u" " ad_actor_sys_prio %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) : "", - lnk->arp_all_targets_has || lnk->arp_all_targets != 0 - ? nm_sprintf_buf(sbuf_arp_all_targets, - " arp_all_targets%s %u", - !lnk->arp_all_targets_has ? "?" : "", - lnk->arp_all_targets) - : "", + lnk->arp_all_targets, lnk->arp_validate, lnk->ad_actor_sys_prio, lnk->ad_user_port_key, @@ -8043,7 +8037,6 @@ nm_platform_lnk_bond_hash_update(const NMPlatformLnkBond *obj, NMHashState *h) obj->primary_reselect, obj->xmit_hash_policy, NM_HASH_COMBINE_BOOLS(guint16, - obj->arp_all_targets_has, obj->downdelay_has, obj->lp_interval_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, primary_reselect); 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, lp_interval_has); NM_CMP_FIELD_BOOL(a, b, miimon_has); diff --git a/src/libnm-platform/nm-platform.h b/src/libnm-platform/nm-platform.h index 74629217c9..7792bbf5c3 100644 --- a/src/libnm-platform/nm-platform.h +++ b/src/libnm-platform/nm-platform.h @@ -920,7 +920,6 @@ typedef struct { guint8 mode; guint8 primary_reselect; guint8 xmit_hash_policy; - bool arp_all_targets_has : 1; bool downdelay_has : 1; bool lp_interval_has : 1; bool miimon_has : 1;