From 4980a6882b4fb4505c5cd2b844eea36742be17e8 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 2 May 2012 10:28:16 -0500 Subject: [PATCH] core: pass connection provider to devices --- src/nm-device-private.h | 2 ++ src/nm-device.c | 27 +++++++++++++++++++++++++++ src/nm-device.h | 3 +++ src/nm-manager.c | 2 ++ 4 files changed, 34 insertions(+) diff --git a/src/nm-device-private.h b/src/nm-device-private.h index 9b78db121f..824beb5a7a 100644 --- a/src/nm-device-private.h +++ b/src/nm-device-private.h @@ -67,4 +67,6 @@ gboolean nm_device_dhcp4_renew (NMDevice *device, gboolean release); gboolean nm_device_match_ip_config (NMDevice *device, NMConnection *connection); +NMConnectionProvider *nm_device_get_connection_provider (NMDevice *device); + #endif /* NM_DEVICE_PRIVATE_H */ diff --git a/src/nm-device.c b/src/nm-device.c index d8ff6c6569..2f69be6a51 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -61,6 +61,7 @@ #include "nm-properties-changed-signal.h" #include "nm-enum-types.h" #include "nm-settings-connection.h" +#include "nm-connection-provider.h" static void impl_device_disconnect (NMDevice *device, DBusGMethodInvocation *context); @@ -226,6 +227,8 @@ typedef struct { /* master interface for bridge, bond, vlan, etc */ NMDevice * master; + + NMConnectionProvider *con_provider; } NMDevicePrivate; static void nm_device_take_down (NMDevice *dev, gboolean wait, NMDeviceStateReason reason); @@ -585,6 +588,30 @@ nm_device_get_type_desc (NMDevice *self) return NM_DEVICE_GET_PRIVATE (self)->type_desc; } +void +nm_device_set_connection_provider (NMDevice *device, + NMConnectionProvider *provider) +{ + NMDevicePrivate *priv; + + g_return_if_fail (device != NULL); + g_return_if_fail (provider != NULL); + g_return_if_fail (NM_IS_CONNECTION_PROVIDER (provider)); + + priv = NM_DEVICE_GET_PRIVATE (device); + g_return_if_fail (priv->con_provider == NULL); + + priv->con_provider = provider; +} + +NMConnectionProvider * +nm_device_get_connection_provider (NMDevice *device) +{ + g_return_val_if_fail (device != NULL, NULL); + + return NM_DEVICE_GET_PRIVATE (device)->con_provider; +} + /** * nm_device_enslave_slave: * @dev: the master device diff --git a/src/nm-device.h b/src/nm-device.h index bf76ecb58c..f4495b9784 100644 --- a/src/nm-device.h +++ b/src/nm-device.h @@ -34,6 +34,7 @@ #include "nm-dhcp6-config.h" #include "nm-connection.h" #include "nm-rfkill.h" +#include "settings/nm-connection-provider.h" /* Properties */ #define NM_DEVICE_UDI "udi" @@ -263,6 +264,8 @@ gboolean nm_device_activate (NMDevice *device, NMActRequest *req, GError **error gboolean nm_device_disconnect (NMDevice *device, GError **error); +void nm_device_set_connection_provider (NMDevice *device, NMConnectionProvider *provider); + G_END_DECLS #endif /* NM_DEVICE_H */ diff --git a/src/nm-manager.c b/src/nm-manager.c index 7c812bdc02..e887e57030 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -1678,6 +1678,8 @@ add_device (NMManager *self, NMDevice *device) return; } + nm_device_set_connection_provider (device, NM_CONNECTION_PROVIDER (priv->settings)); + priv->devices = g_slist_append (priv->devices, device); g_signal_connect (device, "state-changed",