core: fix new NMIP4Config and NMIP6Config properties

The AddressData and RouteData marshalling code were still using the
types from an earlier version of the branch. Fix that.
This commit is contained in:
Dan Winship 2014-11-07 10:55:58 -05:00
parent 2cfd1647d3
commit 99d0fe3006
3 changed files with 95 additions and 94 deletions

View file

@ -37,9 +37,9 @@
#define DBUS_TYPE_G_IP6_ROUTE (dbus_g_type_get_struct ("GValueArray", DBUS_TYPE_G_UCHAR_ARRAY, G_TYPE_UINT, DBUS_TYPE_G_UCHAR_ARRAY, G_TYPE_UINT, G_TYPE_INVALID))
#define DBUS_TYPE_G_ARRAY_OF_IP6_ROUTE (dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_IP6_ROUTE))
#define DBUS_TYPE_NM_IP_ADDRESS (dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_UINT, DBUS_TYPE_G_MAP_OF_STRING, G_TYPE_INVALID))
#define DBUS_TYPE_NM_IP_ADDRESS DBUS_TYPE_G_MAP_OF_VARIANT
#define DBUS_TYPE_NM_IP_ADDRESSES (dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_NM_IP_ADDRESS))
#define DBUS_TYPE_NM_IP_ROUTE (dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_UINT, DBUS_TYPE_G_MAP_OF_STRING, G_TYPE_INVALID))
#define DBUS_TYPE_NM_IP_ROUTE DBUS_TYPE_G_MAP_OF_VARIANT
#define DBUS_TYPE_NM_IP_ROUTES (dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_NM_IP_ROUTE))
#endif /* __NM_DBUS_GLIB_TYPES_H__ */

View file

@ -1728,6 +1728,15 @@ finalize (GObject *object)
G_OBJECT_CLASS (nm_ip4_config_parent_class)->finalize (object);
}
static void
gvalue_destroy (gpointer data)
{
GValue *value = (GValue *) data;
g_value_unset (value);
g_slice_free (GValue, value);
}
static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
@ -1744,29 +1753,29 @@ get_property (GObject *object, guint prop_id,
for (i = 0; i < naddr; i++) {
const NMPlatformIP4Address *address = nm_ip4_config_get_address (config, i);
GValueArray *array = g_value_array_new (3);
GHashTable *attrs;
GValue val = { 0, };
GHashTable *addr_hash;
GValue *val;
g_value_init (&val, G_TYPE_STRING);
g_value_set_string (&val, nm_utils_inet4_ntop (address->address, NULL));
g_value_array_append (array, &val);
g_value_unset (&val);
addr_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, gvalue_destroy);
g_value_init (&val, G_TYPE_UINT);
g_value_set_uint (&val, address->plen);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, nm_utils_inet4_ntop (address->address, NULL));
g_hash_table_insert (addr_hash, "address", val);
g_value_init (&val, DBUS_TYPE_G_MAP_OF_STRING);
attrs = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free);
if (*address->label)
g_hash_table_insert (attrs, "label", g_strdup (address->label));
g_value_take_boxed (&val, attrs);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_UINT);
g_value_set_uint (val, address->plen);
g_hash_table_insert (addr_hash, "prefix", val);
g_ptr_array_add (addresses, array);
if (*address->label) {
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, address->label);
g_hash_table_insert (addr_hash, "label", val);
}
g_ptr_array_add (addresses, addr_hash);
}
g_value_take_boxed (value, addresses);
@ -1801,40 +1810,34 @@ get_property (GObject *object, guint prop_id,
for (i = 0; i < nroutes; i++) {
const NMPlatformIP4Route *route = nm_ip4_config_get_route (config, i);
GValueArray *array = g_value_array_new (5);
GHashTable *attrs;
GValue val = { 0, };
GHashTable *route_hash;
GValue *val;
g_value_init (&val, G_TYPE_STRING);
g_value_set_string (&val, nm_utils_inet4_ntop (route->network, NULL));
g_value_array_append (array, &val);
g_value_unset (&val);
route_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, gvalue_destroy);
g_value_init (&val, G_TYPE_UINT);
g_value_set_uint (&val, route->plen);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, nm_utils_inet4_ntop (route->network, NULL));
g_hash_table_insert (route_hash, "dest", val);
g_value_init (&val, G_TYPE_STRING);
if (route->gateway)
g_value_set_string (&val, nm_utils_inet4_ntop (route->gateway, NULL));
else
g_value_set_string (&val, "");
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_UINT);
g_value_set_uint (val, route->plen);
g_hash_table_insert (route_hash, "prefix", val);
g_value_init (&val, G_TYPE_INT64);
g_value_set_int64 (&val, route->metric);
g_value_array_append (array, &val);
g_value_unset (&val);
if (route->gateway) {
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, nm_utils_inet4_ntop (route->gateway, NULL));
g_hash_table_insert (route_hash, "gateway", val);
}
g_value_init (&val, DBUS_TYPE_G_MAP_OF_STRING);
attrs = g_hash_table_new (g_str_hash, g_str_equal);
g_value_take_boxed (&val, attrs);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_UINT);
g_value_set_uint (val, route->metric);
g_hash_table_insert (route_hash, "metric", val);
g_ptr_array_add (routes, array);
g_ptr_array_add (routes, route_hash);
}
g_value_take_boxed (value, routes);

View file

@ -1609,6 +1609,15 @@ nameservers_to_gvalue (GArray *array, GValue *value)
g_value_take_boxed (value, dns);
}
static void
gvalue_destroy (gpointer data)
{
GValue *value = (GValue *) data;
g_value_unset (value);
g_slice_free (GValue, value);
}
static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
@ -1625,27 +1634,22 @@ get_property (GObject *object, guint prop_id,
for (i = 0; i < naddr; i++) {
const NMPlatformIP6Address *address = nm_ip6_config_get_address (config, i);
GValueArray *array = g_value_array_new (3);
GHashTable *attrs;
GValue val = { 0, };
GHashTable *addr_hash;
GValue *val;
g_value_init (&val, G_TYPE_STRING);
g_value_set_string (&val, nm_utils_inet6_ntop (&address->address, NULL));
g_value_array_append (array, &val);
g_value_unset (&val);
addr_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, gvalue_destroy);
g_value_init (&val, G_TYPE_UINT);
g_value_set_uint (&val, address->plen);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, nm_utils_inet6_ntop (&address->address, NULL));
g_hash_table_insert (addr_hash, "address", val);
g_value_init (&val, DBUS_TYPE_G_MAP_OF_STRING);
attrs = g_hash_table_new (g_str_hash, g_str_equal);
g_value_take_boxed (&val, attrs);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_UINT);
g_value_set_uint (val, address->plen);
g_hash_table_insert (addr_hash, "prefix", val);
g_ptr_array_add (addresses, array);
g_ptr_array_add (addresses, addr_hash);
}
g_value_take_boxed (value, addresses);
@ -1701,40 +1705,34 @@ get_property (GObject *object, guint prop_id,
for (i = 0; i < nroutes; i++) {
const NMPlatformIP6Route *route = nm_ip6_config_get_route (config, i);
GValueArray *array = g_value_array_new (5);
GHashTable *attrs;
GValue val = { 0, };
GHashTable *route_hash;
GValue *val;
g_value_init (&val, G_TYPE_STRING);
g_value_set_string (&val, nm_utils_inet6_ntop (&route->network, NULL));
g_value_array_append (array, &val);
g_value_unset (&val);
route_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, gvalue_destroy);
g_value_init (&val, G_TYPE_UINT);
g_value_set_uint (&val, route->plen);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, nm_utils_inet6_ntop (&route->network, NULL));
g_hash_table_insert (route_hash, "dest", val);
g_value_init (&val, G_TYPE_STRING);
if (memcmp (&route->gateway, &in6addr_any, sizeof (struct in6_addr)) != 0)
g_value_set_string (&val, nm_utils_inet6_ntop (&route->gateway, NULL));
else
g_value_set_string (&val, "");
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_UINT);
g_value_set_uint (val, route->plen);
g_hash_table_insert (route_hash, "prefix", val);
g_value_init (&val, G_TYPE_INT64);
g_value_set_int64 (&val, route->metric);
g_value_array_append (array, &val);
g_value_unset (&val);
if (!IN6_IS_ADDR_UNSPECIFIED (&route->gateway)) {
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_STRING);
g_value_set_string (val, nm_utils_inet6_ntop (&route->gateway, NULL));
g_hash_table_insert (route_hash, "gateway", val);
}
g_value_init (&val, DBUS_TYPE_G_MAP_OF_STRING);
attrs = g_hash_table_new (g_str_hash, g_str_equal);
g_value_take_boxed (&val, attrs);
g_value_array_append (array, &val);
g_value_unset (&val);
val = g_slice_new0 (GValue);
g_value_init (val, G_TYPE_UINT);
g_value_set_uint (val, route->metric);
g_hash_table_insert (route_hash, "metric", val);
g_ptr_array_add (routes, array);
g_ptr_array_add (routes, route_hash);
}
g_value_take_boxed (value, routes);