summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-10-21 14:55:15 +0200
committerThomas Haller <thaller@redhat.com>2022-10-27 09:11:23 +0200
commitb1ec664869cfc9a8c300f709433638199e9383ed (patch)
tree9a11526c0a6f0a1d7d0b569f436d145f5c11b6d4
parent05d0b81130228a25b186911fe2a575a09f22dcb3 (diff)
downloadNetworkManager-b1ec664869cfc9a8c300f709433638199e9383ed.tar.gz
libnm: cleanup from/to dbus callbacks in ip[46]-config
-rw-r--r--src/libnm-core-impl/nm-setting-ip4-config.c64
-rw-r--r--src/libnm-core-impl/nm-setting-ip6-config.c15
2 files changed, 35 insertions, 44 deletions
diff --git a/src/libnm-core-impl/nm-setting-ip4-config.c b/src/libnm-core-impl/nm-setting-ip4-config.c
index a207e2d7ef..a8c3aea75f 100644
--- a/src/libnm-core-impl/nm-setting-ip4-config.c
+++ b/src/libnm-core-impl/nm-setting-ip4-config.c
@@ -415,10 +415,11 @@ ip4_addresses_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip4_addresses_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *addrs;
- GVariant *s_ip4;
- char **labels, *gateway = NULL;
- int i;
+ gs_unref_ptrarray GPtrArray *addrs = NULL;
+ gs_unref_variant GVariant *s_ip4 = NULL;
+ gs_free const char **labels = NULL;
+ gs_free char *gateway = NULL;
+ guint i;
/* FIXME: properly handle errors */
@@ -432,15 +433,15 @@ ip4_addresses_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
s_ip4 = g_variant_lookup_value(connection_dict,
NM_SETTING_IP4_CONFIG_SETTING_NAME,
NM_VARIANT_TYPE_SETTING);
- if (g_variant_lookup(s_ip4, "address-labels", "^as", &labels)) {
- for (i = 0; i < addrs->len && labels[i]; i++)
- if (*labels[i])
+ if (g_variant_lookup(s_ip4, "address-labels", "^a&s", &labels)) {
+ for (i = 0; i < addrs->len && labels[i]; i++) {
+ if (*labels[i]) {
nm_ip_address_set_attribute(addrs->pdata[i],
NM_IP_ADDRESS_ATTRIBUTE_LABEL,
g_variant_new_string(labels[i]));
- g_strfreev(labels);
+ }
+ }
}
- g_variant_unref(s_ip4);
g_object_set(setting,
NM_SETTING_IP_CONFIG_ADDRESSES,
@@ -448,8 +449,6 @@ ip4_addresses_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
NM_SETTING_IP_CONFIG_GATEWAY,
gateway,
NULL);
- g_ptr_array_unref(addrs);
- g_free(gateway);
return TRUE;
}
@@ -458,38 +457,38 @@ ip4_address_labels_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
{
NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG(setting);
gboolean have_labels = FALSE;
- GPtrArray *labels;
- GVariant *ret;
- int num_addrs, i;
+ gs_free GVariant **labels_free = NULL;
+ GVariant *s_empty;
+ GVariant **labels;
+ guint num_addrs;
+ guint i;
if (!_nm_connection_serialize_non_secret(flags))
return NULL;
num_addrs = nm_setting_ip_config_get_num_addresses(s_ip);
+ if (num_addrs == 0)
+ return NULL;
+
+ labels = nm_malloc_maybe_a(500, sizeof(gpointer) * num_addrs, &labels_free);
+
+ s_empty = nm_g_variant_singleton_s_empty();
+
for (i = 0; i < num_addrs; i++) {
NMIPAddress *addr = nm_setting_ip_config_get_address(s_ip, i);
GVariant *label = nm_ip_address_get_attribute(addr, NM_IP_ADDRESS_ATTRIBUTE_LABEL);
if (label) {
have_labels = TRUE;
- break;
- }
+ labels[i] = label;
+ } else
+ labels[i] = s_empty;
}
+
if (!have_labels)
return NULL;
- labels = g_ptr_array_sized_new(num_addrs);
- for (i = 0; i < num_addrs; i++) {
- NMIPAddress *addr = nm_setting_ip_config_get_address(s_ip, i);
- GVariant *label = nm_ip_address_get_attribute(addr, NM_IP_ADDRESS_ATTRIBUTE_LABEL);
-
- g_ptr_array_add(labels, (char *) (label ? g_variant_get_string(label, NULL) : ""));
- }
-
- ret = g_variant_new_strv((const char *const *) labels->pdata, labels->len);
- g_ptr_array_unref(labels);
-
- return ret;
+ return g_variant_new_array(G_VARIANT_TYPE_STRING, labels, num_addrs);
}
static GVariant *
@@ -507,7 +506,7 @@ ip4_address_data_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip4_address_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *addrs;
+ gs_unref_ptrarray GPtrArray *addrs = NULL;
/* FIXME: properly handle errors */
@@ -519,7 +518,6 @@ ip4_address_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
addrs = nm_utils_ip_addresses_from_variant(value, AF_INET);
g_object_set(setting, NM_SETTING_IP_CONFIG_ADDRESSES, addrs, NULL);
- g_ptr_array_unref(addrs);
return TRUE;
}
@@ -535,7 +533,7 @@ ip4_routes_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip4_routes_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *routes;
+ gs_unref_ptrarray GPtrArray *routes = NULL;
/* FIXME: properly handle errors */
@@ -546,7 +544,6 @@ ip4_routes_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
routes = nm_utils_ip4_routes_from_variant(value);
g_object_set(setting, property_info->name, routes, NULL);
- g_ptr_array_unref(routes);
return TRUE;
}
@@ -565,7 +562,7 @@ ip4_route_data_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip4_route_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *routes;
+ gs_unref_ptrarray GPtrArray *routes = NULL;
/* FIXME: properly handle errors */
@@ -577,7 +574,6 @@ ip4_route_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
routes = nm_utils_ip_routes_from_variant(value, AF_INET);
g_object_set(setting, NM_SETTING_IP_CONFIG_ROUTES, routes, NULL);
- g_ptr_array_unref(routes);
return TRUE;
}
diff --git a/src/libnm-core-impl/nm-setting-ip6-config.c b/src/libnm-core-impl/nm-setting-ip6-config.c
index 53486d0f7f..02bc85c295 100644
--- a/src/libnm-core-impl/nm-setting-ip6-config.c
+++ b/src/libnm-core-impl/nm-setting-ip6-config.c
@@ -416,8 +416,8 @@ ip6_addresses_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip6_addresses_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *addrs;
- char *gateway = NULL;
+ gs_unref_ptrarray GPtrArray *addrs = NULL;
+ gs_free char *gateway = NULL;
if (!_nm_setting_use_legacy_property(setting, connection_dict, "addresses", "address-data")) {
*out_is_modified = FALSE;
@@ -432,8 +432,6 @@ ip6_addresses_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
NM_SETTING_IP_CONFIG_GATEWAY,
gateway,
NULL);
- g_ptr_array_unref(addrs);
- g_free(gateway);
return TRUE;
}
@@ -452,7 +450,7 @@ ip6_address_data_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip6_address_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *addrs;
+ gs_unref_ptrarray GPtrArray *addrs = NULL;
/* Ignore 'address-data' if we're going to process 'addresses' */
if (_nm_setting_use_legacy_property(setting, connection_dict, "addresses", "address-data")) {
@@ -462,7 +460,6 @@ ip6_address_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
addrs = nm_utils_ip_addresses_from_variant(value, AF_INET6);
g_object_set(setting, NM_SETTING_IP_CONFIG_ADDRESSES, addrs, NULL);
- g_ptr_array_unref(addrs);
return TRUE;
}
@@ -478,7 +475,7 @@ ip6_routes_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip6_routes_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *routes;
+ gs_unref_ptrarray GPtrArray *routes = NULL;
if (!_nm_setting_use_legacy_property(setting, connection_dict, "routes", "route-data")) {
*out_is_modified = FALSE;
@@ -487,7 +484,6 @@ ip6_routes_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
routes = nm_utils_ip6_routes_from_variant(value);
g_object_set(setting, property_info->name, routes, NULL);
- g_ptr_array_unref(routes);
return TRUE;
}
@@ -506,7 +502,7 @@ ip6_route_data_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
static gboolean
ip6_route_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
- GPtrArray *routes;
+ gs_unref_ptrarray GPtrArray *routes = NULL;
/* Ignore 'route-data' if we're going to process 'routes' */
if (_nm_setting_use_legacy_property(setting, connection_dict, "routes", "route-data")) {
@@ -516,7 +512,6 @@ ip6_route_data_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
routes = nm_utils_ip_routes_from_variant(value, AF_INET6);
g_object_set(setting, NM_SETTING_IP_CONFIG_ROUTES, routes, NULL);
- g_ptr_array_unref(routes);
return TRUE;
}