about summary refs log tree commit diff
path: root/src/core/devices
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2023-01-26 21:18:45 +0100
committerMichael Biebl <biebl@debian.org>2023-01-26 21:18:45 +0100
commit40ec077ea305994c1fc2130add6787ca0c73e2c6 (patch)
tree7694e44c64d371a1f8e57b891ef9846143108996 /src/core/devices
parent5d9e3721ad196595acd064e0d3ce66edc2613e51 (diff)
New upstream version 1.40.12 upstream/1.40.12
Diffstat (limited to 'src/core/devices')
-rw-r--r--src/core/devices/nm-device.c2
-rw-r--r--src/core/devices/ovs/nm-ovsdb.c70
2 files changed, 41 insertions, 31 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index a723bf7f..c4f0f9a2 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -15043,7 +15043,7 @@ nm_device_recheck_available_connections(NMDevice *self)
 
         if (nm_device_check_connection_available(self,
                                                  nm_settings_connection_get_connection(sett_conn),
-                                                 NM_DEVICE_CHECK_CON_AVAILABLE_NONE,
+                                                 _NM_DEVICE_CHECK_CON_AVAILABLE_FOR_USER_REQUEST,
                                                  NULL,
                                                  NULL)) {
             if (available_connections_add(self, sett_conn))
diff --git a/src/core/devices/ovs/nm-ovsdb.c b/src/core/devices/ovs/nm-ovsdb.c
index d3e858a1..0d688396 100644
--- a/src/core/devices/ovs/nm-ovsdb.c
+++ b/src/core/devices/ovs/nm-ovsdb.c
@@ -592,21 +592,30 @@ _set_bridge_ports(json_t *params, const char *ifname, json_t *new_ports)
 static void
 _set_bridge_mac(json_t *params, const char *ifname, const char *mac)
 {
-    json_array_append_new(params,
-                          json_pack("{s:s, s:s, s:{s:[s, [[s, s]]]}, s:[[s, s, s]]}",
-                                    "op",
-                                    "update",
-                                    "table",
-                                    "Bridge",
-                                    "row",
-                                    "other_config",
-                                    "map",
-                                    "hwaddr",
-                                    mac,
-                                    "where",
-                                    "name",
-                                    "==",
-                                    ifname));
+    json_array_append_new(
+        params,
+        json_pack("{s:s, s:s, s:[[s, s, [s, [s]]], [s, s, [s, [[s, s]]]]], s:[[s, s, s]]}",
+                  "op",
+                  "mutate",
+                  "table",
+                  "Bridge",
+                  "mutations",
+
+                  "other_config",
+                  "delete",
+                  "set",
+                  "hwaddr",
+
+                  "other_config",
+                  "insert",
+                  "map",
+                  "hwaddr",
+                  mac,
+
+                  "where",
+                  "name",
+                  "==",
+                  ifname));
 }
 
 /**
@@ -714,26 +723,27 @@ _j_create_external_ids_array_update(const char *connection_uuid,
 
     mutations = json_array();
 
+    array = json_array();
     if (exid_old) {
-        array = NULL;
         g_hash_table_iter_init(&iter, exid_old);
         while (g_hash_table_iter_next(&iter, (gpointer *) &key, NULL)) {
-            if (nm_g_hash_table_contains(exid_new, key))
-                continue;
-            if (NM_STR_HAS_PREFIX(key, NM_OVS_EXTERNAL_ID_NM_PREFIX))
-                continue;
-
-            if (!array)
-                array = json_array();
-
             json_array_append_new(array, json_string(key));
         }
-        if (array) {
-            json_array_append_new(
-                mutations,
-                json_pack("[s, s, [s, o]]", "external_ids", "delete", "set", array));
+    }
+    if (exid_new) {
+        g_hash_table_iter_init(&iter, exid_new);
+        while (g_hash_table_iter_next(&iter, (gpointer *) &key, NULL)) {
+            if (nm_g_hash_table_contains(exid_old, key))
+                continue;
+            json_array_append_new(array, json_string(key));
         }
     }
+    if (!nm_g_hash_table_contains(exid_old, NM_OVS_EXTERNAL_ID_NM_PREFIX)
+        && !nm_g_hash_table_contains(exid_new, NM_OVS_EXTERNAL_ID_NM_PREFIX)) {
+        json_array_append_new(array, json_string(NM_OVS_EXTERNAL_ID_NM_PREFIX));
+    }
+    json_array_append_new(mutations,
+                          json_pack("[s, s, [s, o]]", "external_ids", "delete", "set", array));
 
     array = json_array();
 
@@ -1569,9 +1579,9 @@ _external_ids_to_string(const GArray *arr)
 
         if (i > 0)
             nm_str_buf_append_c(&strbuf, ',');
-        nm_str_buf_append_printf(&strbuf, " \"%s\" = \"%s\"]", n->name, n->value_str);
+        nm_str_buf_append_printf(&strbuf, " \"%s\" = \"%s\" ", n->name, n->value_str);
     }
-    nm_str_buf_append(&strbuf, " ]");
+    nm_str_buf_append(&strbuf, "]");
 
     return nm_str_buf_finalize(&strbuf, NULL);
 }