about summary refs log tree commit diff
path: root/src/libnm-platform
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2025-11-17 17:43:34 +0100
committerMichael Biebl <biebl@debian.org>2025-11-17 17:43:34 +0100
commit01609e485803fa250413385ae209660fb7b30a2e (patch)
tree0992589c495fcaaea35f4a0452362326a4dbc3ba /src/libnm-platform
parentbc5f10851bffd6af1c2855635be7a28b6dba3195 (diff)
New upstream version 1.54.2 upstream/1.54.2
Diffstat (limited to 'src/libnm-platform')
-rw-r--r--src/libnm-platform/nm-linux-platform.c12
-rw-r--r--src/libnm-platform/nm-platform.c17
-rw-r--r--src/libnm-platform/nm-platform.h2
3 files changed, 27 insertions, 4 deletions
diff --git a/src/libnm-platform/nm-linux-platform.c b/src/libnm-platform/nm-linux-platform.c
index d45893fe..0c1097c2 100644
--- a/src/libnm-platform/nm-linux-platform.c
+++ b/src/libnm-platform/nm-linux-platform.c
@@ -253,7 +253,8 @@ G_STATIC_ASSERT(RTA_MAX == (__RTA_MAX - 1));
 #define IFLA_HSR_SEQ_NR           5
 #define IFLA_HSR_VERSION          6
 #define IFLA_HSR_PROTOCOL         7
-#define __IFLA_HSR_MAX            8
+#define IFLA_HSR_INTERLINK        8
+#define __IFLA_HSR_MAX            9
 
 /*****************************************************************************/
 
@@ -5196,6 +5197,15 @@ _nl_msg_new_link_set_linkinfo(struct nl_msg *msg, NMLinkType link_type, gconstpo
             NLA_PUT_U8(msg, IFLA_HSR_MULTICAST_SPEC, props->multicast_spec);
 
         NLA_PUT_U8(msg, IFLA_HSR_PROTOCOL, props->prp);
+
+        if (!props->prp && props->protocol_version >= 0) {
+            NLA_PUT_U8(msg, IFLA_HSR_VERSION, props->protocol_version);
+        }
+
+        if (props->interlink > 0) {
+            NLA_PUT_U32(msg, IFLA_HSR_INTERLINK, props->interlink);
+        }
+
         break;
     }
     case NM_LINK_TYPE_SIT:
diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c
index fd966d2c..33c763c3 100644
--- a/src/libnm-platform/nm-platform.c
+++ b/src/libnm-platform/nm-platform.c
@@ -6560,6 +6560,8 @@ nm_platform_lnk_gre_to_string(const NMPlatformLnkGre *lnk, char *buf, gsize len)
 const char *
 nm_platform_lnk_hsr_to_string(const NMPlatformLnkHsr *lnk, char *buf, gsize len)
 {
+    char interlink_buf[30];
+
     if (!nm_utils_to_string_buffer_init_null(lnk, &buf, &len))
         return buf;
 
@@ -6569,12 +6571,17 @@ nm_platform_lnk_hsr_to_string(const NMPlatformLnkHsr *lnk, char *buf, gsize len)
                "port1 %d "
                "port2 %d "
                "supervision_address " NM_ETHER_ADDR_FORMAT_STR " multicast_spec %u "
-               "prp %s",
+               "prp %s "
+               "protocol_version %d"
+               "%s", /* interlink */
                lnk->port1,
                lnk->port2,
                NM_ETHER_ADDR_FORMAT_VAL(&lnk->supervision_address),
                lnk->multicast_spec,
-               lnk->prp ? "on" : "off");
+               lnk->prp ? "on" : "off",
+               lnk->protocol_version,
+               lnk->interlink ? nm_sprintf_buf(interlink_buf, " interlink %d", lnk->interlink)
+                              : "");
     return buf;
 }
 
@@ -8488,7 +8495,9 @@ nm_platform_lnk_hsr_hash_update(const NMPlatformLnkHsr *obj, NMHashState *h)
                         obj->port2,
                         obj->supervision_address,
                         obj->multicast_spec,
-                        NM_HASH_COMBINE_BOOLS(guint8, obj->prp));
+                        NM_HASH_COMBINE_BOOLS(guint8, obj->prp),
+                        obj->protocol_version,
+                        obj->interlink);
 }
 
 int
@@ -8500,6 +8509,8 @@ nm_platform_lnk_hsr_cmp(const NMPlatformLnkHsr *a, const NMPlatformLnkHsr *b)
     NM_CMP_FIELD_MEMCMP(a, b, supervision_address);
     NM_CMP_FIELD(a, b, multicast_spec);
     NM_CMP_FIELD_BOOL(a, b, prp);
+    NM_CMP_FIELD(a, b, protocol_version);
+    NM_CMP_FIELD(a, b, interlink);
     return 0;
 }
 
diff --git a/src/libnm-platform/nm-platform.h b/src/libnm-platform/nm-platform.h
index e4ccb9b1..a63f40c7 100644
--- a/src/libnm-platform/nm-platform.h
+++ b/src/libnm-platform/nm-platform.h
@@ -845,7 +845,9 @@ typedef struct {
 typedef struct {
     int         port1;
     int         port2;
+    int         interlink;
     NMEtherAddr supervision_address;
+    gint8       protocol_version;
     guint8      multicast_spec;
     bool        prp : 1;
 } _nm_alignas(NMPlatformObject) NMPlatformLnkHsr;