core: move nm_device_interface_disconnect() to nm-device.c

This commit is contained in:
Dan Williams 2011-11-17 23:44:17 -06:00
parent 827d9defb9
commit dcce47bea6
5 changed files with 22 additions and 42 deletions

View file

@ -315,35 +315,6 @@ nm_device_interface_activate (NMDeviceInterface *device,
return success;
}
gboolean
nm_device_interface_disconnect (NMDeviceInterface *device,
GError **error)
{
NMDeviceState state;
gboolean success = FALSE;
g_return_val_if_fail (NM_IS_DEVICE_INTERFACE (device), FALSE);
g_object_get (G_OBJECT (device), "state", &state, NULL);
switch (state) {
case NM_DEVICE_STATE_UNKNOWN:
case NM_DEVICE_STATE_UNMANAGED:
case NM_DEVICE_STATE_UNAVAILABLE:
case NM_DEVICE_STATE_DISCONNECTED:
g_set_error_literal (error,
NM_DEVICE_INTERFACE_ERROR,
NM_DEVICE_INTERFACE_ERROR_NOT_ACTIVE,
"Cannot disconnect an inactive device.");
break;
default:
success = NM_DEVICE_INTERFACE_GET_INTERFACE (device)->disconnect (device, error);
break;
}
return success;
}
static void
impl_device_disconnect (NMDeviceInterface *device,
DBusGMethodInvocation *context)

View file

@ -98,7 +98,6 @@ struct _NMDeviceInterface {
GError **error);
void (*deactivate) (NMDeviceInterface *device, NMDeviceStateReason reason);
gboolean (*disconnect) (NMDeviceInterface *device, GError **error);
/* Signals */
void (*state_changed) (NMDeviceInterface *device,
@ -110,8 +109,6 @@ struct _NMDeviceInterface {
GQuark nm_device_interface_error_quark (void);
GType nm_device_interface_error_get_type (void);
gboolean nm_device_interface_disconnect (NMDeviceInterface *device, GError **error);
GType nm_device_interface_get_type (void);
gboolean nm_device_interface_activate (NMDeviceInterface *device,

View file

@ -172,7 +172,6 @@ static gboolean nm_device_activate (NMDeviceInterface *device,
NMActRequest *req,
GError **error);
static void nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason);
static gboolean device_disconnect (NMDeviceInterface *device, GError **error);
static void nm_device_take_down (NMDevice *dev, gboolean wait, NMDeviceStateReason reason);
@ -201,7 +200,6 @@ device_interface_init (NMDeviceInterface *device_interface_class)
/* interface implementation */
device_interface_class->activate = nm_device_activate;
device_interface_class->deactivate = nm_device_deactivate;
device_interface_class->disconnect = device_disconnect;
}
@ -2982,14 +2980,27 @@ nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason)
nm_device_set_ip6_config (self, NULL, FALSE, &ignored);
}
static gboolean
device_disconnect (NMDeviceInterface *device,
GError **error)
gboolean
nm_device_disconnect (NMDevice *device, GError **error)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (NM_DEVICE (device));
NMDevicePrivate *priv;
g_return_val_if_fail (device != NULL, FALSE);
g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
priv = NM_DEVICE_GET_PRIVATE (device);
if (priv->state <= NM_DEVICE_STATE_DISCONNECTED) {
g_set_error_literal (error,
NM_DEVICE_INTERFACE_ERROR,
NM_DEVICE_INTERFACE_ERROR_NOT_ACTIVE,
"Cannot disconnect an inactive device.");
return FALSE;
}
priv->autoconnect_inhibit = TRUE;
nm_device_state_changed (NM_DEVICE (device), NM_DEVICE_STATE_DISCONNECTED, NM_DEVICE_STATE_REASON_USER_REQUESTED);
nm_device_state_changed (device,
NM_DEVICE_STATE_DISCONNECTED,
NM_DEVICE_STATE_REASON_USER_REQUESTED);
return TRUE;
}

View file

@ -188,7 +188,6 @@ void nm_device_set_managed (NMDevice *device,
void nm_device_clear_autoconnect_inhibit (NMDevice *device);
void nm_device_handle_autoip4_event (NMDevice *self,
const char *event,
const char *address);
@ -199,6 +198,8 @@ void nm_device_state_changed (NMDevice *device,
gboolean nm_device_get_firmware_missing (NMDevice *self);
gboolean nm_device_disconnect (NMDevice *device, GError **error);
G_END_DECLS
#endif /* NM_DEVICE_H */

View file

@ -1409,7 +1409,7 @@ disconnect_net_auth_done_cb (NMAuthChain *chain,
error = deactivate_disconnect_check_error (auth_error, result, "Disconnect");
if (!error) {
device = nm_auth_chain_get_data (chain, "device");
if (!nm_device_interface_disconnect (NM_DEVICE_INTERFACE (device), &error))
if (!nm_device_disconnect (device, &error))
g_assert (error);
}
@ -1461,7 +1461,7 @@ manager_device_disconnect_request (NMDevice *device,
/* Yay for root */
if (0 == sender_uid) {
if (!nm_device_interface_disconnect (NM_DEVICE_INTERFACE (device), &error)) {
if (!nm_device_disconnect (device, &error)) {
dbus_g_method_return_error (context, error);
g_clear_error (&error);
} else