about summary refs log tree commit diff
path: root/src/nm-cloud-setup/nmcs-provider.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2025-02-28 17:38:21 +0100
committerMichael Biebl <biebl@debian.org>2025-02-28 17:38:21 +0100
commit625e8ce60e826bde943487b8238884a9232e4562 (patch)
tree4c1f0f88c466c69c27fc9ffbe787cc7d0964d630 /src/nm-cloud-setup/nmcs-provider.c
parent8bdf070ff046f482f6eb5e2b15ebc216f5d1e3da (diff)
New upstream version 1.52.0 upstream/1.52.0
Diffstat (limited to 'src/nm-cloud-setup/nmcs-provider.c')
-rw-r--r--src/nm-cloud-setup/nmcs-provider.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/nm-cloud-setup/nmcs-provider.c b/src/nm-cloud-setup/nmcs-provider.c
index 0f06c4e2..251749ba 100644
--- a/src/nm-cloud-setup/nmcs-provider.c
+++ b/src/nm-cloud-setup/nmcs-provider.c
@@ -188,6 +188,7 @@ nmcs_provider_get_config_iface_data_create(NMCSProviderGetConfigTaskData *get_co
 
     iface_data  = g_slice_new(NMCSProviderGetConfigIfaceData);
     *iface_data = (NMCSProviderGetConfigIfaceData) {
+        .provider        = g_object_ref(get_config_data->self),
         .get_config_data = get_config_data,
         .hwaddr          = g_strdup(hwaddr),
         .iface_idx       = -1,
@@ -203,6 +204,11 @@ nmcs_provider_get_config_iface_data_create(NMCSProviderGetConfigTaskData *get_co
         iface_data->priv.aliyun = (typeof(iface_data->priv.aliyun)) {
             .has_primary_ip_address = FALSE,
         };
+    } else if (G_OBJECT_TYPE(get_config_data->self) == nmcs_provider_oci_get_type()) {
+        iface_data->priv.oci = (typeof(iface_data->priv.oci)) {
+            .vlan_tag      = 0,
+            .parent_hwaddr = NULL,
+        };
     }
 
     /* the has does not own the key (iface_datta->hwaddr), the lifetime of the
@@ -220,6 +226,9 @@ _iface_data_free(gpointer data)
     g_free(iface_data->ipv4s_arr);
     nm_g_ptr_array_unref(iface_data->iproutes);
     g_free((char *) iface_data->hwaddr);
+    if (G_OBJECT_TYPE(iface_data->provider) == nmcs_provider_oci_get_type())
+        g_free((char *) iface_data->priv.oci.parent_hwaddr);
+    g_clear_object(&iface_data->provider);
 
     nm_g_slice_free(iface_data);
 }