summaryrefslogtreecommitdiff
path: root/libnm-core
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-08-21 13:19:53 -0400
committerDan Winship <danw@gnome.org>2014-09-04 09:20:10 -0400
commit6a4127cfa063a77e3ee886a999441c71f6a0e11c (patch)
tree050213bad5058c40c4eaae8e8122e0c2dcc9e69c /libnm-core
parent3a54d050985d6ef2067b025571910a8ccd3cbd57 (diff)
downloadNetworkManager-6a4127cfa063a77e3ee886a999441c71f6a0e11c.tar.gz
libnm-core: change list-of-string and array-of-string properties to G_TYPE_STRV
Change all DBUS_TYPE_G_LIST_OF_STRING and DBUS_TYPE_G_ARRAY_OF_STRING properties to G_TYPE_STRV, and update everything accordingly. (This doesn't actually require using _nm_setting_class_transform_property(); dbus-glib is happy to transform between 'as' and G_TYPE_STRV.)
Diffstat (limited to 'libnm-core')
-rw-r--r--libnm-core/nm-connection.c5
-rw-r--r--libnm-core/nm-setting-8021x.c18
-rw-r--r--libnm-core/nm-setting-connection.c37
-rw-r--r--libnm-core/nm-setting-ip4-config.c34
-rw-r--r--libnm-core/nm-setting-ip6-config.c7
-rw-r--r--libnm-core/nm-setting-vlan.c38
-rw-r--r--libnm-core/nm-setting-wired.c51
-rw-r--r--libnm-core/nm-setting-wired.h2
-rw-r--r--libnm-core/nm-setting-wireless-security.c20
-rw-r--r--libnm-core/nm-setting-wireless.c13
-rw-r--r--libnm-core/nm-utils-private.h3
-rw-r--r--libnm-core/nm-utils.c31
-rw-r--r--libnm-core/nm-value-transforms.c100
-rw-r--r--libnm-core/tests/test-general.c52
14 files changed, 175 insertions, 236 deletions
diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c
index a167117b8e..e02ccf98ff 100644
--- a/libnm-core/nm-connection.c
+++ b/libnm-core/nm-connection.c
@@ -256,12 +256,11 @@ validate_permissions_type (GHashTable *hash, GError **error)
if (s_con) {
permissions = g_hash_table_lookup (s_con, NM_SETTING_CONNECTION_PERMISSIONS);
if (permissions) {
- if ( !G_VALUE_HOLDS (permissions, G_TYPE_STRV)
- && !G_VALUE_HOLDS (permissions, DBUS_TYPE_G_LIST_OF_STRING)) {
+ if (!G_VALUE_HOLDS (permissions, G_TYPE_STRV)) {
g_set_error_literal (error,
NM_SETTING_ERROR,
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH,
- "Wrong permissions property type; should be a list of strings.");
+ "Wrong permissions property type; should be an array of strings.");
return FALSE;
}
}
diff --git a/libnm-core/nm-setting-8021x.c b/libnm-core/nm-setting-8021x.c
index 15e91725ff..688fee7342 100644
--- a/libnm-core/nm-setting-8021x.c
+++ b/libnm-core/nm-setting-8021x.c
@@ -2819,7 +2819,7 @@ set_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_EAP:
g_slist_free_full (priv->eap, g_free);
- priv->eap = g_value_dup_boxed (value);
+ priv->eap = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_IDENTITY:
g_free (priv->identity);
@@ -2855,7 +2855,7 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_ALTSUBJECT_MATCHES:
g_slist_free_full (priv->altsubject_matches, g_free);
- priv->altsubject_matches = g_value_dup_boxed (value);
+ priv->altsubject_matches = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_CLIENT_CERT:
if (priv->client_cert) {
@@ -2911,7 +2911,7 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_PHASE2_ALTSUBJECT_MATCHES:
g_slist_free_full (priv->phase2_altsubject_matches, g_free);
- priv->phase2_altsubject_matches = g_value_dup_boxed (value);
+ priv->phase2_altsubject_matches = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_PHASE2_CLIENT_CERT:
if (priv->phase2_client_cert) {
@@ -3003,7 +3003,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_EAP:
- g_value_set_boxed (value, priv->eap);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->eap));
break;
case PROP_IDENTITY:
g_value_set_string (value, priv->identity);
@@ -3024,7 +3024,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, priv->subject_match);
break;
case PROP_ALTSUBJECT_MATCHES:
- g_value_set_boxed (value, priv->altsubject_matches);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->altsubject_matches));
break;
case PROP_CLIENT_CERT:
g_value_set_boxed (value, priv->client_cert);
@@ -3054,7 +3054,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, priv->phase2_subject_match);
break;
case PROP_PHASE2_ALTSUBJECT_MATCHES:
- g_value_set_boxed (value, priv->phase2_altsubject_matches);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->phase2_altsubject_matches));
break;
case PROP_PHASE2_CLIENT_CERT:
g_value_set_boxed (value, priv->phase2_client_cert);
@@ -3135,7 +3135,7 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *setting_class)
g_object_class_install_property
(object_class, PROP_EAP,
g_param_spec_boxed (NM_SETTING_802_1X_EAP, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -3241,7 +3241,7 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *setting_class)
g_object_class_install_property
(object_class, PROP_ALTSUBJECT_MATCHES,
g_param_spec_boxed (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -3417,7 +3417,7 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *setting_class)
g_object_class_install_property
(object_class, PROP_PHASE2_ALTSUBJECT_MATCHES,
g_param_spec_boxed (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-connection.c b/libnm-core/nm-setting-connection.c
index fc1e43e04b..9fea63b783 100644
--- a/libnm-core/nm-setting-connection.c
+++ b/libnm-core/nm-setting-connection.c
@@ -24,7 +24,7 @@
#include <glib/gi18n.h>
#include "nm-utils.h"
-#include "nm-dbus-glib-types.h"
+#include "nm-utils-private.h"
#include "nm-setting-connection.h"
#include "nm-setting-private.h"
@@ -1033,14 +1033,15 @@ finalize (GObject *object)
}
static GSList *
-perm_stringlist_to_permlist (GSList *strlist)
+perm_strv_to_permlist (char **strv)
{
- GSList *list = NULL, *iter;
+ GSList *list = NULL;
+ int i;
- for (iter = strlist; iter; iter = g_slist_next (iter)) {
+ for (i = 0; strv[i]; i++) {
Permission *p;
- p = permission_new_from_str ((const char *) iter->data);
+ p = permission_new_from_str (strv[i]);
if (p)
list = g_slist_append (list, p);
}
@@ -1073,7 +1074,7 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_PERMISSIONS:
g_slist_free_full (priv->permissions, (GDestroyNotify) permission_free);
- priv->permissions = perm_stringlist_to_permlist (g_value_get_boxed (value));
+ priv->permissions = perm_strv_to_permlist (g_value_get_boxed (value));
break;
case PROP_AUTOCONNECT:
priv->autoconnect = g_value_get_boolean (value);
@@ -1098,7 +1099,7 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_SECONDARIES:
g_slist_free_full (priv->secondaries, g_free);
- priv->secondaries = g_value_dup_boxed (value);
+ priv->secondaries = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_GATEWAY_PING_TIMEOUT:
priv->gateway_ping_timeout = g_value_get_uint (value);
@@ -1109,14 +1110,18 @@ set_property (GObject *object, guint prop_id,
}
}
-static GSList *
-perm_permlist_to_stringlist (GSList *permlist)
+static char **
+perm_permlist_to_strv (GSList *permlist)
{
- GSList *list = NULL, *iter;
+ GPtrArray *strings;
+ GSList *iter;
+ strings = g_ptr_array_new ();
for (iter = permlist; iter; iter = g_slist_next (iter))
- list = g_slist_append (list, permission_to_string ((Permission *) iter->data));
- return list;
+ g_ptr_array_add (strings, permission_to_string ((Permission *) iter->data));
+ g_ptr_array_add (strings, NULL);
+
+ return (char **) g_ptr_array_free (strings, FALSE);
}
static void
@@ -1140,7 +1145,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, nm_setting_connection_get_connection_type (setting));
break;
case PROP_PERMISSIONS:
- g_value_take_boxed (value, perm_permlist_to_stringlist (priv->permissions));
+ g_value_take_boxed (value, perm_permlist_to_strv (priv->permissions));
break;
case PROP_AUTOCONNECT:
g_value_set_boolean (value, nm_setting_connection_get_autoconnect (setting));
@@ -1161,7 +1166,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, nm_setting_connection_get_slave_type (setting));
break;
case PROP_SECONDARIES:
- g_value_set_boxed (value, priv->secondaries);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->secondaries));
break;
case PROP_GATEWAY_PING_TIMEOUT:
g_value_set_uint (value, priv->gateway_ping_timeout);
@@ -1289,7 +1294,7 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class)
g_object_class_install_property
(object_class, PROP_PERMISSIONS,
g_param_spec_boxed (NM_SETTING_CONNECTION_PERMISSIONS, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -1403,7 +1408,7 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class)
g_object_class_install_property
(object_class, PROP_SECONDARIES,
g_param_spec_boxed (NM_SETTING_CONNECTION_SECONDARIES, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_FUZZY_IGNORE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-ip4-config.c b/libnm-core/nm-setting-ip4-config.c
index 62fcff750c..1228778cbc 100644
--- a/libnm-core/nm-setting-ip4-config.c
+++ b/libnm-core/nm-setting-ip4-config.c
@@ -30,7 +30,7 @@
#include "nm-glib-compat.h"
#include "nm-setting-private.h"
#include "nm-core-internal.h"
-
+#include "nm-utils-private.h"
/**
* SECTION:nm-setting-ip4-config
@@ -459,7 +459,7 @@ gboolean
nm_setting_ip4_config_add_address (NMSettingIP4Config *setting,
NMIP4Address *address)
{
- return _nm_setting_ip4_config_add_address_with_label (setting, address, NULL);
+ return _nm_setting_ip4_config_add_address_with_label (setting, address, "");
}
gboolean
@@ -473,6 +473,7 @@ _nm_setting_ip4_config_add_address_with_label (NMSettingIP4Config *setting,
g_return_val_if_fail (NM_IS_SETTING_IP4_CONFIG (setting), FALSE);
g_return_val_if_fail (address != NULL, FALSE);
+ g_return_val_if_fail (label != NULL, FALSE);
priv = NM_SETTING_IP4_CONFIG_GET_PRIVATE (setting);
for (iter = priv->addresses; iter; iter = g_slist_next (iter)) {
@@ -510,8 +511,7 @@ nm_setting_ip4_config_remove_address (NMSettingIP4Config *setting, guint32 i)
nm_ip4_address_unref ((NMIP4Address *) addr->data);
priv->addresses = g_slist_delete_link (priv->addresses, addr);
- if (label->data)
- g_free (label->data);
+ g_free (label->data);
priv->address_labels = g_slist_delete_link (priv->address_labels, label);
g_object_notify (G_OBJECT (setting), NM_SETTING_IP4_CONFIG_ADDRESSES);
@@ -840,6 +840,9 @@ verify_label (const char *label)
const char *p;
char *iface;
+ if (!*label)
+ return TRUE;
+
p = strchr (label, ':');
if (!p)
return FALSE;
@@ -976,7 +979,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
return FALSE;
}
- if (label && !verify_label (label)) {
+ if (!verify_label (label)) {
g_set_error (error,
NM_SETTING_IP4_CONFIG_ERROR,
NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY,
@@ -1078,7 +1081,7 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_DNS_SEARCH:
g_slist_free_full (priv->dns_search, g_free);
- priv->dns_search = g_value_dup_boxed (value);
+ priv->dns_search = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_ADDRESSES:
g_slist_free_full (priv->addresses, (GDestroyNotify) nm_ip4_address_unref);
@@ -1088,19 +1091,12 @@ set_property (GObject *object, guint prop_id,
g_slist_free_full (priv->address_labels, g_free);
priv->address_labels = NULL;
for (iter = priv->addresses; iter; iter = iter->next)
- priv->address_labels = g_slist_prepend (priv->address_labels, NULL);
+ priv->address_labels = g_slist_prepend (priv->address_labels, g_strdup (""));
}
break;
case PROP_ADDRESS_LABELS:
g_slist_free_full (priv->address_labels, g_free);
- priv->address_labels = g_value_dup_boxed (value);
- /* NULLs get converted to "" when this is sent over D-Bus. */
- for (iter = priv->address_labels; iter; iter = iter->next) {
- if (!g_strcmp0 (iter->data, "")) {
- g_free (iter->data);
- iter->data = NULL;
- }
- }
+ priv->address_labels = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_ROUTES:
g_slist_free_full (priv->routes, (GDestroyNotify) nm_ip4_route_unref);
@@ -1150,13 +1146,13 @@ get_property (GObject *object, guint prop_id,
g_value_set_boxed (value, priv->dns);
break;
case PROP_DNS_SEARCH:
- g_value_set_boxed (value, priv->dns_search);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->dns_search));
break;
case PROP_ADDRESSES:
nm_utils_ip4_addresses_to_gvalue (priv->addresses, value);
break;
case PROP_ADDRESS_LABELS:
- g_value_set_boxed (value, priv->address_labels);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->address_labels));
break;
case PROP_ROUTES:
nm_utils_ip4_routes_to_gvalue (priv->routes, value);
@@ -1256,7 +1252,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class)
g_object_class_install_property
(object_class, PROP_DNS_SEARCH,
g_param_spec_boxed (NM_SETTING_IP4_CONFIG_DNS_SEARCH, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -1288,7 +1284,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class)
g_object_class_install_property
(object_class, PROP_ADDRESS_LABELS,
g_param_spec_boxed ("address-labels", "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-ip6-config.c b/libnm-core/nm-setting-ip6-config.c
index 46cc538fba..a17e3620c3 100644
--- a/libnm-core/nm-setting-ip6-config.c
+++ b/libnm-core/nm-setting-ip6-config.c
@@ -25,6 +25,7 @@
#include "nm-setting-ip6-config.h"
#include "nm-utils.h"
+#include "nm-utils-private.h"
#include "nm-dbus-glib-types.h"
#include "nm-glib-compat.h"
#include "nm-setting-private.h"
@@ -902,7 +903,7 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_DNS_SEARCH:
g_slist_free_full (priv->dns_search, g_free);
- priv->dns_search = g_value_dup_boxed (value);
+ priv->dns_search = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_ADDRESSES:
g_slist_free_full (priv->addresses, g_free);
@@ -951,7 +952,7 @@ get_property (GObject *object, guint prop_id,
nm_utils_ip6_dns_to_gvalue (priv->dns, value);
break;
case PROP_DNS_SEARCH:
- g_value_set_boxed (value, priv->dns_search);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->dns_search));
break;
case PROP_ADDRESSES:
nm_utils_ip6_addresses_to_gvalue (priv->addresses, value);
@@ -1063,7 +1064,7 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class)
g_object_class_install_property
(object_class, PROP_DNS_SEARCH,
g_param_spec_boxed (NM_SETTING_IP6_CONFIG_DNS_SEARCH, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-vlan.c b/libnm-core/nm-setting-vlan.c
index e27ffcda15..f1781027d0 100644
--- a/libnm-core/nm-setting-vlan.c
+++ b/libnm-core/nm-setting-vlan.c
@@ -21,12 +21,10 @@
#include <stdlib.h>
#include <string.h>
-#include <dbus/dbus-glib.h>
#include <glib/gi18n.h>
#include "nm-setting-vlan.h"
#include "nm-utils.h"
-#include "nm-dbus-glib-types.h"
#include "nm-setting-connection.h"
#include "nm-setting-private.h"
@@ -574,14 +572,15 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
}
static GSList *
-priority_stringlist_to_maplist (NMVlanPriorityMap map, GSList *strlist)
+priority_strv_to_maplist (NMVlanPriorityMap map, char **strv)
{
- GSList *list = NULL, *iter;
+ GSList *list = NULL;
+ int i;
- for (iter = strlist; iter; iter = g_slist_next (iter)) {
+ for (i = 0; strv[i]; i++) {
PriorityMap *item;
- item = priority_map_new_from_str (map, (const char *) iter->data);
+ item = priority_map_new_from_str (map, strv[i]);
if (item)
list = g_slist_prepend (list, item);
}
@@ -609,12 +608,12 @@ set_property (GObject *object, guint prop_id,
case PROP_INGRESS_PRIORITY_MAP:
g_slist_free_full (priv->ingress_priority_map, g_free);
priv->ingress_priority_map =
- priority_stringlist_to_maplist (NM_VLAN_INGRESS_MAP, g_value_get_boxed (value));
+ priority_strv_to_maplist (NM_VLAN_INGRESS_MAP, g_value_get_boxed (value));
break;
case PROP_EGRESS_PRIORITY_MAP:
g_slist_free_full (priv->egress_priority_map, g_free);
priv->egress_priority_map =
- priority_stringlist_to_maplist (NM_VLAN_EGRESS_MAP, g_value_get_boxed (value));
+ priority_strv_to_maplist (NM_VLAN_EGRESS_MAP, g_value_get_boxed (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -622,17 +621,22 @@ set_property (GObject *object, guint prop_id,
}
}
-static GSList *
-priority_maplist_to_stringlist (GSList *list)
+static char **
+priority_maplist_to_strv (GSList *list)
{
- GSList *strlist = NULL, *iter;
+ GSList *iter;
+ GPtrArray *strv;
+
+ strv = g_ptr_array_new ();
for (iter = list; iter; iter = g_slist_next (iter)) {
PriorityMap *item = iter->data;
- strlist = g_slist_prepend (strlist, g_strdup_printf ("%d:%d", item->from, item->to));
+ g_ptr_array_add (strv, g_strdup_printf ("%d:%d", item->from, item->to));
}
- return g_slist_reverse (strlist);
+ g_ptr_array_add (strv, NULL);
+
+ return (char **) g_ptr_array_free (strv, FALSE);
}
static void
@@ -653,10 +657,10 @@ get_property (GObject *object, guint prop_id,
g_value_set_uint (value, priv->flags);
break;
case PROP_INGRESS_PRIORITY_MAP:
- g_value_take_boxed (value, priority_maplist_to_stringlist (priv->ingress_priority_map));
+ g_value_take_boxed (value, priority_maplist_to_strv (priv->ingress_priority_map));
break;
case PROP_EGRESS_PRIORITY_MAP:
- g_value_take_boxed (value, priority_maplist_to_stringlist (priv->egress_priority_map));
+ g_value_take_boxed (value, priority_maplist_to_strv (priv->egress_priority_map));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -753,7 +757,7 @@ nm_setting_vlan_class_init (NMSettingVlanClass *setting_class)
g_object_class_install_property
(object_class, PROP_INGRESS_PRIORITY_MAP,
g_param_spec_boxed (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS));
@@ -768,7 +772,7 @@ nm_setting_vlan_class_init (NMSettingVlanClass *setting_class)
g_object_class_install_property
(object_class, PROP_EGRESS_PRIORITY_MAP,
g_param_spec_boxed (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c
index 683180937c..e115da69db 100644
--- a/libnm-core/nm-setting-wired.c
+++ b/libnm-core/nm-setting-wired.c
@@ -72,7 +72,7 @@ typedef struct {
char *cloned_mac_address;
GSList *mac_address_blacklist;
guint32 mtu;
- GPtrArray *s390_subchannels;
+ char **s390_subchannels;
char *s390_nettype;
GHashTable *s390_options;
} NMSettingWiredPrivate;
@@ -380,15 +380,15 @@ nm_setting_wired_get_mtu (NMSettingWired *setting)
* connection is applicable to. The connection should only be used in
* conjunction with that device.
*
- * Returns: (element-type utf8): #GPtrArray of strings, each specifying one
- * subchannel the s390 device uses to communicate to the host.
+ * Returns: (transfer none) (element-type utf8): array of strings, each specifying
+ * one subchannel the s390 device uses to communicate to the host.
**/
-const GPtrArray *
+const char * const *
nm_setting_wired_get_s390_subchannels (NMSettingWired *setting)
{
g_return_val_if_fail (NM_IS_SETTING_WIRED (setting), NULL);
- return NM_SETTING_WIRED_GET_PRIVATE (setting)->s390_subchannels;
+ return (const char * const *) NM_SETTING_WIRED_GET_PRIVATE (setting)->s390_subchannels;
}
/**
@@ -628,14 +628,17 @@ verify (NMSetting *setting, GSList *all_settings, GError **error)
}
}
- if ( priv->s390_subchannels
- && !(priv->s390_subchannels->len == 3 || priv->s390_subchannels->len == 2)) {
- g_set_error_literal (error,
- NM_SETTING_WIRED_ERROR,
- NM_SETTING_WIRED_ERROR_INVALID_PROPERTY,
- _("property is invalid"));
- g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_S390_SUBCHANNELS);
- return FALSE;
+ if (priv->s390_subchannels) {
+ int len = g_strv_length (priv->s390_subchannels);
+
+ if (len != 2 && len != 3) {
+ g_set_error_literal (error,
+ NM_SETTING_WIRED_ERROR,
+ NM_SETTING_WIRED_ERROR_INVALID_PROPERTY,
+ _("property is invalid"));
+ g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_S390_SUBCHANNELS);
+ return FALSE;
+ }
}
if (priv->s390_nettype && !_nm_utils_string_in_list (priv->s390_nettype, valid_nettype)) {
@@ -697,10 +700,8 @@ finalize (GObject *object)
g_free (priv->cloned_mac_address);
g_slist_free_full (priv->mac_address_blacklist, g_free);
- if (priv->s390_subchannels) {
- g_ptr_array_set_free_func (priv->s390_subchannels, g_free);
- g_ptr_array_free (priv->s390_subchannels, TRUE);
- }
+ if (priv->s390_subchannels)
+ g_strfreev (priv->s390_subchannels);
G_OBJECT_CLASS (nm_setting_wired_parent_class)->finalize (object);
}
@@ -743,16 +744,14 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_MAC_ADDRESS_BLACKLIST:
g_slist_free_full (priv->mac_address_blacklist, g_free);
- priv->mac_address_blacklist = g_value_dup_boxed (value);
+ priv->mac_address_blacklist = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_MTU:
priv->mtu = g_value_get_uint (value);
break;
case PROP_S390_SUBCHANNELS:
- if (priv->s390_subchannels) {
- g_ptr_array_set_free_func (priv->s390_subchannels, g_free);
- g_ptr_array_free (priv->s390_subchannels, TRUE);
- }
+ if (priv->s390_subchannels)
+ g_strfreev (priv->s390_subchannels);
priv->s390_subchannels = g_value_dup_boxed (value);
break;
case PROP_S390_NETTYPE:
@@ -799,13 +798,13 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, nm_setting_wired_get_cloned_mac_address (setting));
break;
case PROP_MAC_ADDRESS_BLACKLIST:
- g_value_set_boxed (value, nm_setting_wired_get_mac_address_blacklist (setting));
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->mac_address_blacklist));
break;
case PROP_MTU:
g_value_set_uint (value, nm_setting_wired_get_mtu (setting));
break;
case PROP_S390_SUBCHANNELS:
- g_value_set_boxed (value, nm_setting_wired_get_s390_subchannels (setting));
+ g_value_set_boxed (value, priv->s390_subchannels);
break;
case PROP_S390_NETTYPE:
g_value_set_string (value, nm_setting_wired_get_s390_nettype (setting));
@@ -939,7 +938,7 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_class)
g_object_class_install_property
(object_class, PROP_MAC_ADDRESS_BLACKLIST,
g_param_spec_boxed (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_FUZZY_IGNORE |
G_PARAM_STATIC_STRINGS));
@@ -973,7 +972,7 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_class)
g_object_class_install_property
(object_class, PROP_S390_SUBCHANNELS,
g_param_spec_boxed (NM_SETTING_WIRED_S390_SUBCHANNELS, "", "",
- DBUS_TYPE_G_ARRAY_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-wired.h b/libnm-core/nm-setting-wired.h
index b395f2e3be..73a25230c1 100644
--- a/libnm-core/nm-setting-wired.h
+++ b/libnm-core/nm-setting-wired.h
@@ -103,7 +103,7 @@ void nm_setting_wired_clear_mac_blacklist_items (NMSettingWired *
guint32 nm_setting_wired_get_mtu (NMSettingWired *setting);
-const GPtrArray * nm_setting_wired_get_s390_subchannels (NMSettingWired *setting);
+const char * const *nm_setting_wired_get_s390_subchannels (NMSettingWired *setting);
const char * nm_setting_wired_get_s390_nettype (NMSettingWired *setting);
guint32 nm_setting_wired_get_num_s390_options (NMSettingWired *setting);
diff --git a/libnm-core/nm-setting-wireless-security.c b/libnm-core/nm-setting-wireless-security.c
index 8ea4971509..c84d123b2d 100644
--- a/libnm-core/nm-setting-wireless-security.c
+++ b/libnm-core/nm-setting-wireless-security.c
@@ -22,13 +22,11 @@
#include <config.h>
#include <string.h>
-#include <dbus/dbus-glib.h>
#include <glib/gi18n.h>
#include "nm-setting-wireless-security.h"
#include "nm-setting-8021x.h"
#include "nm-utils.h"
-#include "nm-dbus-glib-types.h"
#include "nm-utils-private.h"
#include "nm-setting-private.h"
@@ -1191,15 +1189,15 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_PROTO:
g_slist_free_full (priv->proto, g_free);
- priv->proto = g_value_dup_boxed (value);
+ priv->proto = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_PAIRWISE:
g_slist_free_full (priv->pairwise, g_free);
- priv->pairwise = g_value_dup_boxed (value);
+ priv->pairwise = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_GROUP:
g_slist_free_full (priv->group, g_free);
- priv->group = g_value_dup_boxed (value);
+ priv->group = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_LEAP_USERNAME:
g_free (priv->leap_username);
@@ -1265,13 +1263,13 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, priv->auth_alg);
break;
case PROP_PROTO:
- g_value_set_boxed (value, priv->proto);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->proto));
break;
case PROP_PAIRWISE:
- g_value_set_boxed (value, priv->pairwise);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->pairwise));
break;
case PROP_GROUP:
- g_value_set_boxed (value, priv->group);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->group));
break;
case PROP_LEAP_USERNAME:
g_value_set_string (value, priv->leap_username);
@@ -1389,7 +1387,7 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *setting
g_object_class_install_property
(object_class, PROP_PROTO,
g_param_spec_boxed (NM_SETTING_WIRELESS_SECURITY_PROTO, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -1404,7 +1402,7 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *setting
g_object_class_install_property
(object_class, PROP_PAIRWISE,
g_param_spec_boxed (NM_SETTING_WIRELESS_SECURITY_PAIRWISE, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
@@ -1419,7 +1417,7 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *setting
g_object_class_install_property
(object_class, PROP_GROUP,
g_param_spec_boxed (NM_SETTING_WIRELESS_SECURITY_GROUP, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c
index d3a35af1b4..4d96c5137a 100644
--- a/libnm-core/nm-setting-wireless.c
+++ b/libnm-core/nm-setting-wireless.c
@@ -898,14 +898,14 @@ set_property (GObject *object, guint prop_id,
break;
case PROP_MAC_ADDRESS_BLACKLIST:
g_slist_free_full (priv->mac_address_blacklist, g_free);
- priv->mac_address_blacklist = g_value_dup_boxed (value);
+ priv->mac_address_blacklist = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_MTU:
priv->mtu = g_value_get_uint (value);
break;
case PROP_SEEN_BSSIDS:
g_slist_free_full (priv->seen_bssids, g_free);
- priv->seen_bssids = g_value_dup_boxed (value);
+ priv->seen_bssids = _nm_utils_strv_to_slist (g_value_get_boxed (value));
break;
case PROP_HIDDEN:
priv->hidden = g_value_get_boolean (value);
@@ -921,6 +921,7 @@ get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
NMSettingWireless *setting = NM_SETTING_WIRELESS (object);
+ NMSettingWirelessPrivate *priv = NM_SETTING_WIRELESS_GET_PRIVATE (object);
switch (prop_id) {
case PROP_SSID:
@@ -951,13 +952,13 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, nm_setting_wireless_get_cloned_mac_address (setting));
break;
case PROP_MAC_ADDRESS_BLACKLIST:
- g_value_set_boxed (value, nm_setting_wireless_get_mac_address_blacklist (setting));
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->mac_address_blacklist));
break;
case PROP_MTU:
g_value_set_uint (value, nm_setting_wireless_get_mtu (setting));
break;
case PROP_SEEN_BSSIDS:
- g_value_set_boxed (value, NM_SETTING_WIRELESS_GET_PRIVATE (setting)->seen_bssids);
+ g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->seen_bssids));
break;
case PROP_HIDDEN:
g_value_set_boolean (value, nm_setting_wireless_get_hidden (setting));
@@ -1138,7 +1139,7 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class)
g_object_class_install_property
(object_class, PROP_MAC_ADDRESS_BLACKLIST,
g_param_spec_boxed (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_FUZZY_IGNORE |
G_PARAM_STATIC_STRINGS));
@@ -1156,7 +1157,7 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class)
g_object_class_install_property
(object_class, PROP_SEEN_BSSIDS,
g_param_spec_boxed (NM_SETTING_WIRELESS_SEEN_BSSIDS, "", "",
- DBUS_TYPE_G_LIST_OF_STRING,
+ G_TYPE_STRV,
G_PARAM_READWRITE |
NM_SETTING_PARAM_FUZZY_IGNORE |
G_PARAM_STATIC_STRINGS));
diff --git a/libnm-core/nm-utils-private.h b/libnm-core/nm-utils-private.h
index 580ced77f3..b4ddf6e8a0 100644
--- a/libnm-core/nm-utils-private.h
+++ b/libnm-core/nm-utils-private.h
@@ -39,4 +39,7 @@ void _nm_utils_hwaddr_to_dbus (const GValue *prop_value,
void _nm_utils_hwaddr_from_dbus (const GValue *dbus_value,
GValue *prop_value);
+GSList * _nm_utils_strv_to_slist (char **strv);
+char ** _nm_utils_slist_to_strv (GSList *slist);
+
#endif
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
index 7bc1aad9c6..9945a79210 100644
--- a/libnm-core/nm-utils.c
+++ b/libnm-core/nm-utils.c
@@ -564,6 +564,37 @@ _nm_utils_hash_values_to_slist (GHashTable *hash)
return list;
}
+GSList *
+_nm_utils_strv_to_slist (char **strv)
+{
+ int i;
+ GSList *list = NULL;
+
+ g_return_val_if_fail (strv != NULL, NULL);
+
+ for (i = 0; strv[i]; i++)
+ list = g_slist_prepend (list, g_strdup (strv[i]));
+
+ return g_slist_reverse (list);
+}
+
+char **
+_nm_utils_slist_to_strv (GSList *slist)
+{
+ GSList *iter;
+ char **strv;
+ int len, i = 0;
+
+ len = g_slist_length (slist);
+ strv = g_new (char *, len + 1);
+
+ for (i = 0, iter = slist; iter; iter = iter->next, i++)
+ strv[i] = g_strdup (iter->data);
+ strv[i] = NULL;
+
+ return strv;
+}
+
static gboolean
device_supports_ap_ciphers (guint32 dev_caps,
guint32 ap_flags,
diff --git a/libnm-core/nm-value-transforms.c b/libnm-core/nm-value-transforms.c
index 00e7e77579..2631a9d651 100644
--- a/libnm-core/nm-value-transforms.c
+++ b/libnm-core/nm-value-transforms.c
@@ -37,80 +37,6 @@ _nm_utils_convert_op_to_string (const GValue *src_value, GValue *dest_value)
}
static void
-_nm_utils_convert_strv_to_slist (const GValue *src_value, GValue *dest_value)
-{
- char **str;
- GSList *list = NULL;
- guint i = 0;
-
- g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), G_TYPE_STRV));
-
- str = (char **) g_value_get_boxed (src_value);
-
- while (str && str[i])
- list = g_slist_prepend (list, g_strdup (str[i++]));
-
- g_value_take_boxed (dest_value, g_slist_reverse (list));
-}
-
-static void
-_nm_utils_convert_slist_to_strv (const GValue *src_value, GValue *dest_value)
-{
- GSList *slist;
- char **strv;
- int len, i = 0;
-
- slist = g_value_get_boxed (src_value);
- len = g_slist_length (slist);
-
- strv = g_new (char *, len + 1);
- for (i = 0; slist; slist = slist->next, i++)
- strv[i] = g_strdup (slist->data);
- strv[i] = NULL;
-
- g_value_take_boxed (dest_value, strv);
-}
-
-static void
-_nm_utils_convert_strv_to_ptrarray (const GValue *src_value, GValue *dest_value)
-{
- char **str;
- GPtrArray *array = NULL;
- guint i = 0;
-
- g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), G_TYPE_STRV));
-
- str = (char **) g_value_get_boxed (src_value);
-
- array = g_ptr_array_sized_new (3);
- while (str && str[i])
- g_ptr_array_add (array, g_strdup (str[i++]));
-
- g_value_take_boxed (dest_value, array);
-}
-
-static void
-_nm_utils_convert_string_list_to_string (const GValue *src_value, GValue *dest_value)
-{
- GSList *strings;
- GString *printable;
- GSList *iter;
-
- g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_LIST_OF_STRING));
-
- strings = (GSList *) g_value_get_boxed (src_value);
-
- printable = g_string_new (NULL);
- for (iter = strings; iter; iter = iter->next) {
- if (iter != strings)
- g_string_append_c (printable, ',');
- g_string_append (printable, iter->data ? iter->data : "(null)");
- }
-
- g_value_take_string (dest_value, g_string_free (printable, FALSE));
-}
-
-static void
_string_array_to_string (const GPtrArray *strings, GValue *dest_value)
{
GString *printable;
@@ -127,17 +53,6 @@ _string_array_to_string (const GPtrArray *strings, GValue *dest_value)
}
static void
-_nm_utils_convert_string_array_to_string (const GValue *src_value, GValue *dest_value)
-{
- const GPtrArray *strings;
-
- g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_ARRAY_OF_STRING));
-
- strings = (const GPtrArray *) g_value_get_boxed (src_value);
- _string_array_to_string (strings, dest_value);
-}
-
-static void
_nm_utils_convert_op_array_to_string (const GValue *src_value, GValue *dest_value)
{
const GPtrArray *strings;
@@ -543,21 +458,6 @@ _nm_value_transforms_register (void)
g_value_register_transform_func (DBUS_TYPE_G_OBJECT_PATH,
G_TYPE_STRING,
_nm_utils_convert_op_to_string);
- g_value_register_transform_func (G_TYPE_STRV,
- DBUS_TYPE_G_LIST_OF_STRING,
- _nm_utils_convert_strv_to_slist);
- g_value_register_transform_func (DBUS_TYPE_G_LIST_OF_STRING,
- G_TYPE_STRV,
- _nm_utils_convert_slist_to_strv);
- g_value_register_transform_func (G_TYPE_STRV,
- DBUS_TYPE_G_ARRAY_OF_STRING,
- _nm_utils_convert_strv_to_ptrarray);
- g_value_register_transform_func (DBUS_TYPE_G_LIST_OF_STRING,
- G_TYPE_STRING,
- _nm_utils_convert_string_list_to_string);
- g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_STRING,
- G_TYPE_STRING,
- _nm_utils_convert_string_array_to_string);
g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH,
G_TYPE_STRING,
_nm_utils_convert_op_array_to_string);
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c
index 122d12afaa..a5f8ee6f97 100644
--- a/libnm-core/tests/test-general.c
+++ b/libnm-core/tests/test-general.c
@@ -312,7 +312,7 @@ test_setting_ip4_config_labels (void)
NMIP4Address *addr;
const char *label;
GPtrArray *addrs;
- GSList *labels;
+ char **labels;
GError *error = NULL;
s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new ();
@@ -331,7 +331,7 @@ test_setting_ip4_config_labels (void)
g_assert_no_error (error);
label = _nm_setting_ip4_config_get_address_label (s_ip4, 0);
- g_assert_cmpstr (label, ==, NULL);
+ g_assert_cmpstr (label, ==, "");
/* addr 2 */
addr = nm_ip4_address_new ();
@@ -351,13 +351,13 @@ test_setting_ip4_config_labels (void)
nm_ip4_address_set_address (addr, 0x03030303);
nm_ip4_address_set_prefix (addr, 24);
- _nm_setting_ip4_config_add_address_with_label (s_ip4, addr, NULL);
+ _nm_setting_ip4_config_add_address_with_label (s_ip4, addr, "");
nm_ip4_address_unref (addr);
nm_setting_verify (NM_SETTING (s_ip4), NULL, &error);
g_assert_no_error (error);
label = _nm_setting_ip4_config_get_address_label (s_ip4, 2);
- g_assert_cmpstr (label, ==, NULL);
+ g_assert_cmpstr (label, ==, "");
/* Remove addr 1 and re-verify remaining addresses */
nm_setting_ip4_config_remove_address (s_ip4, 0);
@@ -372,7 +372,7 @@ test_setting_ip4_config_labels (void)
addr = nm_setting_ip4_config_get_address (s_ip4, 1);
g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x03030303);
label = _nm_setting_ip4_config_get_address_label (s_ip4, 1);
- g_assert_cmpstr (label, ==, NULL);
+ g_assert_cmpstr (label, ==, "");
/* Test explicit property assignment */
@@ -396,18 +396,18 @@ test_setting_ip4_config_labels (void)
addr = nm_setting_ip4_config_get_address (s_ip4, 0);
g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x02020202);
label = _nm_setting_ip4_config_get_address_label (s_ip4, 0);
- g_assert_cmpstr (label, ==, NULL);
+ g_assert_cmpstr (label, ==, "");
addr = nm_setting_ip4_config_get_address (s_ip4, 1);
g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x03030303);
label = _nm_setting_ip4_config_get_address_label (s_ip4, 1);
- g_assert_cmpstr (label, ==, NULL);
+ g_assert_cmpstr (label, ==, "");
/* Setting labels now will leave addresses untouched */
g_object_set (G_OBJECT (s_ip4),
"address-labels", labels,
NULL);
- g_boxed_free (DBUS_TYPE_G_LIST_OF_STRING, labels);
+ g_strfreev (labels);
nm_setting_verify (NM_SETTING (s_ip4), NULL, &error);
g_assert_no_error (error);
g_assert_cmpint (nm_setting_ip4_config_get_num_addresses (s_ip4), ==, 2);
@@ -420,38 +420,40 @@ test_setting_ip4_config_labels (void)
addr = nm_setting_ip4_config_get_address (s_ip4, 1);
g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x03030303);
label = _nm_setting_ip4_config_get_address_label (s_ip4, 1);
- g_assert_cmpstr (label, ==, NULL);
+ g_assert_cmpstr (label, ==, "");
/* Setting labels to a value that's too short or too long will result in
* the setting not verifying.
*/
- labels = g_slist_append (NULL, "eth0:2");
+ labels = g_strsplit ("eth0:2", ",", -1);
g_object_set (G_OBJECT (s_ip4),
"address-labels", labels,
NULL);
+ g_strfreev (labels);
nm_setting_verify (NM_SETTING (s_ip4), NULL, &error);
g_assert_error (error, NM_SETTING_IP4_CONFIG_ERROR, NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY);
g_assert (g_str_has_prefix (error->message, "ipv4.address-labels:"));
g_clear_error (&error);
- labels = g_slist_append (labels, "eth0:3");
+ labels = g_strsplit ("eth0:2,eth0:3", ",", -1);
g_object_set (G_OBJECT (s_ip4),
"address-labels", labels,
NULL);
+ g_strfreev (labels);
nm_setting_verify (NM_SETTING (s_ip4), NULL, &error);
g_assert_no_error (error);
- labels = g_slist_append (labels, "eth0:4");
+ labels = g_strsplit ("eth0:2,eth0:3,eth0:4", ",", -1);
g_object_set (G_OBJECT (s_ip4),
"address-labels", labels,
NULL);
+ g_strfreev (labels);
nm_setting_verify (NM_SETTING (s_ip4), NULL, &error);
g_assert_error (error, NM_SETTING_IP4_CONFIG_ERROR, NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY);
g_assert (g_str_has_prefix (error->message, "ipv4.address-labels:"));
g_clear_error (&error);
-
g_object_unref (s_ip4);
}
@@ -1226,7 +1228,7 @@ test_setting_connection_permissions_helpers (void)
NMSettingConnection *s_con;
gboolean success;
char buf[9] = { 0x61, 0x62, 0x63, 0xff, 0xfe, 0xfd, 0x23, 0x01, 0x00 };
- GSList *list = NULL;
+ char **perms;
const char *expected_perm = "user:" TEST_UNAME ":";
s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ());
@@ -1295,14 +1297,14 @@ test_setting_connection_permissions_helpers (void)
check_permission (s_con, 0, TEST_UNAME, "setting-connection-permissions-helpers");
/* Check the actual GObject property just to be paranoid */
- g_object_get (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, &list, NULL);
- ASSERT (list != NULL,
- "setting-connection-permissions-helpers", "unexpected failure getting permissions list");
- ASSERT (g_slist_length (list) == 1,
- "setting-connection-permissions-helpers", "unexpected failure getting number of permissions in list");
- ASSERT (strcmp (list->data, expected_perm) == 0,
+ g_object_get (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, &perms, NULL);
+ ASSERT (perms != NULL,
+ "setting-connection-permissions-helpers", "unexpected failure getting permissions");
+ ASSERT (g_strv_length (perms) == 1,
+ "setting-connection-permissions-helpers", "unexpected failure getting number of permissions");
+ ASSERT (strcmp (perms[0], expected_perm) == 0,
"setting-connection-permissions-helpers", "unexpected permission property data");
- g_slist_free_full (list, g_free);
+ g_strfreev (perms);
/* Now remove that permission and ensure we have 0 permissions */
nm_setting_connection_remove_permission (s_con, 0);
@@ -1320,7 +1322,7 @@ add_permission_property (NMSettingConnection *s_con,
const char *detail)
{
GString *str;
- GSList *list = NULL;
+ char *perms[2];
str = g_string_sized_new (50);
if (ptype)
@@ -1339,11 +1341,11 @@ add_permission_property (NMSettingConnection *s_con,
if (detail)
g_string_append (str, detail);
- list = g_slist_append (list, str->str);
- g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, list, NULL);
+ perms[0] = str->str;
+ perms[1] = NULL;
+ g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, perms, NULL);
g_string_free (str, TRUE);
- g_slist_free (list);
}
static void