core: move D-Bus export/unexport into NMExportedObject

Move D-Bus export/unexport handling into NMExportedObject and remove
type-specific export/get_path methods (export paths are now specified
at the class level, and NMExportedObject handles the counters for all
exported types automatically).

Since all exportable objects now use the same get_path() method, we
can also add some helper methods to simplify get_property()
implementations for object-path and object-path-array properties.
This commit is contained in:
Dan Winship
2015-04-03 10:08:52 -04:00
parent 6fcc1deee0
commit c1dd3b6eed
41 changed files with 304 additions and 349 deletions

View File

@@ -2904,3 +2904,46 @@ nm_utils_setpgid (gpointer unused G_GNUC_UNUSED)
pid = getpid ();
setpgid (pid, pid);
}
/**
* nm_utils_g_value_set_object_path:
* @value: a #GValue, initialized to store an object path
* @object: (allow-none): an #NMExportedObject
*
* Sets @value to @object's object path. If @object is %NULL, or not
* exported, @value is set to "/".
*/
void
nm_utils_g_value_set_object_path (GValue *value, gpointer object)
{
g_return_if_fail (!object || NM_IS_EXPORTED_OBJECT (object));
if (object && nm_exported_object_is_exported (object))
g_value_set_boxed (value, nm_exported_object_get_path (object));
else
g_value_set_boxed (value, "/");
}
/**
* nm_utils_g_value_set_object_path_array:
* @value: a #GValue, initialized to store an object path
* @objects: a #GSList of #NMExportedObjects
*
* Sets @value to an array of object paths of the objects in @objects.
*/
void
nm_utils_g_value_set_object_path_array (GValue *value, GSList *objects)
{
GPtrArray *paths;
GSList *iter;
paths = g_ptr_array_new ();
for (iter = objects; iter; iter = iter->next) {
NMExportedObject *object = iter->data;
if (!nm_exported_object_is_exported (object))
continue;
g_ptr_array_add (paths, g_strdup (nm_exported_object_get_path (object)));
}
g_value_take_boxed (value, paths);
}

View File

@@ -262,4 +262,7 @@ gboolean nm_utils_get_testing_initialized (void);
NMUtilsTestFlags nm_utils_get_testing (void);
void _nm_utils_set_testing (NMUtilsTestFlags flags);
void nm_utils_g_value_set_object_path (GValue *value, gpointer object);
void nm_utils_g_value_set_object_path_array (GValue *value, GSList *objects);
#endif /* __NETWORKMANAGER_UTILS_H__ */

View File

@@ -475,18 +475,14 @@ static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
GPtrArray *slaves;
GSList *list, *iter;
GSList *list;
switch (prop_id) {
break;
case PROP_SLAVES:
slaves = g_ptr_array_new ();
list = nm_device_master_get_slaves (NM_DEVICE (object));
for (iter = list; iter; iter = iter->next)
g_ptr_array_add (slaves, g_strdup (nm_device_get_path (NM_DEVICE (iter->data))));
nm_utils_g_value_set_object_path_array (value, list);
g_slist_free (list);
g_value_take_boxed (value, slaves);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);

View File

@@ -401,17 +401,14 @@ static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
GPtrArray *slaves;
GSList *list, *iter;
GSList *list;
switch (prop_id) {
break;
case PROP_SLAVES:
slaves = g_ptr_array_new ();
list = nm_device_master_get_slaves (NM_DEVICE (object));
for (iter = list; iter; iter = iter->next)
g_ptr_array_add (slaves, g_strdup (nm_device_get_path (NM_DEVICE (iter->data))));
nm_utils_g_value_set_object_path_array (value, list);
g_slist_free (list);
g_value_take_boxed (value, slaves);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);

View File

@@ -136,7 +136,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_PARENT:
parent = nm_manager_get_device_by_ifindex (nm_manager_get (), priv->props.parent_ifindex);
g_value_set_boxed (value, parent ? nm_device_get_path (parent) : "/");
nm_utils_g_value_set_object_path (value, parent);
break;
case PROP_INPUT_FLAGS:
g_value_set_uint (value, priv->props.input_flags);

View File

@@ -114,7 +114,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_PARENT:
parent = nm_manager_get_device_by_ifindex (nm_manager_get (), priv->props.parent_ifindex);
g_value_set_boxed (value, parent ? nm_device_get_path (parent) : "/");
nm_utils_g_value_set_object_path (value, parent);
break;
case PROP_MODE:
g_value_set_string (value, priv->props.mode);

View File

@@ -136,7 +136,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_PEER:
peer = get_peer (self);
g_value_set_boxed (value, peer ? nm_device_get_path (peer) : "/");
nm_utils_g_value_set_object_path (value, peer);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);

View File

@@ -514,7 +514,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_PARENT:
g_value_set_boxed (value, priv->parent ? nm_device_get_path (priv->parent) : "/");
nm_utils_g_value_set_object_path (value, priv->parent);
break;
case PROP_INT_PARENT_DEVICE:
g_value_set_object (value, priv->parent);

View File

@@ -156,7 +156,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_PARENT:
parent = nm_manager_get_device_by_ifindex (nm_manager_get (), priv->props.parent_ifindex);
g_value_set_boxed (value, parent ? nm_device_get_path (parent) : "/");
nm_utils_g_value_set_object_path (value, parent);
break;
case PROP_ID:
g_value_set_uint (value, priv->props.id);

View File

@@ -45,7 +45,6 @@
#include "nm-rdisc.h"
#include "nm-lndp-rdisc.h"
#include "nm-dhcp-manager.h"
#include "nm-dbus-manager.h"
#include "nm-logging.h"
#include "nm-activation-request.h"
#include "nm-ip4-config.h"
@@ -198,7 +197,6 @@ typedef struct {
GSList *pending_actions;
char * udi;
char * path;
char * iface; /* may change, could be renamed by user */
int ifindex;
char * ip_iface;
@@ -512,31 +510,6 @@ nm_device_has_capability (NMDevice *self, NMDeviceCapabilities caps)
/***********************************************************/
void
nm_device_dbus_export (NMDevice *self)
{
static guint32 devcount = 0;
NMDevicePrivate *priv;
g_return_if_fail (NM_IS_DEVICE (self));
priv = NM_DEVICE_GET_PRIVATE (self);
g_return_if_fail (priv->path == NULL);
priv->path = g_strdup_printf ("/org/freedesktop/NetworkManager/Devices/%d", devcount++);
_LOGD (LOGD_DEVICE, "exported as %s", priv->path);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->path, self);
}
const char *
nm_device_get_path (NMDevice *self)
{
g_return_val_if_fail (self != NULL, NULL);
return NM_DEVICE_GET_PRIVATE (self)->path;
}
const char *
nm_device_get_udi (NMDevice *self)
{
@@ -6388,25 +6361,23 @@ nm_device_set_ip4_config (NMDevice *self,
nm_ip4_config_replace (old_config, new_config, &has_changes);
if (has_changes) {
_LOGD (LOGD_IP4, "update IP4Config instance (%s)",
nm_ip4_config_get_dbus_path (old_config));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (old_config)));
}
} else {
has_changes = TRUE;
priv->ip4_config = g_object_ref (new_config);
if (success && !nm_ip4_config_get_dbus_path (new_config)) {
/* Export over D-Bus */
nm_ip4_config_export (new_config);
}
if (success && !nm_exported_object_is_exported (NM_EXPORTED_OBJECT (new_config)))
nm_exported_object_export (NM_EXPORTED_OBJECT (new_config));
_LOGD (LOGD_IP4, "set IP4Config instance (%s)",
nm_ip4_config_get_dbus_path (new_config));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (new_config)));
}
} else if (old_config) {
has_changes = TRUE;
priv->ip4_config = NULL;
_LOGD (LOGD_IP4, "clear IP4Config instance (%s)",
nm_ip4_config_get_dbus_path (old_config));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (old_config)));
/* Device config is invalid if combined config is invalid */
g_clear_object (&priv->dev_ip4_config);
}
@@ -6523,25 +6494,23 @@ nm_device_set_ip6_config (NMDevice *self,
nm_ip6_config_replace (old_config, new_config, &has_changes);
if (has_changes) {
_LOGD (LOGD_IP6, "update IP6Config instance (%s)",
nm_ip6_config_get_dbus_path (old_config));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (old_config)));
}
} else {
has_changes = TRUE;
priv->ip6_config = g_object_ref (new_config);
if (success && !nm_ip6_config_get_dbus_path (new_config)) {
/* Export over D-Bus */
nm_ip6_config_export (new_config);
}
if (success && !nm_exported_object_is_exported (NM_EXPORTED_OBJECT (new_config)))
nm_exported_object_export (NM_EXPORTED_OBJECT (new_config));
_LOGD (LOGD_IP6, "set IP6Config instance (%s)",
nm_ip6_config_get_dbus_path (new_config));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (new_config)));
}
} else if (old_config) {
has_changes = TRUE;
priv->ip6_config = NULL;
_LOGD (LOGD_IP6, "clear IP6Config instance (%s)",
nm_ip6_config_get_dbus_path (old_config));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (old_config)));
}
nm_default_route_manager_ip6_update_default_route (nm_default_route_manager_get (), self);
@@ -9157,7 +9126,6 @@ finalize (GObject *object)
g_slist_free_full (priv->pending_actions, g_free);
g_clear_pointer (&priv->physical_port_id, g_free);
g_free (priv->udi);
g_free (priv->path);
g_free (priv->iface);
g_free (priv->ip_iface);
g_free (priv->driver);
@@ -9297,7 +9265,6 @@ get_property (GObject *object, guint prop_id,
{
NMDevice *self = NM_DEVICE (object);
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
const char *ac_path = NULL;
GPtrArray *array;
GHashTableIter iter;
NMConnection *connection;
@@ -9340,28 +9307,16 @@ get_property (GObject *object, guint prop_id,
g_value_set_uint (value, priv->mtu);
break;
case PROP_IP4_CONFIG:
if (ip_config_valid (priv->state) && priv->ip4_config)
g_value_set_boxed (value, nm_ip4_config_get_dbus_path (priv->ip4_config));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, ip_config_valid (priv->state) ? priv->ip4_config : NULL);
break;
case PROP_DHCP4_CONFIG:
if (ip_config_valid (priv->state) && priv->dhcp4_config)
g_value_set_boxed (value, nm_dhcp4_config_get_dbus_path (priv->dhcp4_config));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, ip_config_valid (priv->state) ? priv->dhcp4_config : NULL);
break;
case PROP_IP6_CONFIG:
if (ip_config_valid (priv->state) && priv->ip6_config)
g_value_set_boxed (value, nm_ip6_config_get_dbus_path (priv->ip6_config));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, ip_config_valid (priv->state) ? priv->ip6_config : NULL);
break;
case PROP_DHCP6_CONFIG:
if (ip_config_valid (priv->state) && priv->dhcp6_config)
g_value_set_boxed (value, nm_dhcp6_config_get_dbus_path (priv->dhcp6_config));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, ip_config_valid (priv->state) ? priv->dhcp6_config : NULL);
break;
case PROP_STATE:
g_value_set_uint (value, priv->state);
@@ -9371,9 +9326,7 @@ get_property (GObject *object, guint prop_id,
dbus_g_type_struct_set (value, 0, priv->state, 1, priv->state_reason, G_MAXUINT);
break;
case PROP_ACTIVE_CONNECTION:
if (priv->act_request)
ac_path = nm_active_connection_get_path (NM_ACTIVE_CONNECTION (priv->act_request));
g_value_set_boxed (value, ac_path ? ac_path : "/");
nm_utils_g_value_set_object_path (value, priv->act_request);
break;
case PROP_DEVICE_TYPE:
g_value_set_uint (value, priv->type);
@@ -9431,9 +9384,12 @@ static void
nm_device_class_init (NMDeviceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (klass);
g_type_class_add_private (object_class, sizeof (NMDevicePrivate));
exported_object_class->export_path = NM_DBUS_PATH "/Devices/%u";
/* Virtual methods */
object_class->dispose = dispose;
object_class->finalize = finalize;

View File

@@ -265,9 +265,6 @@ typedef void (*NMDeviceAuthRequestFunc) (NMDevice *device,
GType nm_device_get_type (void);
const char * nm_device_get_path (NMDevice *dev);
void nm_device_dbus_export (NMDevice *device);
void nm_device_finish_init (NMDevice *device);
const char * nm_device_get_udi (NMDevice *dev);

View File

@@ -740,18 +740,14 @@ static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
GPtrArray *slaves;
GSList *list, *iter;
GSList *list;
switch (prop_id) {
break;
case PROP_SLAVES:
slaves = g_ptr_array_new ();
list = nm_device_master_get_slaves (NM_DEVICE (object));
for (iter = list; iter; iter = iter->next)
g_ptr_array_add (slaves, g_strdup (nm_device_get_path (NM_DEVICE (iter->data))));
nm_utils_g_value_set_object_path_array (value, list);
g_slist_free (list);
g_value_take_boxed (value, slaves);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);

View File

@@ -475,10 +475,7 @@ get_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_COMPANION:
if (priv->companion)
g_value_set_boxed (value, nm_device_get_path (priv->companion));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, priv->companion);
break;
case PROP_ACTIVE_CHANNEL:
g_value_set_uint (value, nm_platform_mesh_get_channel (NM_PLATFORM_GET, nm_device_get_ifindex (NM_DEVICE (device))));

View File

@@ -381,7 +381,7 @@ set_current_ap (NMDeviceWifi *self, NMAccessPoint *new_ap, gboolean recheck_avai
if (force_remove_old_ap || mode == NM_802_11_MODE_ADHOC || mode == NM_802_11_MODE_AP || nm_ap_get_fake (old_ap)) {
emit_ap_added_removed (self, ACCESS_POINT_REMOVED, old_ap, FALSE);
g_hash_table_remove (priv->aps, nm_ap_get_dbus_path (old_ap));
g_hash_table_remove (priv->aps, nm_exported_object_get_path (NM_EXPORTED_OBJECT (old_ap)));
if (recheck_available_connections)
nm_device_recheck_available_connections (NM_DEVICE (self));
}
@@ -983,7 +983,7 @@ can_auto_connect (NMDevice *device,
ap = find_first_compatible_ap (self, connection, FALSE);
if (ap) {
/* All good; connection is usable */
*specific_object = (char *) nm_ap_get_dbus_path (ap);
*specific_object = (char *) nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap));
return TRUE;
}
@@ -1025,7 +1025,7 @@ impl_device_get_access_points (NMDeviceWifi *self,
NMAccessPoint *ap = NM_AP (iter->data);
if (nm_ap_get_ssid (ap))
g_ptr_array_add (*aps, g_strdup (nm_ap_get_dbus_path (ap)));
g_ptr_array_add (*aps, g_strdup (nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap))));
}
g_slist_free (sorted);
return TRUE;
@@ -1041,7 +1041,7 @@ impl_device_get_all_access_points (NMDeviceWifi *self,
*aps = g_ptr_array_new ();
sorted = get_sorted_ap_list (self);
for (iter = sorted; iter; iter = iter->next)
g_ptr_array_add (*aps, g_strdup (nm_ap_get_dbus_path (NM_AP (iter->data))));
g_ptr_array_add (*aps, g_strdup (nm_exported_object_get_path (NM_EXPORTED_OBJECT (iter->data))));
g_slist_free (sorted);
return TRUE;
}
@@ -1494,7 +1494,7 @@ supplicant_iface_new_bss_cb (NMSupplicantInterface *iface,
NMAccessPoint *ap;
NMAccessPoint *found_ap = NULL;
const GByteArray *ssid;
const char *bssid;
const char *bssid, *ap_path;
g_return_if_fail (self != NULL);
g_return_if_fail (properties != NULL);
@@ -1538,10 +1538,8 @@ supplicant_iface_new_bss_cb (NMSupplicantInterface *iface,
nm_ap_update_from_properties (found_ap, object_path, properties);
} else {
nm_ap_dump (ap, "added ", nm_device_get_iface (NM_DEVICE (self)));
nm_ap_export_to_dbus (ap);
g_hash_table_insert (priv->aps,
(gpointer) nm_ap_get_dbus_path (ap),
g_object_ref (ap));
ap_path = nm_exported_object_export (NM_EXPORTED_OBJECT (ap));
g_hash_table_insert (priv->aps, (gpointer) ap_path, g_object_ref (ap));
emit_ap_added_removed (self, ACCESS_POINT_ADDED, ap, TRUE);
}
@@ -1606,7 +1604,7 @@ supplicant_iface_bss_removed_cb (NMSupplicantInterface *iface,
} else {
nm_ap_dump (ap, "removed ", nm_device_get_iface (NM_DEVICE (self)));
emit_ap_added_removed (self, ACCESS_POINT_REMOVED, ap, TRUE);
g_hash_table_remove (priv->aps, nm_ap_get_dbus_path (ap));
g_hash_table_remove (priv->aps, nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap)));
schedule_ap_list_dump (self);
}
}
@@ -2302,7 +2300,8 @@ act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
}
if (ap) {
nm_active_connection_set_specific_object (NM_ACTIVE_CONNECTION (req), nm_ap_get_dbus_path (ap));
nm_active_connection_set_specific_object (NM_ACTIVE_CONNECTION (req),
nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap)));
goto done;
}
@@ -2318,13 +2317,13 @@ act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
if (nm_ap_is_hotspot (ap))
nm_ap_set_address (ap, nm_device_get_hw_address (device));
nm_ap_export_to_dbus (ap);
g_hash_table_insert (priv->aps, (gpointer) nm_ap_get_dbus_path (ap), ap);
ap_path = nm_exported_object_export (NM_EXPORTED_OBJECT (ap));
g_hash_table_insert (priv->aps, (gpointer) ap_path, ap);
g_object_freeze_notify (G_OBJECT (self));
set_current_ap (self, ap, FALSE, FALSE);
emit_ap_added_removed (self, ACCESS_POINT_ADDED, ap, TRUE);
g_object_thaw_notify (G_OBJECT (self));
nm_active_connection_set_specific_object (NM_ACTIVE_CONNECTION (req), nm_ap_get_dbus_path (ap));
nm_active_connection_set_specific_object (NM_ACTIVE_CONNECTION (req), ap_path);
return NM_ACT_STAGE_RETURN_SUCCESS;
done:
@@ -2695,7 +2694,8 @@ activation_success_handler (NMDevice *device)
nm_ap_set_max_bitrate (priv->current_ap, nm_platform_wifi_get_rate (NM_PLATFORM_GET, ifindex));
}
nm_active_connection_set_specific_object (NM_ACTIVE_CONNECTION (req), nm_ap_get_dbus_path (priv->current_ap));
nm_active_connection_set_specific_object (NM_ACTIVE_CONNECTION (req),
nm_exported_object_get_path (NM_EXPORTED_OBJECT (priv->current_ap)));
}
periodic_update (self);
@@ -2925,10 +2925,7 @@ get_property (GObject *object, guint prop_id,
g_value_take_boxed (value, array);
break;
case PROP_ACTIVE_ACCESS_POINT:
if (priv->current_ap)
g_value_set_boxed (value, nm_ap_get_dbus_path (priv->current_ap));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, priv->current_ap);
break;
case PROP_SCANNING:
g_value_set_boolean (value, nm_supplicant_interface_get_scanning (priv->sup_iface));

View File

@@ -30,7 +30,6 @@
#include "NetworkManagerUtils.h"
#include "nm-utils.h"
#include "nm-logging.h"
#include "nm-dbus-manager.h"
#include "nm-core-internal.h"
#include "nm-setting-wireless.h"
@@ -43,9 +42,7 @@
*/
typedef struct
{
char *dbus_path;
char *supplicant_path; /* D-Bus object path of this AP from wpa_supplicant */
guint32 id; /* ID for stable sorting of APs */
/* Scanned or cached values */
GByteArray * ssid;
@@ -94,20 +91,13 @@ nm_ap_get_supplicant_path (NMAccessPoint *ap)
return NM_AP_GET_PRIVATE (ap)->supplicant_path;
}
const char *
nm_ap_get_dbus_path (NMAccessPoint *ap)
{
g_return_val_if_fail (NM_IS_AP (ap), NULL);
return NM_AP_GET_PRIVATE (ap)->dbus_path;
}
guint32
nm_ap_get_id (NMAccessPoint *ap)
{
g_return_val_if_fail (NM_IS_AP (ap), 0);
g_return_val_if_fail (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (ap)), 0);
return NM_AP_GET_PRIVATE (ap)->id;
return atoi (strrchr (nm_exported_object_get_path (NM_EXPORTED_OBJECT (ap)), '/') + 1);
}
const GByteArray * nm_ap_get_ssid (const NMAccessPoint *ap)
@@ -299,6 +289,7 @@ guint32
nm_ap_get_max_bitrate (NMAccessPoint *ap)
{
g_return_val_if_fail (NM_IS_AP (ap), 0);
g_return_val_if_fail (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (ap)), 0);
return NM_AP_GET_PRIVATE (ap)->max_bitrate;
}
@@ -876,32 +867,11 @@ nm_ap_complete_connection (NMAccessPoint *self,
/*****************************************************************/
void
nm_ap_export_to_dbus (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv;
static guint32 counter = 0;
g_return_if_fail (NM_IS_AP (ap));
priv = NM_AP_GET_PRIVATE (ap);
if (priv->dbus_path) {
nm_log_err (LOGD_CORE, "Tried to export AP %s twice.", priv->dbus_path);
return;
}
priv->id = counter++;
priv->dbus_path = g_strdup_printf (NM_DBUS_PATH_ACCESS_POINT "/%d", priv->id);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->dbus_path, ap);
}
static void
nm_ap_init (NMAccessPoint *ap)
{
NMAccessPointPrivate *priv = NM_AP_GET_PRIVATE (ap);
priv->dbus_path = NULL;
priv->mode = NM_802_11_MODE_INFRA;
priv->flags = NM_802_11_AP_FLAGS_NONE;
priv->wpa_flags = NM_802_11_AP_SEC_NONE;
@@ -914,7 +884,6 @@ finalize (GObject *object)
{
NMAccessPointPrivate *priv = NM_AP_GET_PRIVATE (object);
g_free (priv->dbus_path);
g_free (priv->supplicant_path);
if (priv->ssid)
g_byte_array_free (priv->ssid, TRUE);
@@ -988,6 +957,7 @@ static void
nm_ap_class_init (NMAccessPointClass *ap_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (ap_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (ap_class);
const NM80211ApSecurityFlags all_sec_flags = NM_802_11_AP_SEC_NONE
| NM_802_11_AP_SEC_PAIR_WEP40
| NM_802_11_AP_SEC_PAIR_WEP104
@@ -1002,6 +972,8 @@ nm_ap_class_init (NMAccessPointClass *ap_class)
g_type_class_add_private (ap_class, sizeof (NMAccessPointPrivate));
exported_object_class->export_path = NM_DBUS_PATH_ACCESS_POINT "/%u";
/* virtual methods */
object_class->set_property = set_property;
object_class->get_property = get_property;

View File

@@ -58,7 +58,6 @@ GType nm_ap_get_type (void);
NMAccessPoint * nm_ap_new_from_properties (const char *supplicant_path,
GVariant *properties);
NMAccessPoint * nm_ap_new_fake_from_connection (NMConnection *connection);
void nm_ap_export_to_dbus (NMAccessPoint *ap);
void nm_ap_update_from_properties (NMAccessPoint *ap,
const char *supplicant_path,
@@ -72,7 +71,6 @@ gboolean nm_ap_complete_connection (NMAccessPoint *self,
gboolean lock_bssid,
GError **error);
const char * nm_ap_get_dbus_path (NMAccessPoint *ap);
const char * nm_ap_get_supplicant_path (NMAccessPoint *ap);
guint32 nm_ap_get_id (NMAccessPoint *ap);
const GByteArray *nm_ap_get_ssid (const NMAccessPoint *ap);

View File

@@ -24,7 +24,6 @@
#include <string.h>
#include "nm-modem.h"
#include "nm-platform.h"
#include "nm-dbus-manager.h"
#include "nm-setting-connection.h"
#include "nm-logging.h"
#include "NetworkManagerUtils.h"

View File

@@ -27,7 +27,6 @@
#include "nm-dbus-interface.h"
#include "nm-logging.h"
#include "nm-dbus-glib-types.h"
#include "nm-dbus-manager.h"
#include "nm-device.h"
#include "nm-settings-connection.h"
#include "nm-auth-utils.h"
@@ -45,7 +44,6 @@ G_DEFINE_ABSTRACT_TYPE (NMActiveConnection, nm_active_connection, NM_TYPE_EXPORT
typedef struct {
NMConnection *connection;
char *path;
char *specific_object;
NMDevice *device;
@@ -228,7 +226,7 @@ nm_active_connection_set_connection (NMActiveConnection *self,
NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
/* Can't change connection after the ActiveConnection is exported over D-Bus */
g_return_if_fail (priv->path == NULL);
g_return_if_fail (!nm_exported_object_is_exported (NM_EXPORTED_OBJECT (self)));
g_return_if_fail (priv->connection == NULL || !NM_IS_SETTINGS_CONNECTION (priv->connection));
if (priv->connection)
@@ -236,12 +234,6 @@ nm_active_connection_set_connection (NMActiveConnection *self,
priv->connection = g_object_ref (connection);
}
const char *
nm_active_connection_get_path (NMActiveConnection *self)
{
return NM_ACTIVE_CONNECTION_GET_PRIVATE (self)->path;
}
const char *
nm_active_connection_get_specific_object (NMActiveConnection *self)
{
@@ -317,18 +309,6 @@ nm_active_connection_get_default6 (NMActiveConnection *self)
return NM_ACTIVE_CONNECTION_GET_PRIVATE (self)->is_default6;
}
void
nm_active_connection_export (NMActiveConnection *self)
{
NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
static guint32 counter = 0;
g_assert (priv->device || priv->vpn);
priv->path = g_strdup_printf (NM_DBUS_PATH "/ActiveConnection/%d", counter++);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->path, self);
}
NMAuthSubject *
nm_active_connection_get_subject (NMActiveConnection *self)
{
@@ -566,7 +546,7 @@ nm_active_connection_set_master (NMActiveConnection *self, NMActiveConnection *m
/* Master is write-once, and must be set before exporting the object */
g_return_if_fail (priv->master == NULL);
g_return_if_fail (priv->path == NULL);
g_return_if_fail (!nm_exported_object_is_exported (NM_EXPORTED_OBJECT (self)));
if (priv->device) {
/* Note, the master ActiveConnection may not yet have a device */
g_return_if_fail (priv->device != nm_active_connection_get_device (master));
@@ -792,7 +772,7 @@ get_property (GObject *object, guint prop_id,
case PROP_DEVICES:
devices = g_ptr_array_sized_new (1);
if (priv->device && priv->state < NM_ACTIVE_CONNECTION_STATE_DEACTIVATED)
g_ptr_array_add (devices, g_strdup (nm_device_get_path (priv->device)));
g_ptr_array_add (devices, g_strdup (nm_exported_object_get_path (NM_EXPORTED_OBJECT (priv->device))));
g_value_take_boxed (value, devices);
break;
case PROP_STATE:
@@ -830,7 +810,7 @@ get_property (GObject *object, guint prop_id,
case PROP_MASTER:
if (priv->master)
master_device = nm_active_connection_get_device (priv->master);
g_value_set_boxed (value, master_device ? nm_device_get_path (master_device) : "/");
nm_utils_g_value_set_object_path (value, master_device);
break;
case PROP_INT_SUBJECT:
g_value_set_object (value, priv->subject);
@@ -874,8 +854,6 @@ dispose (GObject *object)
priv->chain = NULL;
}
g_free (priv->path);
priv->path = NULL;
g_free (priv->specific_object);
priv->specific_object = NULL;
@@ -898,9 +876,12 @@ static void
nm_active_connection_class_init (NMActiveConnectionClass *ac_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (ac_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (ac_class);
g_type_class_add_private (ac_class, sizeof (NMActiveConnectionPrivate));
exported_object_class->export_path = NM_DBUS_PATH "/ActiveConnection/%u";
/* virtual methods */
object_class->get_property = get_property;
object_class->set_property = set_property;

View File

@@ -96,8 +96,6 @@ void nm_active_connection_authorize (NMActiveConnection *self,
gpointer user_data1,
gpointer user_data2);
void nm_active_connection_export (NMActiveConnection *self);
NMConnection *nm_active_connection_get_connection (NMActiveConnection *self);
void nm_active_connection_set_connection (NMActiveConnection *self,
@@ -109,8 +107,6 @@ const char * nm_active_connection_get_uuid (NMActiveConnection *self);
const char * nm_active_connection_get_connection_type (NMActiveConnection *self);
const char * nm_active_connection_get_path (NMActiveConnection *self);
const char * nm_active_connection_get_specific_object (NMActiveConnection *self);
void nm_active_connection_set_specific_object (NMActiveConnection *self,

View File

@@ -27,7 +27,6 @@
#include "nm-setting-connection.h"
#include "nm-auth-utils.h"
#include "nm-logging.h"
#include "nm-dbus-manager.h"
#include "nm-auth-subject.h"
#include "nm-auth-manager.h"
#include "nm-session-monitor.h"

View File

@@ -24,7 +24,6 @@
#include "nm-glib.h"
#include "nm-dbus-interface.h"
#include "nm-dbus-manager.h"
#include "nm-dhcp4-config.h"
#include "nm-dhcp4-config-glue.h"
#include "nm-dbus-glib-types.h"
@@ -35,7 +34,6 @@ G_DEFINE_TYPE (NMDhcp4Config, nm_dhcp4_config, NM_TYPE_EXPORTED_OBJECT)
#define NM_DHCP4_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DHCP4_CONFIG, NMDhcp4ConfigPrivate))
typedef struct {
char *dbus_path;
GHashTable *options;
} NMDhcp4ConfigPrivate;
@@ -110,14 +108,6 @@ nm_dhcp4_config_list_options (NMDhcp4Config *self)
return list;
}
const char *
nm_dhcp4_config_get_dbus_path (NMDhcp4Config *self)
{
g_return_val_if_fail (NM_IS_DHCP4_CONFIG (self), NULL);
return NM_DHCP4_CONFIG_GET_PRIVATE (self)->dbus_path;
}
static void
nm_gvalue_destroy (gpointer data)
{
@@ -131,10 +121,8 @@ static void
nm_dhcp4_config_init (NMDhcp4Config *self)
{
NMDhcp4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE (self);
static guint32 counter = 0;
priv->dbus_path = g_strdup_printf (NM_DBUS_PATH "/DHCP4Config/%d", counter++);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->dbus_path, self);
nm_exported_object_export (NM_EXPORTED_OBJECT (self));
priv->options = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nm_gvalue_destroy);
}
@@ -144,7 +132,6 @@ finalize (GObject *object)
{
NMDhcp4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE (object);
g_free (priv->dbus_path);
g_hash_table_destroy (priv->options);
G_OBJECT_CLASS (nm_dhcp4_config_parent_class)->finalize (object);
@@ -170,9 +157,12 @@ static void
nm_dhcp4_config_class_init (NMDhcp4ConfigClass *config_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (config_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (config_class);
g_type_class_add_private (config_class, sizeof (NMDhcp4ConfigPrivate));
exported_object_class->export_path = NM_DBUS_PATH "/DHCP4Config/%u";
/* virtual methods */
object_class->get_property = get_property;
object_class->finalize = finalize;

View File

@@ -45,8 +45,6 @@ GType nm_dhcp4_config_get_type (void);
NMDhcp4Config *nm_dhcp4_config_new (void);
const char *nm_dhcp4_config_get_dbus_path (NMDhcp4Config *config);
void nm_dhcp4_config_add_option (NMDhcp4Config *config,
const char *key,
const char *option);

View File

@@ -24,7 +24,6 @@
#include "nm-glib.h"
#include "nm-dbus-interface.h"
#include "nm-dbus-manager.h"
#include "nm-dhcp6-config.h"
#include "nm-dhcp6-config-glue.h"
#include "nm-dbus-glib-types.h"
@@ -35,7 +34,6 @@ G_DEFINE_TYPE (NMDhcp6Config, nm_dhcp6_config, NM_TYPE_EXPORTED_OBJECT)
#define NM_DHCP6_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DHCP6_CONFIG, NMDhcp6ConfigPrivate))
typedef struct {
char *dbus_path;
GHashTable *options;
} NMDhcp6ConfigPrivate;
@@ -110,14 +108,6 @@ nm_dhcp6_config_list_options (NMDhcp6Config *self)
return list;
}
const char *
nm_dhcp6_config_get_dbus_path (NMDhcp6Config *self)
{
g_return_val_if_fail (NM_IS_DHCP6_CONFIG (self), NULL);
return NM_DHCP6_CONFIG_GET_PRIVATE (self)->dbus_path;
}
static void
nm_gvalue_destroy (gpointer data)
{
@@ -131,10 +121,8 @@ static void
nm_dhcp6_config_init (NMDhcp6Config *self)
{
NMDhcp6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE (self);
static guint32 counter = 0;
priv->dbus_path = g_strdup_printf (NM_DBUS_PATH "/DHCP6Config/%d", counter++);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->dbus_path, self);
nm_exported_object_export (NM_EXPORTED_OBJECT (self));
priv->options = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nm_gvalue_destroy);
}
@@ -144,7 +132,6 @@ finalize (GObject *object)
{
NMDhcp6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE (object);
g_free (priv->dbus_path);
g_hash_table_destroy (priv->options);
G_OBJECT_CLASS (nm_dhcp6_config_parent_class)->finalize (object);
@@ -170,9 +157,12 @@ static void
nm_dhcp6_config_class_init (NMDhcp6ConfigClass *config_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (config_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (config_class);
g_type_class_add_private (config_class, sizeof (NMDhcp6ConfigPrivate));
exported_object_class->export_path = NM_DBUS_PATH "/DHCP6Config/%u";
/* virtual methods */
object_class->get_property = get_property;
object_class->finalize = finalize;

View File

@@ -45,8 +45,6 @@ GType nm_dhcp6_config_get_type (void);
NMDhcp6Config *nm_dhcp6_config_new (void);
const char *nm_dhcp6_config_get_dbus_path (NMDhcp6Config *config);
void nm_dhcp6_config_add_option (NMDhcp6Config *config,
const char *key,
const char *option);

View File

@@ -275,7 +275,7 @@ fill_device_props (NMDevice *device,
g_variant_builder_add (dev_builder, "{sv}", NMD_DEVICE_PROPS_STATE,
g_variant_new_uint32 (nm_device_get_state (device)));
g_variant_builder_add (dev_builder, "{sv}", NMD_DEVICE_PROPS_PATH,
g_variant_new_object_path (nm_device_get_path (device)));
g_variant_new_object_path (nm_exported_object_get_path (NM_EXPORTED_OBJECT (device))));
ip4_config = nm_device_get_ip4_config (device);
if (ip4_config)

View File

@@ -24,11 +24,18 @@
#include "nm-exported-object.h"
#include "nm-dbus-glib-types.h"
#include "nm-dbus-manager.h"
#include "nm-logging.h"
G_DEFINE_ABSTRACT_TYPE (NMExportedObject, nm_exported_object, G_TYPE_OBJECT)
static GHashTable *prefix_counters;
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (NMExportedObject, nm_exported_object, G_TYPE_OBJECT,
prefix_counters = g_hash_table_new (g_str_hash, g_str_equal);
)
typedef struct {
char *path;
GHashTable *pending_notifies;
guint notify_idle_id;
} NMExportedObjectPrivate;
@@ -110,6 +117,107 @@ nm_exported_object_class_add_interface (NMExportedObjectClass *object_class,
}
}
/**
* nm_exported_object_export:
* @self: an #NMExportedObject
*
* Exports @self on all active and future D-Bus connections.
*
* The path to export @self on is taken from its #NMObjectClass's %export_path
* member. If the %export_path contains "%u", then it will be replaced with a
* monotonically increasing integer ID (with each distinct %export_path having
* its own counter). Otherwise, %export_path will be used literally (implying
* that @self must be a singleton).
*
* Returns: the path @self was exported under
*/
const char *
nm_exported_object_export (NMExportedObject *self)
{
NMExportedObjectPrivate *priv;
const char *class_export_path, *p;
g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL);
priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self);
g_return_val_if_fail (priv->path == NULL, priv->path);
class_export_path = NM_EXPORTED_OBJECT_GET_CLASS (self)->export_path;
p = strchr (class_export_path, '%');
if (p) {
guint *counter;
g_return_val_if_fail (p[1] == 'u', NULL);
g_return_val_if_fail (strchr (p + 1, '%') == NULL, NULL);
counter = g_hash_table_lookup (prefix_counters, class_export_path);
if (!counter) {
counter = g_new0 (guint, 1);
g_hash_table_insert (prefix_counters, g_strdup (class_export_path), counter);
}
priv->path = g_strdup_printf (class_export_path, (*counter)++);
} else
priv->path = g_strdup (class_export_path);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->path, self);
return priv->path;
}
/**
* nm_exported_object_get_path:
* @self: an #NMExportedObject
*
* Gets @self's D-Bus path.
*
* Returns: @self's D-Bus path, or %NULL if @self is not exported.
*/
const char *
nm_exported_object_get_path (NMExportedObject *self)
{
g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), NULL);
return NM_EXPORTED_OBJECT_GET_PRIVATE (self)->path;
}
/**
* nm_exported_object_is_exported:
* @self: an #NMExportedObject
*
* Checks if @self is exported
*
* Returns: %TRUE if @self is exported
*/
gboolean
nm_exported_object_is_exported (NMExportedObject *self)
{
g_return_val_if_fail (NM_IS_EXPORTED_OBJECT (self), FALSE);
return NM_EXPORTED_OBJECT_GET_PRIVATE (self)->path != NULL;
}
/**
* nm_exported_object_unexport:
* @self: an #NMExportedObject
*
* Unexports @self on all active D-Bus connections (and prevents it from being
* auto-exported on future connections).
*/
void
nm_exported_object_unexport (NMExportedObject *self)
{
NMExportedObjectPrivate *priv;
g_return_if_fail (NM_IS_EXPORTED_OBJECT (self));
priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self);
g_return_if_fail (priv->path != NULL);
g_clear_pointer (&priv->path, g_free);
nm_dbus_manager_unregister_object (nm_dbus_manager_get (), self);
}
static void
destroy_value (gpointer data)
{
@@ -211,6 +319,9 @@ nm_exported_object_dispose (GObject *object)
{
NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (object);
if (priv->path)
nm_exported_object_unexport (NM_EXPORTED_OBJECT (object));
g_hash_table_remove_all (priv->pending_notifies);
nm_clear_g_source (&priv->notify_idle_id);

View File

@@ -41,6 +41,8 @@ typedef struct {
typedef struct {
GObjectClass parent;
const char *export_path;
} NMExportedObjectClass;
GType nm_exported_object_get_type (void);
@@ -48,6 +50,11 @@ GType nm_exported_object_get_type (void);
void nm_exported_object_class_add_interface (NMExportedObjectClass *object_class,
const DBusGObjectInfo *info);
const char *nm_exported_object_export (NMExportedObject *self);
const char *nm_exported_object_get_path (NMExportedObject *self);
gboolean nm_exported_object_is_exported (NMExportedObject *self);
void nm_exported_object_unexport (NMExportedObject *self);
G_END_DECLS
#endif /* NM_EXPORTED_OBJECT_H */

View File

@@ -507,6 +507,7 @@ gboolean nm_config_get_configure_and_quit (gpointer unused);
gconstpointer nm_dbus_manager_get (void);
void nm_dbus_manager_register_exported_type (gpointer unused, GType gtype, gconstpointer unused2);
void nm_dbus_manager_register_object (gpointer unused, const char *path, gpointer object);
void nm_dbus_manager_unregister_object (gpointer unused, gpointer object);
gconstpointer
nm_config_get (void)
@@ -542,3 +543,8 @@ nm_dbus_manager_register_object (gpointer unused, const char *path, gpointer obj
{
}
void
nm_dbus_manager_unregister_object (gpointer unused, gpointer object)
{
}

View File

@@ -28,7 +28,6 @@
#include "nm-utils.h"
#include "nm-platform.h"
#include "nm-dbus-manager.h"
#include "nm-dbus-glib-types.h"
#include "nm-ip4-config-glue.h"
#include "NetworkManagerUtils.h"
@@ -42,8 +41,6 @@ G_DEFINE_TYPE (NMIP4Config, nm_ip4_config, NM_TYPE_EXPORTED_OBJECT)
#define NM_IP4_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_IP4_CONFIG, NMIP4ConfigPrivate))
typedef struct {
char *path;
gboolean never_default;
guint32 gateway;
gboolean has_gateway;
@@ -96,26 +93,6 @@ nm_ip4_config_new (int ifindex)
NULL);
}
void
nm_ip4_config_export (NMIP4Config *config)
{
NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config);
static guint32 counter = 0;
if (!priv->path) {
priv->path = g_strdup_printf (NM_DBUS_PATH "/IP4Config/%d", counter++);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->path, config);
}
}
const char *
nm_ip4_config_get_dbus_path (const NMIP4Config *config)
{
NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config);
return priv->path;
}
int
nm_ip4_config_get_ifindex (const NMIP4Config *config)
{
@@ -1197,7 +1174,7 @@ nm_ip4_config_dump (const NMIP4Config *config, const char *detail)
g_message ("--------- NMIP4Config %p (%s)", config, detail);
str = nm_ip4_config_get_dbus_path (config);
str = nm_exported_object_get_path (NM_EXPORTED_OBJECT (config));
if (str)
g_message (" path: %s", str);
@@ -2134,8 +2111,6 @@ finalize (GObject *object)
{
NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (object);
g_free (priv->path);
g_array_unref (priv->addresses);
g_array_unref (priv->routes);
g_array_unref (priv->nameservers);
@@ -2343,9 +2318,12 @@ static void
nm_ip4_config_class_init (NMIP4ConfigClass *config_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (config_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (config_class);
g_type_class_add_private (config_class, sizeof (NMIP4ConfigPrivate));
exported_object_class->export_path = NM_DBUS_PATH "/IP4Config/%u";
object_class->get_property = get_property;
object_class->set_property = set_property;
object_class->finalize = finalize;

View File

@@ -63,10 +63,6 @@ NMIP4Config * nm_ip4_config_new (int ifindex);
int nm_ip4_config_get_ifindex (const NMIP4Config *config);
/* D-Bus integration */
void nm_ip4_config_export (NMIP4Config *config);
const char * nm_ip4_config_get_dbus_path (const NMIP4Config *config);
/* Integration with nm-platform and nm-setting */
NMIP4Config *nm_ip4_config_capture (int ifindex, gboolean capture_resolv_conf);
gboolean nm_ip4_config_commit (const NMIP4Config *config, int ifindex, gboolean routes_full_sync, gint64 default_route_metric);

View File

@@ -29,7 +29,6 @@
#include "nm-utils.h"
#include "nm-platform.h"
#include "nm-dbus-manager.h"
#include "nm-dbus-glib-types.h"
#include "nm-ip6-config-glue.h"
#include "nm-route-manager.h"
@@ -41,8 +40,6 @@ G_DEFINE_TYPE (NMIP6Config, nm_ip6_config, NM_TYPE_EXPORTED_OBJECT)
#define NM_IP6_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_IP6_CONFIG, NMIP6ConfigPrivate))
typedef struct {
char *path;
gboolean never_default;
struct in6_addr gateway;
GArray *addresses;
@@ -85,26 +82,6 @@ nm_ip6_config_new (int ifindex)
NULL);
}
void
nm_ip6_config_export (NMIP6Config *config)
{
NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config);
static guint32 counter = 0;
if (!priv->path) {
priv->path = g_strdup_printf (NM_DBUS_PATH "/IP6Config/%d", counter++);
nm_dbus_manager_register_object (nm_dbus_manager_get (), priv->path, config);
}
}
const char *
nm_ip6_config_get_dbus_path (const NMIP6Config *config)
{
NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config);
return priv->path;
}
int
nm_ip6_config_get_ifindex (const NMIP6Config *config)
{
@@ -1167,7 +1144,7 @@ nm_ip6_config_dump (const NMIP6Config *config, const char *detail)
g_message ("--------- NMIP6Config %p (%s)", config, detail);
str = nm_ip6_config_get_dbus_path (config);
str = nm_exported_object_get_path (NM_EXPORTED_OBJECT (config));
if (str)
g_message (" path: %s", str);
@@ -1892,8 +1869,6 @@ finalize (GObject *object)
{
NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (object);
g_free (priv->path);
g_array_unref (priv->addresses);
g_array_unref (priv->routes);
g_array_unref (priv->nameservers);
@@ -2152,9 +2127,12 @@ static void
nm_ip6_config_class_init (NMIP6ConfigClass *config_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (config_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (config_class);
g_type_class_add_private (config_class, sizeof (NMIP6ConfigPrivate));
exported_object_class->export_path = NM_DBUS_PATH "/IP6Config/%u";
/* virtual methods */
object_class->get_property = get_property;
object_class->set_property = set_property;

View File

@@ -64,10 +64,6 @@ NMIP6Config * nm_ip6_config_new (int ifindex);
int nm_ip6_config_get_ifindex (const NMIP6Config *config);
/* D-Bus integration */
void nm_ip6_config_export (NMIP6Config *config);
const char * nm_ip6_config_get_dbus_path (const NMIP6Config *config);
/* Integration with nm-platform and nm-setting */
NMIP6Config *nm_ip6_config_capture (int ifindex, gboolean capture_resolv_conf, NMSettingIP6ConfigPrivacy use_temporary);
gboolean nm_ip6_config_commit (const NMIP6Config *config, int ifindex, gboolean routes_full_sync);

View File

@@ -253,7 +253,7 @@ static gboolean
active_connection_remove (NMManager *self, NMActiveConnection *active)
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
gboolean notify = !!nm_active_connection_get_path (active);
gboolean notify = nm_exported_object_is_exported (NM_EXPORTED_OBJECT (active));
GSList *found;
/* FIXME: switch to a GList for faster removal */
@@ -375,7 +375,7 @@ active_connection_add (NMManager *self, NMActiveConnection *active)
g_signal_emit (self, signals[ACTIVE_CONNECTION_ADDED], 0, active);
/* Only notify D-Bus if the active connection is actually exported */
if (nm_active_connection_get_path (active))
if (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (active)))
g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS);
}
@@ -446,7 +446,7 @@ active_connection_get_by_path (NMManager *manager, const char *path)
for (iter = priv->active_connections; iter; iter = g_slist_next (iter)) {
NMActiveConnection *candidate = iter->data;
if (g_strcmp0 (path, nm_active_connection_get_path (candidate)) == 0)
if (g_strcmp0 (path, nm_exported_object_get_path (NM_EXPORTED_OBJECT (candidate))) == 0)
return candidate;
}
return NULL;
@@ -474,7 +474,7 @@ nm_manager_get_device_by_path (NMManager *manager, const char *path)
g_return_val_if_fail (path != NULL, NULL);
for (iter = NM_MANAGER_GET_PRIVATE (manager)->devices; iter; iter = iter->next) {
if (!strcmp (nm_device_get_path (NM_DEVICE (iter->data)), path))
if (!strcmp (nm_exported_object_get_path (NM_EXPORTED_OBJECT (iter->data)), path))
return NM_DEVICE (iter->data);
}
return NULL;
@@ -832,7 +832,7 @@ remove_device (NMManager *manager,
g_object_notify (G_OBJECT (manager), NM_MANAGER_DEVICES);
nm_device_removed (device);
nm_dbus_manager_unregister_object (priv->dbus_mgr, device);
nm_exported_object_unexport (NM_EXPORTED_OBJECT (device));
g_object_unref (device);
check_if_startup_complete (manager);
@@ -1597,7 +1597,7 @@ assume_connection (NMManager *self, NMDevice *device, NMConnection *connection)
nm_active_connection_set_master (active, master_ac);
nm_active_connection_set_assumed (active, TRUE);
nm_active_connection_export (active);
nm_exported_object_export (NM_EXPORTED_OBJECT (active));
active_connection_add (self, active);
nm_device_queue_activation (device, NM_ACT_REQUEST (active));
g_object_unref (active);
@@ -1719,6 +1719,7 @@ add_device (NMManager *self, NMDevice *device, gboolean try_assume)
GSList *iter, *remove = NULL;
gboolean connection_assumed = FALSE;
int ifindex;
const char *dbus_path;
/* No duplicates */
ifindex = nm_device_get_ifindex (device);
@@ -1800,7 +1801,9 @@ add_device (NMManager *self, NMDevice *device, gboolean try_assume)
sleeping = manager_sleeping (self);
nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_INTERNAL, sleeping);
nm_device_dbus_export (device);
dbus_path = nm_exported_object_export (NM_EXPORTED_OBJECT (device));
nm_log_dbg (LOGD_DEVICE, "(%s): exported as %s", nm_device_get_iface (device), dbus_path);
nm_device_finish_init (device);
if (try_assume) {
@@ -2050,8 +2053,7 @@ impl_manager_get_devices (NMManager *manager, GPtrArray **devices, GError **err)
*devices = g_ptr_array_sized_new (g_slist_length (priv->devices));
for (iter = priv->devices; iter; iter = iter->next)
g_ptr_array_add (*devices, g_strdup (nm_device_get_path (NM_DEVICE (iter->data))));
g_ptr_array_add (*devices, g_strdup (nm_exported_object_get_path (NM_EXPORTED_OBJECT (iter->data))));
return TRUE;
}
@@ -2066,7 +2068,7 @@ impl_manager_get_device_by_ip_iface (NMManager *self,
device = find_device_by_ip_iface (self, iface);
if (device) {
path = nm_device_get_path (device);
path = nm_exported_object_get_path (NM_EXPORTED_OBJECT (device));
if (path)
*out_object_path = g_strdup (path);
}
@@ -2537,7 +2539,7 @@ _internal_activate_vpn (NMManager *self, NMActiveConnection *active, GError **er
NM_VPN_CONNECTION (active),
error);
if (success) {
nm_active_connection_export (active);
nm_exported_object_export (NM_EXPORTED_OBJECT (active));
g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS);
}
return success;
@@ -2707,7 +2709,7 @@ _internal_activate_device (NMManager *self, NMActiveConnection *active, GError *
nm_device_steal_connection (existing, connection);
/* Export the new ActiveConnection to clients and start it on the device */
nm_active_connection_export (active);
nm_exported_object_export (NM_EXPORTED_OBJECT (active));
g_object_notify (G_OBJECT (self), NM_MANAGER_ACTIVE_CONNECTIONS);
nm_device_queue_activation (device, NM_ACT_REQUEST (active));
return TRUE;
@@ -2787,7 +2789,7 @@ _new_vpn_active_connection (NMManager *self,
return (NMActiveConnection *) nm_vpn_connection_new (connection,
device,
nm_active_connection_get_path (parent),
nm_exported_object_get_path (NM_EXPORTED_OBJECT (parent)),
subject);
}
@@ -3072,7 +3074,7 @@ _activation_auth_done (NMActiveConnection *active,
if (success) {
if (_internal_activate_generic (self, active, &error)) {
dbus_g_method_return (context, nm_active_connection_get_path (active));
dbus_g_method_return (context, nm_exported_object_get_path (NM_EXPORTED_OBJECT (active)));
g_object_unref (active);
return;
}
@@ -3225,7 +3227,7 @@ activation_add_done (NMSettings *self,
NULL, NULL);
dbus_g_method_return (context,
nm_connection_get_path (NM_CONNECTION (new_connection)),
nm_active_connection_get_path (info->active));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (info->active)));
goto done;
}
error = local;
@@ -3494,7 +3496,7 @@ impl_manager_deactivate_connection (NMManager *self,
for (iter = priv->active_connections; iter; iter = g_slist_next (iter)) {
NMActiveConnection *ac = iter->data;
if (g_strcmp0 (nm_active_connection_get_path (ac), active_path) == 0) {
if (g_strcmp0 (nm_exported_object_get_path (NM_EXPORTED_OBJECT (ac)), active_path) == 0) {
connection = nm_active_connection_get_connection (ac);
break;
}
@@ -4751,7 +4753,7 @@ nm_manager_new (NMSettings *settings,
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_VISIBILITY_CHANGED,
G_CALLBACK (connection_changed), singleton);
nm_dbus_manager_register_object (priv->dbus_mgr, NM_DBUS_PATH, singleton);
nm_exported_object_export (NM_EXPORTED_OBJECT (singleton));
g_signal_connect (nm_platform_get (),
NM_PLATFORM_SIGNAL_LINK_CHANGED,
@@ -4867,9 +4869,6 @@ get_property (GObject *object, guint prop_id,
{
NMManager *self = NM_MANAGER (object);
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
GSList *iter;
GPtrArray *array;
const char *path;
const char *type;
switch (prop_id) {
@@ -4905,28 +4904,20 @@ get_property (GObject *object, guint prop_id,
g_value_set_boolean (value, priv->radio_states[RFKILL_TYPE_WIMAX].hw_enabled);
break;
case PROP_ACTIVE_CONNECTIONS:
array = g_ptr_array_sized_new (3);
for (iter = priv->active_connections; iter; iter = g_slist_next (iter)) {
path = nm_active_connection_get_path (NM_ACTIVE_CONNECTION (iter->data));
if (path)
g_ptr_array_add (array, g_strdup (path));
}
g_value_take_boxed (value, array);
nm_utils_g_value_set_object_path_array (value, priv->active_connections);
break;
case PROP_CONNECTIVITY:
g_value_set_uint (value, nm_connectivity_get_state (priv->connectivity));
break;
case PROP_PRIMARY_CONNECTION:
path = priv->primary_connection ? nm_active_connection_get_path (priv->primary_connection) : NULL;
g_value_set_boxed (value, path ? path : "/");
nm_utils_g_value_set_object_path (value, priv->primary_connection);
break;
case PROP_PRIMARY_CONNECTION_TYPE:
type = priv->primary_connection ? nm_active_connection_get_connection_type (priv->primary_connection) : NULL;
g_value_set_string (value, type ? type : "");
break;
case PROP_ACTIVATING_CONNECTION:
path = priv->activating_connection ? nm_active_connection_get_path (priv->activating_connection) : NULL;
g_value_set_boxed (value, path ? path : "/");
nm_utils_g_value_set_object_path (value, priv->activating_connection);
break;
case PROP_HOSTNAME:
g_value_set_string (value, priv->hostname);
@@ -4935,13 +4926,7 @@ get_property (GObject *object, guint prop_id,
g_value_set_boolean (value, priv->sleeping);
break;
case PROP_DEVICES:
array = g_ptr_array_sized_new (5);
for (iter = priv->devices; iter; iter = g_slist_next (iter)) {
path = nm_device_get_path (NM_DEVICE (iter->data));
if (path)
g_ptr_array_add (array, g_strdup (path));
}
g_value_take_boxed (value, array);
nm_utils_g_value_set_object_path_array (value, priv->devices);
break;
case PROP_METERED:
g_value_set_uint (value, priv->metered);
@@ -5086,9 +5071,12 @@ static void
nm_manager_class_init (NMManagerClass *manager_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (manager_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (manager_class);
g_type_class_add_private (manager_class, sizeof (NMManagerPrivate));
exported_object_class->export_path = NM_DBUS_PATH;
/* virtual methods */
object_class->set_property = set_property;
object_class->get_property = get_property;

View File

@@ -34,7 +34,6 @@
#include "nm-logging.h"
#include "nm-device.h"
#include "nm-default-route-manager.h"
#include "nm-dbus-manager.h"
#include "nm-setting-ip4-config.h"
#include "nm-setting-connection.h"
#include "nm-platform.h"
@@ -770,7 +769,7 @@ process_secondaries (NMPolicy *policy,
if (connected) {
nm_log_dbg (LOGD_DEVICE, "Secondary connection '%s' SUCCEEDED; active path '%s'",
nm_active_connection_get_id (active),
nm_active_connection_get_path (active));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (active)));
/* Secondary connection activated */
secondary_data->secondaries = g_slist_remove (secondary_data->secondaries, secondary_active);
@@ -786,7 +785,7 @@ process_secondaries (NMPolicy *policy,
} else {
nm_log_dbg (LOGD_DEVICE, "Secondary connection '%s' FAILED; active path '%s'",
nm_active_connection_get_id (active),
nm_active_connection_get_path (active));
nm_exported_object_get_path (NM_EXPORTED_OBJECT (active)));
/* Secondary connection failed -> do not watch other connections */
priv->pending_secondaries = g_slist_remove (priv->pending_secondaries, secondary_data);
@@ -1063,7 +1062,7 @@ activate_secondary_connections (NMPolicy *policy,
nm_connection_get_id (connection), nm_connection_get_uuid (connection));
ac = nm_manager_activate_connection (priv->manager,
NM_CONNECTION (settings_con),
nm_active_connection_get_path (NM_ACTIVE_CONNECTION (req)),
nm_exported_object_get_path (NM_EXPORTED_OBJECT (req)),
device,
nm_active_connection_get_subject (NM_ACTIVE_CONNECTION (req)),
&error);
@@ -1686,7 +1685,7 @@ _deactivate_if_active (NMManager *manager, NMConnection *connection)
if (nm_active_connection_get_connection (ac) == connection &&
(state <= NM_ACTIVE_CONNECTION_STATE_ACTIVATED)) {
if (!nm_manager_deactivate_connection (manager,
nm_active_connection_get_path (ac),
nm_exported_object_get_path (NM_EXPORTED_OBJECT (ac)),
NM_DEVICE_STATE_REASON_CONNECTION_REMOVED,
&error)) {
nm_log_warn (LOGD_DEVICE, "Connection '%s' disappeared, but error deactivating it: (%d) %s",

View File

@@ -27,7 +27,6 @@
#include "nm-glib.h"
#include "nm-logging.h"
#include "nm-dbus-manager.h"
#include "nm-core-internal.h"
#include "NetworkManagerUtils.h"

View File

@@ -75,7 +75,6 @@ static void _ppp_kill (NMPPPManager *manager);
typedef struct {
GPid pid;
char *dbus_path;
char *parent_iface;
@@ -123,13 +122,7 @@ nm_ppp_manager_init (NMPPPManager *manager)
static void
constructed (GObject *object)
{
NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (object);
DBusGConnection *connection;
static guint32 counter = 0;
priv->dbus_path = g_strdup_printf (NM_DBUS_PATH "/PPP/%d", counter++);
connection = nm_dbus_manager_get_connection (nm_dbus_manager_get ());
dbus_g_connection_register_g_object (connection, priv->dbus_path, object);
nm_exported_object_export (NM_EXPORTED_OBJECT (object));
G_OBJECT_CLASS (nm_ppp_manager_parent_class)->constructed (object);
}
@@ -618,9 +611,12 @@ static void
nm_ppp_manager_class_init (NMPPPManagerClass *manager_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (manager_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (manager_class);
g_type_class_add_private (manager_class, sizeof (NMPPPManagerPrivate));
exported_object_class->export_path = NM_DBUS_PATH "/PPP";
object_class->constructed = constructed;
object_class->dispose = dispose;
object_class->finalize = finalize;
@@ -1001,7 +997,7 @@ create_pppd_cmd_line (NMPPPManager *self,
nm_cmd_line_add_int (cmd, 0);
nm_cmd_line_add_string (cmd, "ipparam");
nm_cmd_line_add_string (cmd, priv->dbus_path);
nm_cmd_line_add_string (cmd, nm_exported_object_get_path (NM_EXPORTED_OBJECT (self)));
nm_cmd_line_add_string (cmd, "plugin");
nm_cmd_line_add_string (cmd, NM_PPPD_PLUGIN);

View File

@@ -1553,7 +1553,7 @@ constructed (GObject *object)
priv->dbus_mgr = g_object_ref (nm_dbus_manager_get ());
priv->auth_mgr = g_object_ref (nm_auth_manager_get ());
nm_dbus_manager_register_object (priv->dbus_mgr, NM_DBUS_PATH_AGENT_MANAGER, object);
nm_exported_object_export (NM_EXPORTED_OBJECT (object));
g_signal_connect (priv->dbus_mgr,
NM_DBUS_MANAGER_NAME_OWNER_CHANGED,
@@ -1593,7 +1593,7 @@ dispose (GObject *object)
g_signal_handlers_disconnect_by_func (priv->dbus_mgr,
G_CALLBACK (name_owner_changed_cb),
object);
nm_dbus_manager_unregister_object (priv->dbus_mgr, object);
nm_exported_object_unexport (NM_EXPORTED_OBJECT (object));
g_clear_object (&priv->dbus_mgr);
}
@@ -1604,9 +1604,12 @@ static void
nm_agent_manager_class_init (NMAgentManagerClass *agent_manager_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (agent_manager_class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (agent_manager_class);
g_type_class_add_private (agent_manager_class, sizeof (NMAgentManagerPrivate));
exported_object_class->export_path = NM_DBUS_PATH_AGENT_MANAGER;
/* virtual methods */
object_class->constructed = constructed;
object_class->dispose = dispose;

View File

@@ -29,7 +29,6 @@
#include "nm-glib.h"
#include "nm-settings-connection.h"
#include "nm-session-monitor.h"
#include "nm-dbus-manager.h"
#include "nm-dbus-glib-types.h"
#include "nm-logging.h"
#include "nm-auth-utils.h"
@@ -1790,10 +1789,10 @@ nm_settings_connection_signal_remove (NMSettingsConnection *self)
/* Emit removed first */
g_signal_emit_by_name (self, NM_SETTINGS_CONNECTION_REMOVED);
/* And unregistered last to ensure the removed signal goes out before
/* And unregister last to ensure the removed signal goes out before
* we take the connection off the bus.
*/
nm_dbus_manager_unregister_object (nm_dbus_manager_get (), G_OBJECT (self));
nm_exported_object_unexport (NM_EXPORTED_OBJECT (self));
}
gboolean
@@ -2430,9 +2429,12 @@ static void
nm_settings_connection_class_init (NMSettingsConnectionClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (class);
g_type_class_add_private (class, sizeof (NMSettingsConnectionPrivate));
exported_object_class->export_path = NM_DBUS_PATH_SETTINGS "/%u";
/* Virtual methods */
object_class->constructed = constructed;
object_class->dispose = dispose;

View File

@@ -973,11 +973,10 @@ static void
claim_connection (NMSettings *self, NMSettingsConnection *connection)
{
NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self);
static guint32 ec_counter = 0;
GError *error = NULL;
GHashTableIter iter;
gpointer data;
char *path;
const char *path;
NMSettingsConnection *existing;
g_return_if_fail (NM_IS_SETTINGS_CONNECTION (connection));
@@ -1043,10 +1042,8 @@ claim_connection (NMSettings *self, NMSettingsConnection *connection)
/* Export the connection over D-Bus */
g_warn_if_fail (nm_connection_get_path (NM_CONNECTION (connection)) == NULL);
path = g_strdup_printf ("%s/%u", NM_DBUS_PATH_SETTINGS, ec_counter++);
path = nm_exported_object_export (NM_EXPORTED_OBJECT (connection));
nm_connection_set_path (NM_CONNECTION (connection), path);
nm_dbus_manager_register_object (priv->dbus_mgr, path, G_OBJECT (connection));
g_free (path);
g_hash_table_insert (priv->connections,
(gpointer) nm_connection_get_path (NM_CONNECTION (connection)),
@@ -2141,7 +2138,7 @@ nm_settings_new (GError **error)
if (!priv->hostname.hostnamed_proxy)
setup_hostname_file_monitors (self);
nm_dbus_manager_register_object (priv->dbus_mgr, NM_DBUS_PATH_SETTINGS, self);
nm_exported_object_export (NM_EXPORTED_OBJECT (self));
return self;
}
@@ -2279,9 +2276,12 @@ static void
nm_settings_class_init (NMSettingsClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (class);
g_type_class_add_private (class, sizeof (NMSettingsPrivate));
exported_object_class->export_path = NM_DBUS_PATH_SETTINGS;
/* virtual methods */
object_class->get_property = get_property;
object_class->dispose = dispose;

View File

@@ -1360,7 +1360,7 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
g_clear_object (&priv->ip4_config);
priv->ip4_config = config;
nm_ip4_config_export (config);
nm_exported_object_export (NM_EXPORTED_OBJECT (config));
g_object_notify (G_OBJECT (self), NM_ACTIVE_CONNECTION_IP4_CONFIG);
nm_vpn_connection_config_maybe_complete (self, TRUE);
}
@@ -1497,7 +1497,7 @@ next:
g_clear_object (&priv->ip6_config);
priv->ip6_config = config;
nm_ip6_config_export (config);
nm_exported_object_export (NM_EXPORTED_OBJECT (config));
g_object_notify (G_OBJECT (self), NM_ACTIVE_CONNECTION_IP6_CONFIG);
nm_vpn_connection_config_maybe_complete (self, TRUE);
}
@@ -2278,20 +2278,14 @@ get_property (GObject *object, guint prop_id,
g_value_set_string (value, priv->banner ? priv->banner : "");
break;
case PROP_IP4_CONFIG:
if (ip_config_valid (priv->vpn_state) && priv->ip4_config)
g_value_set_boxed (value, nm_ip4_config_get_dbus_path (priv->ip4_config));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, ip_config_valid (priv->vpn_state) ? priv->ip4_config : NULL);
break;
case PROP_IP6_CONFIG:
if (ip_config_valid (priv->vpn_state) && priv->ip6_config)
g_value_set_boxed (value, nm_ip6_config_get_dbus_path (priv->ip6_config));
else
g_value_set_boxed (value, "/");
nm_utils_g_value_set_object_path (value, ip_config_valid (priv->vpn_state) ? priv->ip6_config : NULL);
break;
case PROP_MASTER:
parent_dev = nm_active_connection_get_device (NM_ACTIVE_CONNECTION (object));
g_value_set_boxed (value, parent_dev ? nm_device_get_path (parent_dev) : "/");
nm_utils_g_value_set_object_path (value, parent_dev);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);

View File

@@ -28,7 +28,6 @@
#include "nm-vpn-service.h"
#include "nm-vpn-connection.h"
#include "nm-setting-vpn.h"
#include "nm-dbus-manager.h"
#include "nm-vpn-dbus-interface.h"
#include "nm-enum-types.h"
#include "nm-logging.h"