mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-04-25 14:20:43 +02:00
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.)
This commit is contained in:
parent
3a54d05098
commit
6a4127cfa0
26 changed files with 295 additions and 392 deletions
|
|
@ -388,6 +388,26 @@ setup_signals (void)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
nmc_convert_strv_to_string (const GValue *src_value, GValue *dest_value)
|
||||
{
|
||||
char **strings;
|
||||
|
||||
strings = g_value_get_boxed (src_value);
|
||||
if (strings)
|
||||
g_value_take_string (dest_value, g_strjoinv (",", strings));
|
||||
else
|
||||
g_value_set_string (dest_value, "");
|
||||
}
|
||||
|
||||
static void
|
||||
nmc_value_transforms_register (void)
|
||||
{
|
||||
g_value_register_transform_func (G_TYPE_STRV,
|
||||
G_TYPE_STRING,
|
||||
nmc_convert_strv_to_string);
|
||||
}
|
||||
|
||||
static NMClient *
|
||||
nmc_get_client (NmCli *nmc)
|
||||
{
|
||||
|
|
@ -496,6 +516,8 @@ main (int argc, char *argv[])
|
|||
*/
|
||||
rl_set_keyboard_input_timeout (10000);
|
||||
|
||||
nmc_value_transforms_register ();
|
||||
|
||||
nmc_init (&nm_cli);
|
||||
g_idle_add (start, &args_info);
|
||||
|
||||
|
|
|
|||
|
|
@ -96,9 +96,9 @@ permissions_transform_to_allusers (GBinding *binding,
|
|||
GValue *target_value,
|
||||
gpointer user_data)
|
||||
{
|
||||
GSList *perms = g_value_get_boxed (source_value);
|
||||
char **perms = g_value_get_boxed (source_value);
|
||||
|
||||
g_value_set_boolean (target_value, perms == NULL);
|
||||
g_value_set_boolean (target_value, g_strv_length (perms) == 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -109,12 +109,13 @@ permissions_transform_from_allusers (GBinding *binding,
|
|||
gpointer user_data)
|
||||
{
|
||||
gboolean allusers = g_value_get_boolean (source_value);
|
||||
GSList *perms = NULL;
|
||||
char **perms = NULL;
|
||||
|
||||
if (allusers) {
|
||||
char *perm = g_strdup_printf ("user:%s:", g_get_user_name ());
|
||||
perms = g_new (char *, 2);
|
||||
|
||||
perms = g_slist_prepend (perms, perm);
|
||||
perms[0] = g_strdup_printf ("user:%s:", g_get_user_name ());
|
||||
perms[1] = NULL;
|
||||
}
|
||||
g_value_take_boxed (target_value, perms);
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -36,80 +36,6 @@ _nm_utils_convert_op_to_string (const GValue *src_value, GValue *dest_value)
|
|||
g_value_set_string (dest_value, (const char *) g_value_get_boxed (src_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)
|
||||
{
|
||||
|
|
@ -126,17 +52,6 @@ _string_array_to_string (const GPtrArray *strings, GValue *dest_value)
|
|||
g_value_take_string (dest_value, g_string_free (printable, FALSE));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -409,7 +409,7 @@ static gboolean
|
|||
match_subchans (NMDeviceEthernet *self, NMSettingWired *s_wired, gboolean *try_mac)
|
||||
{
|
||||
NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (self);
|
||||
const GPtrArray *subchans;
|
||||
const char * const *subchans;
|
||||
int i;
|
||||
|
||||
*try_mac = TRUE;
|
||||
|
|
@ -423,8 +423,8 @@ match_subchans (NMDeviceEthernet *self, NMSettingWired *s_wired, gboolean *try_m
|
|||
return FALSE;
|
||||
|
||||
/* Make sure each subchannel in the connection is a subchannel of this device */
|
||||
for (i = 0; i < subchans->len; i++) {
|
||||
const char *candidate = g_ptr_array_index (subchans, i);
|
||||
for (i = 0; subchans[i]; i++) {
|
||||
const char *candidate = subchans[i];
|
||||
|
||||
if ( (priv->subchan1 && !strcmp (priv->subchan1, candidate))
|
||||
|| (priv->subchan2 && !strcmp (priv->subchan2, candidate))
|
||||
|
|
|
|||
|
|
@ -337,8 +337,7 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIP4Config *setting, i
|
|||
address.lifetime = NM_PLATFORM_LIFETIME_PERMANENT;
|
||||
address.preferred = NM_PLATFORM_LIFETIME_PERMANENT;
|
||||
address.source = NM_PLATFORM_SOURCE_USER;
|
||||
if (label)
|
||||
g_strlcpy (address.label, label, sizeof (address.label));
|
||||
g_strlcpy (address.label, label, sizeof (address.label));
|
||||
|
||||
nm_ip4_config_add_address (config, &address);
|
||||
}
|
||||
|
|
@ -425,10 +424,7 @@ nm_ip4_config_create_setting (const NMIP4Config *config)
|
|||
if (same_prefix (address->address, gateway, address->plen))
|
||||
nm_ip4_address_set_gateway (s_addr, gateway);
|
||||
|
||||
if (*address->label)
|
||||
_nm_setting_ip4_config_add_address_with_label (s_ip4, s_addr, address->label);
|
||||
else
|
||||
nm_setting_ip4_config_add_address (s_ip4, s_addr);
|
||||
_nm_setting_ip4_config_add_address_with_label (s_ip4, s_addr, address->label);
|
||||
nm_ip4_address_unref (s_addr);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1138,7 +1138,7 @@ get_settings_auth_cb (NMSettingsConnection *self,
|
|||
NMSettingConnection *s_con;
|
||||
NMSettingWireless *s_wifi;
|
||||
guint64 timestamp = 0;
|
||||
GSList *bssid_list;
|
||||
char **bssids;
|
||||
|
||||
dupl_con = nm_simple_connection_new_clone (NM_CONNECTION (self));
|
||||
g_assert (dupl_con);
|
||||
|
|
@ -1159,11 +1159,11 @@ get_settings_auth_cb (NMSettingsConnection *self,
|
|||
* from the same reason as timestamp. Thus we put it here to GetSettings()
|
||||
* return settings too.
|
||||
*/
|
||||
bssid_list = nm_settings_connection_get_seen_bssids (self);
|
||||
bssids = nm_settings_connection_get_seen_bssids (self);
|
||||
s_wifi = nm_connection_get_setting_wireless (NM_CONNECTION (dupl_con));
|
||||
if (bssid_list && s_wifi)
|
||||
g_object_set (s_wifi, NM_SETTING_WIRELESS_SEEN_BSSIDS, bssid_list, NULL);
|
||||
g_slist_free (bssid_list);
|
||||
if (bssids && bssids[0] && s_wifi)
|
||||
g_object_set (s_wifi, NM_SETTING_WIRELESS_SEEN_BSSIDS, bssids, NULL);
|
||||
g_free (bssids);
|
||||
|
||||
/* Secrets should *never* be returned by the GetSettings method, they
|
||||
* get returned by the GetSecrets method which can be better
|
||||
|
|
@ -1712,12 +1712,25 @@ nm_settings_connection_read_and_fill_timestamp (NMSettingsConnection *connection
|
|||
* Returns: (transfer container) list of seen BSSIDs (in the standard hex-digits-and-colons notation).
|
||||
* The caller is responsible for freeing the list, but not the content.
|
||||
**/
|
||||
GSList *
|
||||
char **
|
||||
nm_settings_connection_get_seen_bssids (NMSettingsConnection *connection)
|
||||
{
|
||||
NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (connection);
|
||||
GHashTableIter iter;
|
||||
char **bssids, *bssid;
|
||||
int i;
|
||||
|
||||
g_return_val_if_fail (NM_IS_SETTINGS_CONNECTION (connection), NULL);
|
||||
|
||||
return _nm_utils_hash_values_to_slist (NM_SETTINGS_CONNECTION_GET_PRIVATE (connection)->seen_bssids);
|
||||
bssids = g_new (char *, g_hash_table_size (priv->seen_bssids) + 1);
|
||||
|
||||
i = 0;
|
||||
g_hash_table_iter_init (&iter, priv->seen_bssids);
|
||||
while (g_hash_table_iter_next (&iter, NULL, (gpointer) &bssid))
|
||||
bssids[i++] = bssid;
|
||||
bssids[i] = NULL;
|
||||
|
||||
return bssids;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ void nm_settings_connection_update_timestamp (NMSettingsConnection *connection,
|
|||
|
||||
void nm_settings_connection_read_and_fill_timestamp (NMSettingsConnection *connection);
|
||||
|
||||
GSList *nm_settings_connection_get_seen_bssids (NMSettingsConnection *connection);
|
||||
char **nm_settings_connection_get_seen_bssids (NMSettingsConnection *connection);
|
||||
|
||||
gboolean nm_settings_connection_has_seen_bssid (NMSettingsConnection *connection,
|
||||
const char *bssid);
|
||||
|
|
|
|||
|
|
@ -2915,8 +2915,7 @@ read_8021x_list_value (shvarFile *ifcfg,
|
|||
const char *prop_name)
|
||||
{
|
||||
char *value;
|
||||
char **strv, **iter;
|
||||
GSList *gslist = NULL;
|
||||
char **strv;
|
||||
|
||||
g_return_if_fail (ifcfg != NULL);
|
||||
g_return_if_fail (ifcfg_var_name != NULL);
|
||||
|
|
@ -2927,16 +2926,8 @@ read_8021x_list_value (shvarFile *ifcfg,
|
|||
return;
|
||||
|
||||
strv = g_strsplit_set (value, " \t", 0);
|
||||
for (iter = strv; iter && *iter; iter++) {
|
||||
if (*iter[0] == '\0')
|
||||
continue;
|
||||
gslist = g_slist_prepend (gslist, *iter);
|
||||
}
|
||||
if (gslist) {
|
||||
gslist = g_slist_reverse (gslist);
|
||||
g_object_set (setting, prop_name, gslist, NULL);
|
||||
g_slist_free (gslist);
|
||||
}
|
||||
if (strv && strv[0])
|
||||
g_object_set (setting, prop_name, strv, NULL);
|
||||
g_strfreev (strv);
|
||||
g_free (value);
|
||||
}
|
||||
|
|
@ -3251,7 +3242,6 @@ make_wireless_setting (shvarFile *ifcfg,
|
|||
{
|
||||
NMSettingWireless *s_wireless;
|
||||
GByteArray *array = NULL;
|
||||
GSList *macaddr_blacklist = NULL;
|
||||
char *value = NULL;
|
||||
|
||||
s_wireless = NM_SETTING_WIRELESS (nm_setting_wireless_new ());
|
||||
|
|
@ -3272,25 +3262,12 @@ make_wireless_setting (shvarFile *ifcfg,
|
|||
|
||||
value = svGetValue (ifcfg, "HWADDR_BLACKLIST", FALSE);
|
||||
if (value) {
|
||||
char **list = NULL, **iter;
|
||||
char **list;
|
||||
|
||||
list = g_strsplit_set (value, " \t", 0);
|
||||
for (iter = list; iter && *iter; iter++) {
|
||||
if (**iter == '\0')
|
||||
continue;
|
||||
if (!nm_utils_hwaddr_valid (*iter, ETH_ALEN)) {
|
||||
PARSE_WARNING ("invalid MAC in HWADDR_BLACKLIST '%s'", *iter);
|
||||
continue;
|
||||
}
|
||||
macaddr_blacklist = g_slist_prepend (macaddr_blacklist, *iter);
|
||||
}
|
||||
if (macaddr_blacklist) {
|
||||
macaddr_blacklist = g_slist_reverse (macaddr_blacklist);
|
||||
g_object_set (s_wireless, NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, macaddr_blacklist, NULL);
|
||||
g_slist_free (macaddr_blacklist);
|
||||
}
|
||||
g_free (value);
|
||||
g_object_set (s_wireless, NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, list, NULL);
|
||||
g_strfreev (list);
|
||||
g_free (value);
|
||||
}
|
||||
|
||||
value = svGetValue (ifcfg, "ESSID", TRUE);
|
||||
|
|
@ -3558,17 +3535,8 @@ make_wired_setting (shvarFile *ifcfg,
|
|||
if (num_chans < 2 || num_chans > 3) {
|
||||
PARSE_WARNING ("invalid SUBCHANNELS '%s' (%d channels, 2 or 3 expected)",
|
||||
value, g_strv_length (chans));
|
||||
} else {
|
||||
GPtrArray *array = g_ptr_array_sized_new (num_chans);
|
||||
|
||||
g_ptr_array_add (array, chans[0]);
|
||||
g_ptr_array_add (array, chans[1]);
|
||||
if (num_chans == 3)
|
||||
g_ptr_array_add (array, chans[2]);
|
||||
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_S390_SUBCHANNELS, array, NULL);
|
||||
g_ptr_array_free (array, TRUE);
|
||||
}
|
||||
} else
|
||||
g_object_set (s_wired, NM_SETTING_WIRED_S390_SUBCHANNELS, chans, NULL);
|
||||
g_strfreev (chans);
|
||||
}
|
||||
g_free (value);
|
||||
|
|
|
|||
|
|
@ -2554,7 +2554,7 @@ test_read_wired_aliases_good (void)
|
|||
const char *expected_id = "System aliasem0";
|
||||
int expected_num_addresses = 4, expected_prefix = 24;
|
||||
const char *expected_address[4] = { "192.168.1.5", "192.168.1.6", "192.168.1.9", "192.168.1.99" };
|
||||
const char *expected_label[4] = { NULL, "aliasem0:1", "aliasem0:2", "aliasem0:99" };
|
||||
const char *expected_label[4] = { "", "aliasem0:1", "aliasem0:2", "aliasem0:99" };
|
||||
const char *expected_gateway[4] = { "192.168.1.1", "192.168.1.1", "192.168.1.1", "192.168.1.1" };
|
||||
int i, j;
|
||||
|
||||
|
|
@ -2699,7 +2699,7 @@ test_read_wired_aliases_bad (const char *base, const char *expected_id)
|
|||
const char *tmp;
|
||||
int expected_num_addresses = 1, expected_prefix = 24;
|
||||
const char *expected_address = "192.168.1.5";
|
||||
const char *expected_label = NULL;
|
||||
const char *expected_label = "";
|
||||
const char *expected_gateway = "192.168.1.1";
|
||||
NMIP4Address *ip4_addr;
|
||||
struct in_addr addr;
|
||||
|
|
@ -5850,7 +5850,7 @@ test_read_wired_qeth_static (void)
|
|||
const char *expected_channel0 = "0.0.0600";
|
||||
const char *expected_channel1 = "0.0.0601";
|
||||
const char *expected_channel2 = "0.0.0602";
|
||||
const GPtrArray *subchannels;
|
||||
const char * const *subchannels;
|
||||
|
||||
connection = connection_from_file (TEST_IFCFG_WIRED_QETH_STATIC,
|
||||
NULL,
|
||||
|
|
@ -5914,24 +5914,19 @@ test_read_wired_qeth_static (void)
|
|||
TEST_IFCFG_WIRED_QETH_STATIC,
|
||||
NM_SETTING_WIRED_SETTING_NAME,
|
||||
NM_SETTING_WIRED_S390_SUBCHANNELS);
|
||||
ASSERT (subchannels->len == 3,
|
||||
ASSERT (subchannels[0] && subchannels[1] && subchannels[2] && !subchannels[3],
|
||||
"wired-qeth-static-verify-wired", "failed to verify %s: invalid %s / %s key (not 3 elements)",
|
||||
TEST_IFCFG_WIRED_QETH_STATIC,
|
||||
NM_SETTING_WIRED_SETTING_NAME,
|
||||
NM_SETTING_WIRED_S390_SUBCHANNELS);
|
||||
|
||||
tmp = (const char *) g_ptr_array_index (subchannels, 0);
|
||||
ASSERT (strcmp (tmp, expected_channel0) == 0,
|
||||
ASSERT (strcmp (subchannels[0], expected_channel0) == 0,
|
||||
"wired-qeth-static-verify-wired", "failed to verify %s: unexpected subchannel #0",
|
||||
TEST_IFCFG_WIRED_QETH_STATIC);
|
||||
|
||||
tmp = (const char *) g_ptr_array_index (subchannels, 1);
|
||||
ASSERT (strcmp (tmp, expected_channel1) == 0,
|
||||
ASSERT (strcmp (subchannels[1], expected_channel1) == 0,
|
||||
"wired-qeth-static-verify-wired", "failed to verify %s: unexpected subchannel #1",
|
||||
TEST_IFCFG_WIRED_QETH_STATIC);
|
||||
|
||||
tmp = (const char *) g_ptr_array_index (subchannels, 2);
|
||||
ASSERT (strcmp (tmp, expected_channel2) == 0,
|
||||
ASSERT (strcmp (subchannels[2], expected_channel2) == 0,
|
||||
"wired-qeth-static-verify-wired", "failed to verify %s: unexpected subchannel #2",
|
||||
TEST_IFCFG_WIRED_QETH_STATIC);
|
||||
|
||||
|
|
@ -6022,7 +6017,7 @@ test_read_wired_ctc_static (void)
|
|||
const char *expected_id = "System test-wired-ctc-static";
|
||||
const char *expected_channel0 = "0.0.1b00";
|
||||
const char *expected_channel1 = "0.0.1b01";
|
||||
const GPtrArray *subchannels;
|
||||
const char * const *subchannels;
|
||||
gboolean success;
|
||||
|
||||
connection = connection_from_file (TEST_IFCFG_WIRED_CTC_STATIC,
|
||||
|
|
@ -6056,10 +6051,10 @@ test_read_wired_ctc_static (void)
|
|||
/* Subchannels */
|
||||
subchannels = nm_setting_wired_get_s390_subchannels (s_wired);
|
||||
g_assert (subchannels != NULL);
|
||||
g_assert_cmpint (subchannels->len, ==, 2);
|
||||
g_assert (subchannels[0] && subchannels[1] && !subchannels[2]);
|
||||
|
||||
g_assert_cmpstr (g_ptr_array_index (subchannels, 0), ==, expected_channel0);
|
||||
g_assert_cmpstr (g_ptr_array_index (subchannels, 1), ==, expected_channel1);
|
||||
g_assert_cmpstr (subchannels[0], ==, expected_channel0);
|
||||
g_assert_cmpstr (subchannels[1], ==, expected_channel1);
|
||||
|
||||
/* Nettype */
|
||||
g_assert_cmpstr (nm_setting_wired_get_s390_nettype (s_wired), ==, "ctc");
|
||||
|
|
@ -7736,7 +7731,7 @@ test_write_wired_aliases (void)
|
|||
char *uuid;
|
||||
int num_addresses = 4;
|
||||
guint32 ip[] = { 0x01010101, 0x01010102, 0x01010103, 0x01010104 };
|
||||
const char *label[] = { NULL, "alias0:2", NULL, "alias0:3" };
|
||||
const char *label[] = { "", "alias0:2", "", "alias0:3" };
|
||||
const guint32 gw = htonl (0x01010101);
|
||||
const guint32 prefix = 24;
|
||||
NMIP4Address *addr;
|
||||
|
|
@ -10329,7 +10324,7 @@ test_write_wifi_wpa_then_wep_with_perms (void)
|
|||
char *route6file = NULL;
|
||||
gboolean ignore_error = FALSE;
|
||||
GByteArray *ssid;
|
||||
GSList *perm_list = NULL;
|
||||
char **perms;
|
||||
const unsigned char ssid_data[] = "SomeSSID";
|
||||
|
||||
/* Test that writing out a WPA config then changing that to a WEP
|
||||
|
|
@ -10345,16 +10340,16 @@ test_write_wifi_wpa_then_wep_with_perms (void)
|
|||
nm_connection_add_setting (connection, NM_SETTING (s_con));
|
||||
|
||||
uuid = nm_utils_uuid_generate ();
|
||||
perm_list = g_slist_append (perm_list, "user:superman:");
|
||||
perms = g_strsplit ("user:superman:", ",", -1);
|
||||
g_object_set (s_con,
|
||||
NM_SETTING_CONNECTION_ID, "random wifi connection 2",
|
||||
NM_SETTING_CONNECTION_UUID, uuid,
|
||||
NM_SETTING_CONNECTION_AUTOCONNECT, TRUE,
|
||||
NM_SETTING_CONNECTION_PERMISSIONS, perm_list,
|
||||
NM_SETTING_CONNECTION_PERMISSIONS, perms,
|
||||
NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME,
|
||||
NULL);
|
||||
g_free (uuid);
|
||||
g_slist_free (perm_list);
|
||||
g_strfreev (perms);
|
||||
ASSERT (nm_setting_connection_get_num_permissions (s_con) == 1,
|
||||
"test_write_wifi_wpa_then_wep_with_perms", "unexpected failure adding valid user permisson");
|
||||
|
||||
|
|
@ -10679,7 +10674,7 @@ test_write_wired_qeth_dhcp (void)
|
|||
NMSettingIP4Config *s_ip4;
|
||||
NMSettingIP6Config *s_ip6;
|
||||
char *uuid;
|
||||
GPtrArray *subchans;
|
||||
char **subchans;
|
||||
gboolean success;
|
||||
GError *error = NULL;
|
||||
char *testfile = NULL;
|
||||
|
|
@ -10708,15 +10703,12 @@ test_write_wired_qeth_dhcp (void)
|
|||
s_wired = (NMSettingWired *) nm_setting_wired_new ();
|
||||
nm_connection_add_setting (connection, NM_SETTING (s_wired));
|
||||
|
||||
subchans = g_ptr_array_sized_new (3);
|
||||
g_ptr_array_add (subchans, "0.0.600");
|
||||
g_ptr_array_add (subchans, "0.0.601");
|
||||
g_ptr_array_add (subchans, "0.0.602");
|
||||
subchans = g_strsplit ("0.0.600,0.0.601,0.0.602", ",", -1);
|
||||
g_object_set (s_wired,
|
||||
NM_SETTING_WIRED_S390_SUBCHANNELS, subchans,
|
||||
NM_SETTING_WIRED_S390_NETTYPE, "qeth",
|
||||
NULL);
|
||||
g_ptr_array_free (subchans, TRUE);
|
||||
g_strfreev (subchans);
|
||||
|
||||
nm_setting_wired_add_s390_option (s_wired, "portname", "FOOBAR");
|
||||
nm_setting_wired_add_s390_option (s_wired, "portno", "1");
|
||||
|
|
@ -10803,7 +10795,7 @@ test_write_wired_ctc_dhcp (void)
|
|||
NMSettingIP4Config *s_ip4;
|
||||
NMSettingIP6Config *s_ip6;
|
||||
char *uuid;
|
||||
GPtrArray *subchans;
|
||||
char **subchans;
|
||||
gboolean success;
|
||||
GError *error = NULL;
|
||||
char *testfile = NULL;
|
||||
|
|
@ -10836,14 +10828,12 @@ test_write_wired_ctc_dhcp (void)
|
|||
g_assert (s_wired);
|
||||
nm_connection_add_setting (connection, NM_SETTING (s_wired));
|
||||
|
||||
subchans = g_ptr_array_sized_new (2);
|
||||
g_ptr_array_add (subchans, "0.0.600");
|
||||
g_ptr_array_add (subchans, "0.0.601");
|
||||
subchans = g_strsplit ("0.0.600,0.0.601", ",", -1);
|
||||
g_object_set (s_wired,
|
||||
NM_SETTING_WIRED_S390_SUBCHANNELS, subchans,
|
||||
NM_SETTING_WIRED_S390_NETTYPE, "ctc",
|
||||
NULL);
|
||||
g_ptr_array_free (subchans, TRUE);
|
||||
g_strfreev (subchans);
|
||||
nm_setting_wired_add_s390_option (s_wired, "ctcprot", "0");
|
||||
|
||||
/* IP4 setting */
|
||||
|
|
|
|||
|
|
@ -1028,7 +1028,7 @@ write_wired_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||
char *tmp;
|
||||
const char *nettype, *portname, *ctcprot, *s390_key, *s390_val;
|
||||
guint32 mtu, num_opts, i;
|
||||
const GPtrArray *s390_subchannels;
|
||||
const char *const *s390_subchannels;
|
||||
GString *str;
|
||||
const GSList *macaddr_blacklist;
|
||||
|
||||
|
|
@ -1073,16 +1073,14 @@ write_wired_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||
svSetValue (ifcfg, "SUBCHANNELS", NULL, FALSE);
|
||||
s390_subchannels = nm_setting_wired_get_s390_subchannels (s_wired);
|
||||
if (s390_subchannels) {
|
||||
int len = g_strv_length ((char **)s390_subchannels);
|
||||
|
||||
tmp = NULL;
|
||||
if (s390_subchannels->len == 2) {
|
||||
tmp = g_strdup_printf ("%s,%s",
|
||||
(const char *) g_ptr_array_index (s390_subchannels, 0),
|
||||
(const char *) g_ptr_array_index (s390_subchannels, 1));
|
||||
} else if (s390_subchannels->len == 3) {
|
||||
tmp = g_strdup_printf ("%s,%s,%s",
|
||||
(const char *) g_ptr_array_index (s390_subchannels, 0),
|
||||
(const char *) g_ptr_array_index (s390_subchannels, 1),
|
||||
(const char *) g_ptr_array_index (s390_subchannels, 2));
|
||||
if (len == 2) {
|
||||
tmp = g_strdup_printf ("%s,%s", s390_subchannels[0], s390_subchannels[1]);
|
||||
} else if (len == 3) {
|
||||
tmp = g_strdup_printf ("%s,%s,%s", s390_subchannels[0], s390_subchannels[1],
|
||||
s390_subchannels[2]);
|
||||
}
|
||||
svSetValue (ifcfg, "SUBCHANNELS", tmp, FALSE);
|
||||
g_free (tmp);
|
||||
|
|
@ -1128,11 +1126,11 @@ write_wired_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static GString *
|
||||
static char *
|
||||
vlan_priority_maplist_to_stringlist (NMSettingVlan *s_vlan, NMVlanPriorityMap map)
|
||||
{
|
||||
GSList *strlist = NULL, *iter;
|
||||
GString *value = NULL;
|
||||
char **strlist;
|
||||
char *value;
|
||||
|
||||
if (map == NM_VLAN_INGRESS_MAP)
|
||||
g_object_get (G_OBJECT (s_vlan), NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, &strlist, NULL);
|
||||
|
|
@ -1141,11 +1139,11 @@ vlan_priority_maplist_to_stringlist (NMSettingVlan *s_vlan, NMVlanPriorityMap ma
|
|||
else
|
||||
return NULL;
|
||||
|
||||
value = g_string_new ("");
|
||||
for (iter = strlist; iter; iter = g_slist_next (iter))
|
||||
g_string_append_printf (value, "%s%s", value->len ? "," : "", (const char *) iter->data);
|
||||
|
||||
g_slist_free_full (strlist, g_free);
|
||||
if (strlist[0])
|
||||
value = g_strjoinv (",", strlist);
|
||||
else
|
||||
value = NULL;
|
||||
g_strfreev (strlist);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
|
@ -1158,7 +1156,6 @@ write_vlan_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wired,
|
|||
NMSettingWired *s_wired;
|
||||
char *tmp;
|
||||
guint32 vlan_flags = 0;
|
||||
GString *text = NULL;
|
||||
|
||||
s_con = nm_connection_get_setting_connection (connection);
|
||||
if (!s_con) {
|
||||
|
|
@ -1197,15 +1194,13 @@ write_vlan_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wired,
|
|||
} else if (vlan_flags & NM_VLAN_FLAG_LOOSE_BINDING)
|
||||
svSetValue (ifcfg, "VLAN_FLAGS", "LOOSE_BINDING", FALSE);
|
||||
|
||||
text = vlan_priority_maplist_to_stringlist (s_vlan, NM_VLAN_INGRESS_MAP);
|
||||
svSetValue (ifcfg, "VLAN_INGRESS_PRIORITY_MAP", text ? text->str : NULL, FALSE);
|
||||
if (text)
|
||||
g_string_free (text, TRUE);
|
||||
tmp = vlan_priority_maplist_to_stringlist (s_vlan, NM_VLAN_INGRESS_MAP);
|
||||
svSetValue (ifcfg, "VLAN_INGRESS_PRIORITY_MAP", tmp, FALSE);
|
||||
g_free (tmp);
|
||||
|
||||
text = vlan_priority_maplist_to_stringlist (s_vlan, NM_VLAN_EGRESS_MAP);
|
||||
svSetValue (ifcfg, "VLAN_EGRESS_PRIORITY_MAP", text ? text->str : NULL, FALSE);
|
||||
if (text)
|
||||
g_string_free (text, TRUE);
|
||||
tmp = vlan_priority_maplist_to_stringlist (s_vlan, NM_VLAN_EGRESS_MAP);
|
||||
svSetValue (ifcfg, "VLAN_EGRESS_PRIORITY_MAP", tmp, FALSE);
|
||||
g_free (tmp);
|
||||
|
||||
svSetValue (ifcfg, "HWADDR", NULL, FALSE);
|
||||
svSetValue (ifcfg, "MACADDR", NULL, FALSE);
|
||||
|
|
@ -1887,8 +1882,13 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error)
|
|||
NMIP4Address *addr;
|
||||
guint32 ip;
|
||||
|
||||
if (i > 0 && _nm_setting_ip4_config_get_address_label (s_ip4, i))
|
||||
continue;
|
||||
if (i > 0) {
|
||||
const char *label;
|
||||
|
||||
label = _nm_setting_ip4_config_get_address_label (s_ip4, i);
|
||||
if (*label)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
/* Instead of index 0 use un-numbered variables.
|
||||
|
|
@ -2163,8 +2163,6 @@ write_ip4_aliases (NMConnection *connection, char *base_ifcfg_path)
|
|||
shvarFile *ifcfg;
|
||||
|
||||
label = _nm_setting_ip4_config_get_address_label (s_ip4, i);
|
||||
if (!label)
|
||||
continue;
|
||||
if ( strncmp (label, base_name, base_name_len) != 0
|
||||
|| label[base_name_len] != ':')
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -1134,20 +1134,12 @@ read_one_setting_value (NMSetting *setting,
|
|||
g_object_set (setting, key, array, NULL);
|
||||
g_byte_array_free (array, TRUE);
|
||||
g_free (tmp);
|
||||
} else if (type == DBUS_TYPE_G_LIST_OF_STRING) {
|
||||
} else if (type == G_TYPE_STRV) {
|
||||
gchar **sa;
|
||||
gsize length;
|
||||
int i;
|
||||
GSList *list = NULL;
|
||||
|
||||
sa = nm_keyfile_plugin_kf_get_string_list (info->keyfile, setting_name, key, &length, NULL);
|
||||
for (i = 0; i < length; i++)
|
||||
list = g_slist_prepend (list, sa[i]);
|
||||
|
||||
list = g_slist_reverse (list);
|
||||
g_object_set (setting, key, list, NULL);
|
||||
|
||||
g_slist_free (list);
|
||||
g_object_set (setting, key, sa, NULL);
|
||||
g_strfreev (sa);
|
||||
} else if (type == DBUS_TYPE_G_MAP_OF_STRING) {
|
||||
read_hash_of_string (info->keyfile, setting, key);
|
||||
|
|
|
|||
|
|
@ -894,22 +894,11 @@ write_setting_value (NMSetting *setting,
|
|||
nm_keyfile_plugin_kf_set_integer_list (info->keyfile, setting_name, key, tmp_array, array->len);
|
||||
g_free (tmp_array);
|
||||
}
|
||||
} else if (type == DBUS_TYPE_G_LIST_OF_STRING) {
|
||||
GSList *list;
|
||||
GSList *iter;
|
||||
} else if (type == G_TYPE_STRV) {
|
||||
char **array;
|
||||
|
||||
list = (GSList *) g_value_get_boxed (value);
|
||||
if (list) {
|
||||
char **array;
|
||||
int i = 0;
|
||||
|
||||
array = g_new (char *, g_slist_length (list));
|
||||
for (iter = list; iter; iter = iter->next)
|
||||
array[i++] = iter->data;
|
||||
|
||||
nm_keyfile_plugin_kf_set_string_list (info->keyfile, setting_name, key, (const gchar **const) array, i);
|
||||
g_free (array);
|
||||
}
|
||||
array = (char **) g_value_get_boxed (value);
|
||||
nm_keyfile_plugin_kf_set_string_list (info->keyfile, setting_name, key, (const gchar **const) array, g_strv_length (array));
|
||||
} else if (type == DBUS_TYPE_G_MAP_OF_STRING) {
|
||||
write_hash_of_string (info->keyfile, setting, key, value);
|
||||
} else if (type == DBUS_TYPE_G_UINT_ARRAY) {
|
||||
|
|
|
|||
|
|
@ -482,13 +482,9 @@ test_connection_match_wired (void)
|
|||
NMConnection *orig, *copy, *matched;
|
||||
GSList *connections = NULL;
|
||||
NMSettingWired *s_wired;
|
||||
GPtrArray *subchan_arr = g_ptr_array_sized_new (3);
|
||||
char *subchan_arr[] = { "0.0.8000", "0.0.8001", "0.0.8002", NULL };
|
||||
GByteArray *mac;
|
||||
|
||||
g_ptr_array_add (subchan_arr, "0.0.8000");
|
||||
g_ptr_array_add (subchan_arr, "0.0.8001");
|
||||
g_ptr_array_add (subchan_arr, "0.0.8002");
|
||||
|
||||
orig = _match_connection_new ();
|
||||
copy = nm_simple_connection_new_clone (orig);
|
||||
connections = g_slist_append (connections, copy);
|
||||
|
|
@ -515,7 +511,6 @@ test_connection_match_wired (void)
|
|||
g_assert (matched == copy);
|
||||
|
||||
g_slist_free (connections);
|
||||
g_ptr_array_free (subchan_arr, TRUE);
|
||||
g_object_unref (orig);
|
||||
g_object_unref (copy);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue