mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-06 01:09:54 +02:00
dispatcher: handle DHCP Options property correctly
This commit is contained in:
parent
0ce4b6b412
commit
e5e3dbf415
1 changed files with 40 additions and 20 deletions
|
|
@ -228,20 +228,30 @@ construct_ip4_items (GSList *items, GHashTable *ip4_config, const char *prefix)
|
||||||
static GSList *
|
static GSList *
|
||||||
construct_device_dhcp4_items (GSList *items, GHashTable *dhcp4_config)
|
construct_device_dhcp4_items (GSList *items, GHashTable *dhcp4_config)
|
||||||
{
|
{
|
||||||
GHashTableIter iter;
|
GHashTableIter iter1, iter2;
|
||||||
const char *key, *tmp;
|
const char *key1, *key2;
|
||||||
GValue *val;
|
GValue *val1, *val2;
|
||||||
char *ucased;
|
char *ucased1, *ucased2, *value_as_string;
|
||||||
|
|
||||||
if (dhcp4_config == NULL)
|
if (dhcp4_config == NULL)
|
||||||
return items;
|
return items;
|
||||||
|
|
||||||
g_hash_table_iter_init (&iter, dhcp4_config);
|
g_hash_table_iter_init (&iter1, dhcp4_config);
|
||||||
while (g_hash_table_iter_next (&iter, (gpointer) &key, (gpointer) &val)) {
|
while (g_hash_table_iter_next (&iter1, (gpointer) &key1, (gpointer) &val1)) {
|
||||||
ucased = g_ascii_strup (key, -1);
|
if (g_type_is_a (G_VALUE_TYPE (val1), DBUS_TYPE_G_MAP_OF_VARIANT)) {
|
||||||
tmp = g_value_get_string (val);
|
GHashTable *options_hash = (GHashTable *) g_value_get_boxed (val1);
|
||||||
items = g_slist_prepend (items, g_strdup_printf ("DHCP4_%s=%s", ucased, tmp));
|
|
||||||
g_free (ucased);
|
g_hash_table_iter_init (&iter2, options_hash);
|
||||||
|
while (g_hash_table_iter_next (&iter2, (gpointer) &key2, (gpointer) &val2)) {
|
||||||
|
ucased1 = g_ascii_strup (key1, -1);
|
||||||
|
ucased2 = g_ascii_strup (key2, -1);
|
||||||
|
value_as_string = g_strdup_value_contents ((GValue *) val2);
|
||||||
|
items = g_slist_prepend (items, g_strdup_printf ("DHCP4_%s_%s=%s", ucased1, ucased2, value_as_string));
|
||||||
|
g_free (ucased1);
|
||||||
|
g_free (ucased2);
|
||||||
|
g_free (value_as_string);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
@ -361,20 +371,30 @@ construct_ip6_items (GSList *items, GHashTable *ip6_config, const char *prefix)
|
||||||
static GSList *
|
static GSList *
|
||||||
construct_device_dhcp6_items (GSList *items, GHashTable *dhcp6_config)
|
construct_device_dhcp6_items (GSList *items, GHashTable *dhcp6_config)
|
||||||
{
|
{
|
||||||
GHashTableIter iter;
|
GHashTableIter iter1, iter2;
|
||||||
const char *key, *tmp;
|
const char *key1, *key2;
|
||||||
GValue *val;
|
GValue *val1, *val2;
|
||||||
char *ucased;
|
char *ucased1, *ucased2, *value_as_string;
|
||||||
|
|
||||||
if (dhcp6_config == NULL)
|
if (dhcp6_config == NULL)
|
||||||
return items;
|
return items;
|
||||||
|
|
||||||
g_hash_table_iter_init (&iter, dhcp6_config);
|
g_hash_table_iter_init (&iter1, dhcp6_config);
|
||||||
while (g_hash_table_iter_next (&iter, (gpointer) &key, (gpointer) &val)) {
|
while (g_hash_table_iter_next (&iter1, (gpointer) &key1, (gpointer) &val1)) {
|
||||||
ucased = g_ascii_strup (key, -1);
|
if (g_type_is_a (G_VALUE_TYPE (val1), DBUS_TYPE_G_MAP_OF_VARIANT)) {
|
||||||
tmp = g_value_get_string (val);
|
GHashTable *options_hash = (GHashTable *) g_value_get_boxed (val1);
|
||||||
items = g_slist_prepend (items, g_strdup_printf ("DHCP6_%s=%s", ucased, tmp));
|
|
||||||
g_free (ucased);
|
g_hash_table_iter_init (&iter2, options_hash);
|
||||||
|
while (g_hash_table_iter_next (&iter2, (gpointer) &key2, (gpointer) &val2)) {
|
||||||
|
ucased1 = g_ascii_strup (key1, -1);
|
||||||
|
ucased2 = g_ascii_strup (key2, -1);
|
||||||
|
value_as_string = g_strdup_value_contents ((GValue *) val2);
|
||||||
|
items = g_slist_prepend (items, g_strdup_printf ("DHCP6_%s_%s=%s", ucased1, ucased2, value_as_string));
|
||||||
|
g_free (ucased1);
|
||||||
|
g_free (ucased2);
|
||||||
|
g_free (value_as_string);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue