mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 08:48:07 +02:00
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:
parent
2cfd1647d3
commit
99d0fe3006
3 changed files with 95 additions and 94 deletions
|
|
@ -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__ */
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue