about summary refs log tree commit diff
path: root/src/libnm-platform/nm-platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnm-platform/nm-platform.c')
-rw-r--r--src/libnm-platform/nm-platform.c34
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;
 }