summaryrefslogtreecommitdiff
path: root/src/supplicant-manager/nm-supplicant-config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/supplicant-manager/nm-supplicant-config.c')
-rw-r--r--src/supplicant-manager/nm-supplicant-config.c106
1 files changed, 52 insertions, 54 deletions
diff --git a/src/supplicant-manager/nm-supplicant-config.c b/src/supplicant-manager/nm-supplicant-config.c
index f4ee4c3a2c..952f7f2bbb 100644
--- a/src/supplicant-manager/nm-supplicant-config.c
+++ b/src/supplicant-manager/nm-supplicant-config.c
@@ -26,7 +26,6 @@
#include <string.h>
#include <stdlib.h>
#include <glib.h>
-#include <dbus/dbus-glib.h>
#include "nm-supplicant-config.h"
#include "nm-supplicant-settings-verify.h"
@@ -262,73 +261,72 @@ nm_supplicant_config_fast_required (NMSupplicantConfig *self)
return NM_SUPPLICANT_CONFIG_GET_PRIVATE (self)->fast_required;
}
-static void
-get_hash_cb (gpointer key, gpointer value, gpointer user_data)
+GVariant *
+nm_supplicant_config_get_config (NMSupplicantConfig * self)
{
- ConfigOption *opt = (ConfigOption *) value;
- GValue *variant;
- GByteArray *array;
+ NMSupplicantConfigPrivate *priv;
+ GHashTableIter iter;
+ GVariantBuilder builder;
+ const char *key;
+ ConfigOption *opt;
- variant = g_slice_new0 (GValue);
+ g_return_val_if_fail (NM_IS_SUPPLICANT_CONFIG (self), NULL);
+ priv = NM_SUPPLICANT_CONFIG_GET_PRIVATE (self);
- switch (opt->type) {
- case TYPE_INT:
- g_value_init (variant, G_TYPE_INT);
- g_value_set_int (variant, atoi (opt->value));
- break;
- case TYPE_BYTES:
- case TYPE_UTF8:
- array = g_byte_array_sized_new (opt->len);
- g_byte_array_append (array, (const guint8 *) opt->value, opt->len);
- g_value_init (variant, DBUS_TYPE_G_UCHAR_ARRAY);
- g_value_set_boxed (variant, array);
- g_byte_array_free (array, TRUE);
- break;
- case TYPE_KEYWORD:
- case TYPE_STRING:
- g_value_init (variant, G_TYPE_STRING);
- g_value_set_string (variant, opt->value);
- break;
- default:
- g_slice_free (GValue, variant);
- return;
+ g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
+
+ g_hash_table_iter_init (&iter, priv->config);
+ while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *) &opt)) {
+ switch (opt->type) {
+ case TYPE_INT:
+ g_variant_builder_add (&builder, "{sv}",
+ key,
+ g_variant_new_int32 (atoi (opt->value)));
+ break;
+ case TYPE_BYTES:
+ case TYPE_UTF8:
+ g_variant_builder_add (&builder, "{sv}",
+ key,
+ g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
+ opt->value, opt->len, 1));
+ break;
+ case TYPE_KEYWORD:
+ case TYPE_STRING:
+ g_variant_builder_add (&builder, "{sv}",
+ key,
+ g_variant_new_string (opt->value));
+ break;
+ default:
+ break;
+ }
}
- g_hash_table_insert ((GHashTable *) user_data, g_strdup (key), variant);
+ return g_variant_builder_end (&builder);
}
-static void
-destroy_hash_value (gpointer data)
-{
- GValue *value = (GValue *) data;
-
- g_value_unset (value);
- g_slice_free (GValue, value);
-}
-
-GHashTable *
-nm_supplicant_config_get_hash (NMSupplicantConfig * self)
+GVariant *
+nm_supplicant_config_get_blobs (NMSupplicantConfig * self)
{
NMSupplicantConfigPrivate *priv;
- GHashTable *hash;
+ GHashTableIter iter;
+ GVariantBuilder builder;
+ const char *key;
+ GByteArray *blob;
g_return_val_if_fail (NM_IS_SUPPLICANT_CONFIG (self), NULL);
-
- hash = g_hash_table_new_full (g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- destroy_hash_value);
-
priv = NM_SUPPLICANT_CONFIG_GET_PRIVATE (self);
- g_hash_table_foreach (priv->config, get_hash_cb, hash);
- return hash;
-}
-GHashTable *
-nm_supplicant_config_get_blobs (NMSupplicantConfig * self)
-{
- g_return_val_if_fail (NM_IS_SUPPLICANT_CONFIG (self), NULL);
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{say}"));
+
+ g_hash_table_iter_init (&iter, priv->config);
+ while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *) &blob)) {
+ g_variant_builder_add (&builder, "{s@ay}",
+ key,
+ g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE,
+ blob->data, blob->len, 1));
+ }
- return NM_SUPPLICANT_CONFIG_GET_PRIVATE (self)->blobs;
+ return g_variant_builder_end (&builder);
}
#define TWO_GHZ_FREQS "2412,2417,2422,2427,2432,2437,2442,2447,2452,2457,2462,2467,2472,2484"