diff options
Diffstat (limited to 'src/libnm-platform/nm-platform.c')
| -rw-r--r-- | src/libnm-platform/nm-platform.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c index 914dcd86..27888d6c 100644 --- a/src/libnm-platform/nm-platform.c +++ b/src/libnm-platform/nm-platform.c @@ -3223,7 +3223,6 @@ gboolean nm_platform_link_veth_get_properties(NMPlatform *self, int ifindex, int *out_peer_ifindex) { const NMPlatformLink *plink; - int peer_ifindex; plink = nm_platform_link_get(self, ifindex); if (!plink) @@ -3232,23 +3231,10 @@ nm_platform_link_veth_get_properties(NMPlatform *self, int ifindex, int *out_pee if (plink->type != NM_LINK_TYPE_VETH) return FALSE; - if (plink->parent != 0) { - NM_SET_OUT(out_peer_ifindex, plink->parent); - return TRUE; - } - - /* Pre-4.1 kernel did not expose the peer_ifindex as IFA_LINK. Lookup via ethtool. */ - if (out_peer_ifindex) { - nm_auto_pop_netns NMPNetns *netns = NULL; - - if (!nm_platform_netns_push(self, &netns)) - return FALSE; - peer_ifindex = nmp_ethtool_ioctl_get_peer_ifindex(plink->ifindex); - if (peer_ifindex <= 0) - return FALSE; + if (plink->parent == 0) + return FALSE; - *out_peer_ifindex = peer_ifindex; - } + NM_SET_OUT(out_peer_ifindex, plink->parent); return TRUE; } @@ -6387,6 +6373,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 +6404,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 +6456,12 @@ 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 || lnk->arp_missed_max != 0 + ? 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, @@ -8402,7 +8394,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])); @@ -8480,6 +8473,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; } |