summaryrefslogtreecommitdiff
path: root/src/nm-device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-device.c')
-rw-r--r--src/nm-device.c69
1 files changed, 37 insertions, 32 deletions
diff --git a/src/nm-device.c b/src/nm-device.c
index 1506b96ba6..5769a0177f 100644
--- a/src/nm-device.c
+++ b/src/nm-device.c
@@ -66,12 +66,12 @@ struct _NMDevicePrivate
{
gboolean dispose_has_run;
gboolean initialized;
- guint start_timer;
NMDeviceState state;
guint failed_to_disconnected_id;
char * udi;
+ char * path;
char * iface; /* may change, could be renamed by user */
char * ip_iface;
NMDeviceType type;
@@ -109,13 +109,13 @@ struct _NMDevicePrivate
static gboolean check_connection_compatible (NMDeviceInterface *device,
NMConnection *connection,
GError **error);
-
static gboolean nm_device_activate (NMDeviceInterface *device,
NMActRequest *req,
GError **error);
+static void nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason);
+static gboolean nm_device_spec_match_list (NMDeviceInterface *device, const GSList *specs);
static void nm_device_activate_schedule_stage5_ip_config_commit (NMDevice *self);
-static void nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason);
static void nm_device_take_down (NMDevice *dev, gboolean wait, NMDeviceStateReason reason);
@@ -131,6 +131,7 @@ device_interface_init (NMDeviceInterface *device_interface_class)
device_interface_class->check_connection_compatible = check_connection_compatible;
device_interface_class->activate = nm_device_activate;
device_interface_class->deactivate = nm_device_deactivate;
+ device_interface_class->spec_match_list = nm_device_spec_match_list;
}
@@ -144,19 +145,6 @@ nm_device_init (NMDevice * self)
self->priv->state = NM_DEVICE_STATE_UNMANAGED;
}
-static gboolean
-device_start (gpointer user_data)
-{
- NMDevice *self = NM_DEVICE (user_data);
-
- self->priv->start_timer = 0;
- if (self->priv->managed)
- nm_device_state_changed (self, NM_DEVICE_STATE_UNAVAILABLE, NM_DEVICE_STATE_REASON_NOW_MANAGED);
- else
- nm_info ("(%s): now unmanaged", nm_device_get_iface (self));
- return FALSE;
-}
-
static GObject*
constructor (GType type,
guint n_construct_params,
@@ -191,13 +179,10 @@ constructor (GType type,
goto error;
}
- nm_print_device_capabilities (dev);
+ if (NM_DEVICE_GET_CLASS (dev)->update_hw_address)
+ NM_DEVICE_GET_CLASS (dev)->update_hw_address (dev);
- /* Delay transition from UNMANAGED to UNAVAILABLE until we've given the
- * system settings service a chance to figure out whether the device is
- * managed or not.
- */
- priv->start_timer = g_timeout_add_seconds (4, device_start, dev);
+ nm_print_device_capabilities (dev);
priv->initialized = TRUE;
return object;
@@ -224,6 +209,22 @@ real_get_generic_capabilities (NMDevice *dev)
return 0;
}
+void
+nm_device_set_path (NMDevice *self, const char *path)
+{
+ g_return_if_fail (self != NULL);
+ g_return_if_fail (self->priv->path == NULL);
+
+ self->priv->path = g_strdup (path);
+}
+
+const char *
+nm_device_get_path (NMDevice *self)
+{
+ g_return_val_if_fail (self != NULL, NULL);
+
+ return self->priv->path;
+}
const char *
nm_device_get_udi (NMDevice *self)
@@ -2161,11 +2162,6 @@ nm_device_dispose (GObject *object)
self->priv->dispose_has_run = TRUE;
- if (self->priv->start_timer) {
- g_source_remove (self->priv->start_timer);
- self->priv->start_timer = 0;
- }
-
if (self->priv->failed_to_disconnected_id) {
g_source_remove (self->priv->failed_to_disconnected_id);
self->priv->failed_to_disconnected_id = 0;
@@ -2497,11 +2493,6 @@ nm_device_set_managed (NMDevice *device,
priv->managed = managed;
nm_info ("(%s): now %s", nm_device_get_iface (device), managed ? "managed" : "unmanaged");
- if (priv->start_timer) {
- g_source_remove (priv->start_timer);
- priv->start_timer = 0;
- }
-
g_object_notify (G_OBJECT (device), NM_DEVICE_INTERFACE_MANAGED);
/* If now managed, jump to unavailable */
@@ -2511,3 +2502,17 @@ nm_device_set_managed (NMDevice *device,
nm_device_state_changed (device, NM_DEVICE_STATE_UNMANAGED, reason);
}
+static gboolean
+nm_device_spec_match_list (NMDeviceInterface *device, const GSList *specs)
+{
+ NMDevice *self;
+
+ g_return_val_if_fail (device != NULL, FALSE);
+
+ self = NM_DEVICE (device);
+ if (NM_DEVICE_GET_CLASS (self)->spec_match_list)
+ return NM_DEVICE_GET_CLASS (self)->spec_match_list (self, specs);
+
+ return FALSE;
+}
+