diff options
author | Thomas Haller <thaller@redhat.com> | 2016-09-29 13:49:01 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-10-04 09:50:56 +0200 |
commit | 4d37f7a1e94f469fb1e3eacde4d2424ebf6ccf0b (patch) | |
tree | 304dd68a6f6bab8fb3ba9cb63d76faf69a530650 | |
parent | 92e9822e1be23b0a1964b8b16a1cd2c0c51ee59b (diff) |
core: refactor private data in "src"
- use _NM_GET_PRIVATE() and _NM_GET_PRIVATE_PTR() everywhere.
- reorder statements, to have GObject related functions (init, dispose,
constructed) at the bottom of each file and in a consistent order w.r.t.
each other.
- unify whitespaces in signal and properties declarations.
- use NM_GOBJECT_PROPERTIES_DEFINE() and _notify()
- drop unused signal slots in class structures
- drop unused header files for device factories
145 files changed, 4506 insertions, 4575 deletions
diff --git a/src/devices/adsl/nm-atm-manager.c b/src/devices/adsl/nm-atm-manager.c index ab0f870218..5decea5200 100644 --- a/src/devices/adsl/nm-atm-manager.c +++ b/src/devices/adsl/nm-atm-manager.c @@ -24,26 +24,48 @@ #include <gudev/gudev.h> #include <gmodule.h> -#include "nm-atm-manager.h" #include "nm-setting-adsl.h" #include "nm-device-adsl.h" #include "nm-device-factory.h" #include "nm-platform.h" +/*****************************************************************************/ + +#define NM_TYPE_ATM_MANAGER (nm_atm_manager_get_type ()) +#define NM_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_ATM_MANAGER, NMAtmManager)) +#define NM_ATM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_ATM_MANAGER, NMAtmManagerClass)) +#define NM_IS_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_ATM_MANAGER)) +#define NM_IS_ATM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_ATM_MANAGER)) +#define NM_ATM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_ATM_MANAGER, NMAtmManagerClass)) + +typedef struct _NMAtmManager NMAtmManager; +typedef struct _NMAtmManagerClass NMAtmManagerClass; + +static GType nm_atm_manager_get_type (void); + +/*****************************************************************************/ + typedef struct { GUdevClient *client; GSList *devices; } NMAtmManagerPrivate; -#define NM_ATM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ATM_MANAGER, NMAtmManagerPrivate)) +struct _NMAtmManager { + GObject parent; + NMAtmManagerPrivate _priv; +}; -static GType nm_atm_manager_get_type (void); +struct _NMAtmManagerClass { + GObjectClass parent; +}; static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface); G_DEFINE_TYPE_EXTENDED (NMAtmManager, nm_atm_manager, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_FACTORY, device_factory_interface_init)) +#define NM_ATM_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMAtmManager, NM_IS_ATM_MANAGER) + /*****************************************************************************/ G_MODULE_EXPORT NMDeviceFactory * @@ -226,32 +248,16 @@ NM_DEVICE_FACTORY_DECLARE_TYPES ( /*****************************************************************************/ static void -nm_atm_manager_init (NMAtmManager *self) -{ - NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self); - const char *subsys[] = { "atm", NULL }; - - priv->client = g_udev_client_new (subsys); - g_signal_connect (priv->client, "uevent", G_CALLBACK (handle_uevent), self); -} - -static void -device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) -{ - factory_iface->get_supported_types = get_supported_types; - factory_iface->start = start; -} - -static void dispose (GObject *object) { NMAtmManager *self = NM_ATM_MANAGER (object); NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self); GSList *iter; - if (priv->client) + if (priv->client) { g_signal_handlers_disconnect_by_func (priv->client, handle_uevent, self); - g_clear_object (&priv->client); + g_clear_object (&priv->client); + } for (iter = priv->devices; iter; iter = iter->next) g_object_weak_unref (G_OBJECT (iter->data), device_destroyed, self); @@ -265,8 +271,24 @@ nm_atm_manager_class_init (NMAtmManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMAtmManagerPrivate)); - - /* virtual methods */ object_class->dispose = dispose; } + +/*****************************************************************************/ + +static void +nm_atm_manager_init (NMAtmManager *self) +{ + NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self); + const char *subsys[] = { "atm", NULL }; + + priv->client = g_udev_client_new (subsys); + g_signal_connect (priv->client, "uevent", G_CALLBACK (handle_uevent), self); +} + +static void +device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) +{ + factory_iface->get_supported_types = get_supported_types; + factory_iface->start = start; +} diff --git a/src/devices/adsl/nm-atm-manager.h b/src/devices/adsl/nm-atm-manager.h deleted file mode 100644 index bcbc6c77bc..0000000000 --- a/src/devices/adsl/nm-atm-manager.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2007 - 2008 Novell, Inc. - * Copyright (C) 2007 - 2014 Red Hat, Inc. - */ - -#ifndef __NETWORKMANAGER_ATM_MANAGER_H__ -#define __NETWORKMANAGER_ATM_MANAGER_H__ - -#define NM_TYPE_ATM_MANAGER (nm_atm_manager_get_type ()) -#define NM_ATM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_ATM_MANAGER, NMAtmManager)) - -typedef struct { - GObject parent; -} NMAtmManager; - -typedef struct { - GObjectClass parent; -} NMAtmManagerClass; - -#endif /* __NETWORKMANAGER_ATM_MANAGER_H__ */ - diff --git a/src/devices/adsl/nm-device-adsl.c b/src/devices/adsl/nm-device-adsl.c index b69528d097..a5b6641abf 100644 --- a/src/devices/adsl/nm-device-adsl.c +++ b/src/devices/adsl/nm-device-adsl.c @@ -20,24 +20,23 @@ #include "nm-default.h" +#include "nm-device-adsl.h" + #include <sys/socket.h> #include <linux/atmdev.h> #include <linux/atmbr2684.h> - #include <errno.h> #include <sys/ioctl.h> #include <sys/types.h> #include <unistd.h> - #include <stdlib.h> #include <string.h> -#include "nm-device-adsl.h" #include "nm-device-private.h" #include "nm-enum-types.h" #include "nm-platform.h" - #include "ppp-manager/nm-ppp-manager.h" +#include "ppp-manager/nm-ppp-status.h" #include "nm-setting-adsl.h" #include "nm-utils.h" @@ -46,18 +45,11 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF (NMDeviceAdsl); -G_DEFINE_TYPE (NMDeviceAdsl, nm_device_adsl, NM_TYPE_DEVICE) - -#define NM_DEVICE_ADSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_ADSL, NMDeviceAdslPrivate)) +/*****************************************************************************/ -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( PROP_ATM_INDEX, - - LAST_PROP -}; - -/*****************************************************************************/ +); typedef struct { guint carrier_poll_id; @@ -74,6 +66,19 @@ typedef struct { guint nas_update_count; } NMDeviceAdslPrivate; +struct _NMDeviceAdsl { + NMDevice parent; + NMDeviceAdslPrivate _priv; +}; + +struct _NMDeviceAdslClass { + NMDeviceClass parent; +}; + +G_DEFINE_TYPE (NMDeviceAdsl, nm_device_adsl, NM_TYPE_DEVICE) + +#define NM_DEVICE_ADSL_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceAdsl, NM_IS_DEVICE_ADSL) + /*****************************************************************************/ static NMDeviceCapabilities @@ -547,57 +552,13 @@ carrier_update_cb (gpointer user_data) /*****************************************************************************/ -NMDevice * -nm_device_adsl_new (const char *udi, - const char *iface, - const char *driver, - int atm_index) -{ - g_return_val_if_fail (udi != NULL, NULL); - g_return_val_if_fail (atm_index >= 0, NULL); - - return (NMDevice *) g_object_new (NM_TYPE_DEVICE_ADSL, - NM_DEVICE_UDI, udi, - NM_DEVICE_IFACE, iface, - NM_DEVICE_DRIVER, driver, - NM_DEVICE_ADSL_ATM_INDEX, atm_index, - NM_DEVICE_TYPE_DESC, "ADSL", - NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_ADSL, - NULL); -} - -static void -constructed (GObject *object) -{ - NMDeviceAdsl *self = NM_DEVICE_ADSL (object); - NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self); - - G_OBJECT_CLASS (nm_device_adsl_parent_class)->constructed (object); - - priv->carrier_poll_id = g_timeout_add_seconds (5, carrier_update_cb, self); - - _LOGD (LOGD_ADSL, "ATM device index %d", priv->atm_index); - - g_return_if_fail (priv->atm_index >= 0); -} - -static void -dispose (GObject *object) -{ - adsl_cleanup (NM_DEVICE_ADSL (object)); - - nm_clear_g_source (&NM_DEVICE_ADSL_GET_PRIVATE (object)->carrier_poll_id); - - G_OBJECT_CLASS (nm_device_adsl_parent_class)->dispose (object); -} - static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_ATM_INDEX: - g_value_set_int (value, NM_DEVICE_ADSL_GET_PRIVATE (object)->atm_index); + g_value_set_int (value, NM_DEVICE_ADSL_GET_PRIVATE ((NMDeviceAdsl *) object)->atm_index); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -612,7 +573,7 @@ set_property (GObject *object, guint prop_id, switch (prop_id) { case PROP_ATM_INDEX: /* construct only */ - NM_DEVICE_ADSL_GET_PRIVATE (object)->atm_index = g_value_get_int (value); + NM_DEVICE_ADSL_GET_PRIVATE ((NMDeviceAdsl *) object)->atm_index = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -620,19 +581,63 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + static void nm_device_adsl_init (NMDeviceAdsl *self) { } static void +constructed (GObject *object) +{ + NMDeviceAdsl *self = NM_DEVICE_ADSL (object); + NMDeviceAdslPrivate *priv = NM_DEVICE_ADSL_GET_PRIVATE (self); + + G_OBJECT_CLASS (nm_device_adsl_parent_class)->constructed (object); + + priv->carrier_poll_id = g_timeout_add_seconds (5, carrier_update_cb, self); + + _LOGD (LOGD_ADSL, "ATM device index %d", priv->atm_index); + + g_return_if_fail (priv->atm_index >= 0); +} + +NMDevice * +nm_device_adsl_new (const char *udi, + const char *iface, + const char *driver, + int atm_index) +{ + g_return_val_if_fail (udi != NULL, NULL); + g_return_val_if_fail (atm_index >= 0, NULL); + + return (NMDevice *) g_object_new (NM_TYPE_DEVICE_ADSL, + NM_DEVICE_UDI, udi, + NM_DEVICE_IFACE, iface, + NM_DEVICE_DRIVER, driver, + NM_DEVICE_ADSL_ATM_INDEX, atm_index, + NM_DEVICE_TYPE_DESC, "ADSL", + NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_ADSL, + NULL); +} + +static void +dispose (GObject *object) +{ + adsl_cleanup (NM_DEVICE_ADSL (object)); + + nm_clear_g_source (&NM_DEVICE_ADSL_GET_PRIVATE ((NMDeviceAdsl *) object)->carrier_poll_id); + + G_OBJECT_CLASS (nm_device_adsl_parent_class)->dispose (object); +} + +static void nm_device_adsl_class_init (NMDeviceAdslClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceAdslPrivate)); - object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; @@ -647,13 +652,13 @@ nm_device_adsl_class_init (NMDeviceAdslClass *klass) parent_class->act_stage3_ip4_config_start = act_stage3_ip4_config_start; parent_class->deactivate = deactivate; - /* properties */ - g_object_class_install_property - (object_class, PROP_ATM_INDEX, - g_param_spec_int (NM_DEVICE_ADSL_ATM_INDEX, "", "", - -1, G_MAXINT, -1, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_ATM_INDEX] = + g_param_spec_int (NM_DEVICE_ADSL_ATM_INDEX, "", "", + -1, G_MAXINT, -1, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_ADSL_SKELETON, diff --git a/src/devices/adsl/nm-device-adsl.h b/src/devices/adsl/nm-device-adsl.h index cfde2b3529..ff8d1f999d 100644 --- a/src/devices/adsl/nm-device-adsl.h +++ b/src/devices/adsl/nm-device-adsl.h @@ -22,7 +22,6 @@ #ifndef __NETWORKMANAGER_DEVICE_ADSL_H__ #define __NETWORKMANAGER_DEVICE_ADSL_H__ -// Parent class #include "nm-device.h" #define NM_TYPE_DEVICE_ADSL (nm_device_adsl_get_type ()) @@ -34,13 +33,8 @@ #define NM_DEVICE_ADSL_ATM_INDEX "atm-index" -typedef struct { - NMDevice parent; -} NMDeviceAdsl; - -typedef struct { - NMDeviceClass parent; -} NMDeviceAdslClass; +typedef struct _NMDeviceAdsl NMDeviceAdsl; +typedef struct _NMDeviceAdslClass NMDeviceAdslClass; GType nm_device_adsl_get_type (void); diff --git a/src/devices/bluetooth/Makefile.am b/src/devices/bluetooth/Makefile.am index 8997bf7861..7ac7bff0ec 100644 --- a/src/devices/bluetooth/Makefile.am +++ b/src/devices/bluetooth/Makefile.am @@ -33,7 +33,6 @@ SYMBOL_VIS_FILE=$(srcdir)/exports.ver libnm_device_plugin_bluetooth_la_SOURCES = \ nm-bluez-manager.c \ - nm-bluez-manager.h \ nm-bluez-common.h \ nm-bluez-device.c \ nm-bluez-device.h \ diff --git a/src/devices/bluetooth/nm-bluez-common.h b/src/devices/bluetooth/nm-bluez-common.h index 67810b94ce..6e97c3f512 100644 --- a/src/devices/bluetooth/nm-bluez-common.h +++ b/src/devices/bluetooth/nm-bluez-common.h @@ -39,5 +39,6 @@ #define BLUEZ4_SERIAL_INTERFACE "org.bluez.Serial" #define BLUEZ4_NETWORK_INTERFACE "org.bluez.Network" -#endif /* NM_BLUEZ_COMMON_H */ +#define NM_BLUEZ_MANAGER_BDADDR_ADDED "bdaddr-added" +#endif /* NM_BLUEZ_COMMON_H */ diff --git a/src/devices/bluetooth/nm-bluez-device.c b/src/devices/bluetooth/nm-bluez-device.c index 0e406bcc38..6e705f93da 100644 --- a/src/devices/bluetooth/nm-bluez-device.c +++ b/src/devices/bluetooth/nm-bluez-device.c @@ -21,13 +21,13 @@ #include "nm-default.h" +#include "nm-bluez-device.h" + #include <string.h> #include "nm-core-internal.h" - #include "nm-bt-error.h" #include "nm-bluez-common.h" -#include "nm-bluez-device.h" #include "nm-settings.h" #include "nm-settings-connection.h" #include "NetworkManagerUtils.h" @@ -36,9 +36,31 @@ #include "nm-bluez5-dun.h" #endif -G_DEFINE_TYPE (NMBluezDevice, nm_bluez_device, G_TYPE_OBJECT) +/*****************************************************************************/ + +#define VARIANT_IS_OF_TYPE_BOOLEAN(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_BOOLEAN) )) +#define VARIANT_IS_OF_TYPE_STRING(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_STRING) )) +#define VARIANT_IS_OF_TYPE_OBJECT_PATH(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_OBJECT_PATH) )) +#define VARIANT_IS_OF_TYPE_STRING_ARRAY(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_STRING_ARRAY) )) + +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE (NMBluezDevice, + PROP_PATH, + PROP_ADDRESS, + PROP_NAME, + PROP_CAPABILITIES, + PROP_USABLE, + PROP_CONNECTED, +); + +enum { + INITIALIZED, + REMOVED, + LAST_SIGNAL +}; -#define NM_BLUEZ_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_BLUEZ_DEVICE, NMBluezDevicePrivate)) +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { char *path; @@ -75,38 +97,25 @@ typedef struct { gboolean pan_connection_no_autocreate; } NMBluezDevicePrivate; - -enum { - PROP_0, - PROP_PATH, - PROP_ADDRESS, - PROP_NAME, - PROP_CAPABILITIES, - PROP_USABLE, - PROP_CONNECTED, - - LAST_PROP +struct _NMBluezDevice { + GObject parent; + NMBluezDevicePrivate _priv; }; -/* Signals */ -enum { - INITIALIZED, - REMOVED, - LAST_SIGNAL +struct _NMBluezDeviceClass { + GObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; +G_DEFINE_TYPE (NMBluezDevice, nm_bluez_device, G_TYPE_OBJECT) + +#define NM_BLUEZ_DEVICE_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBluezDevice, NM_IS_BLUEZ_DEVICE) + +/*****************************************************************************/ static void cp_connection_added (NMSettings *settings, NMConnection *connection, NMBluezDevice *self); static gboolean connection_compatible (NMBluezDevice *self, NMConnection *connection); - -#define VARIANT_IS_OF_TYPE_BOOLEAN(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_BOOLEAN) )) -#define VARIANT_IS_OF_TYPE_STRING(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_STRING) )) -#define VARIANT_IS_OF_TYPE_OBJECT_PATH(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_OBJECT_PATH) )) -#define VARIANT_IS_OF_TYPE_STRING_ARRAY(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_STRING_ARRAY) )) - /*****************************************************************************/ const char * @@ -292,7 +301,7 @@ check_emit_usable (NMBluezDevice *self) END: if (new_usable != priv->usable) { priv->usable = new_usable; - g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_USABLE); + _notify (self, PROP_USABLE); } return G_SOURCE_REMOVE; @@ -424,7 +433,7 @@ bluez_disconnect_cb (GDBusConnection *dbus_connection, GAsyncResult *res, gpointer user_data) { - NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (user_data); + NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE ((NMBluezDevice *) user_data); GError *error = NULL; GVariant *variant; @@ -628,7 +637,7 @@ nm_bluez_device_connect_finish (NMBluezDevice *self, device = (const char *) g_simple_async_result_get_op_res_gpointer (simple); if (device && priv->bluez_version == 5) { priv->connected = TRUE; - g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_CONNECTED); + _notify (self, PROP_CONNECTED); } return device; @@ -695,7 +704,7 @@ _set_property_capabilities (NMBluezDevice *self, const char **uuids) ((uint_val & NM_BT_CAPABILITY_DUN) && (uint_val &NM_BT_CAPABILITY_NAP)) ? " | " : "", uint_val & NM_BT_CAPABILITY_DUN ? "DUN" : ""); priv->capabilities = uint_val; - g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_CAPABILITIES); + _notify (self, PROP_CAPABILITIES); } } @@ -727,7 +736,7 @@ _set_property_address (NMBluezDevice *self, const char *addr) } priv->address = g_strdup (addr); - g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_ADDRESS); + _notify (self, PROP_ADDRESS); } static void @@ -749,7 +758,7 @@ _take_variant_property_name (NMBluezDevice *self, GVariant *v) if (g_strcmp0 (priv->name, str)) { g_free (priv->name); priv->name = g_strdup (str); - g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_NAME); + _notify (self, PROP_NAME); } } if (v) @@ -779,7 +788,7 @@ _take_variant_property_connected (NMBluezDevice *self, GVariant *v) if (priv->connected != connected) { priv->connected = connected; - g_object_notify (G_OBJECT (self), NM_BLUEZ_DEVICE_CONNECTED); + _notify (self, PROP_CONNECTED); } } if (v) @@ -1029,6 +1038,61 @@ on_bus_acquired (GObject *object, GAsyncResult *res, NMBluezDevice *self) /*****************************************************************************/ +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE ((NMBluezDevice *) object); + + switch (prop_id) { + case PROP_PATH: + g_value_set_string (value, priv->path); + break; + case PROP_ADDRESS: + g_value_set_string (value, priv->address); + break; + case PROP_NAME: + g_value_set_string (value, priv->name); + break; + case PROP_CAPABILITIES: + g_value_set_uint (value, priv->capabilities); + break; + case PROP_USABLE: + g_value_set_boolean (value, priv->usable); + break; + case PROP_CONNECTED: + g_value_set_boolean (value, priv->connected); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE ((NMBluezDevice *) object); + + switch (prop_id) { + case PROP_PATH: + /* construct only */ + priv->path = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + +static void +nm_bluez_device_init (NMBluezDevice *self) +{ +} + NMBluezDevice * nm_bluez_device_new (const char *path, const char *adapter_address, @@ -1090,11 +1154,6 @@ nm_bluez_device_new (const char *path, } static void -nm_bluez_device_init (NMBluezDevice *self) -{ -} - -static void dispose (GObject *object) { NMBluezDevice *self = NM_BLUEZ_DEVICE (object); @@ -1146,7 +1205,7 @@ dispose (GObject *object) static void finalize (GObject *object) { - NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (object); + NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE ((NMBluezDevice *) object); nm_log_dbg (LOGD_BT, "bluez[%s]: finalize NMBluezDevice", priv->path); @@ -1164,121 +1223,64 @@ finalize (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_PATH: - g_value_set_string (value, priv->path); - break; - case PROP_ADDRESS: - g_value_set_string (value, priv->address); - break; - case PROP_NAME: - g_value_set_string (value, priv->name); - break; - case PROP_CAPABILITIES: - g_value_set_uint (value, priv->capabilities); - break; - case PROP_USABLE: - g_value_set_boolean (value, priv->usable); - break; - case PROP_CONNECTED: - g_value_set_boolean (value, priv->connected); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMBluezDevicePrivate *priv = NM_BLUEZ_DEVICE_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_PATH: - /* construct only */ - priv->path = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void nm_bluez_device_class_init (NMBluezDeviceClass *config_class) { GObjectClass *object_class = G_OBJECT_CLASS (config_class); - g_type_class_add_private (config_class, sizeof (NMBluezDevicePrivate)); - - /* virtual methods */ object_class->get_property = get_property; object_class->set_property = set_property; object_class->dispose = dispose; object_class->finalize = finalize; - /* Properties */ - g_object_class_install_property - (object_class, PROP_PATH, - g_param_spec_string (NM_BLUEZ_DEVICE_PATH, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ADDRESS, - g_param_spec_string (NM_BLUEZ_DEVICE_ADDRESS, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_NAME, - g_param_spec_string (NM_BLUEZ_DEVICE_NAME, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CAPABILITIES, - g_param_spec_uint (NM_BLUEZ_DEVICE_CAPABILITIES, "", "", - 0, G_MAXUINT, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_USABLE, - g_param_spec_boolean (NM_BLUEZ_DEVICE_USABLE, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CONNECTED, - g_param_spec_boolean (NM_BLUEZ_DEVICE_CONNECTED, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - /* Signals */ + obj_properties[PROP_PATH] = + g_param_spec_string (NM_BLUEZ_DEVICE_PATH, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ADDRESS] = + g_param_spec_string (NM_BLUEZ_DEVICE_ADDRESS, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_NAME] = + g_param_spec_string (NM_BLUEZ_DEVICE_NAME, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CAPABILITIES] = + g_param_spec_uint (NM_BLUEZ_DEVICE_CAPABILITIES, "", "", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_USABLE] = + g_param_spec_boolean (NM_BLUEZ_DEVICE_USABLE, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CONNECTED] = + g_param_spec_boolean (NM_BLUEZ_DEVICE_CONNECTED, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); + signals[INITIALIZED] = g_signal_new ("initialized", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMBluezDeviceClass, initialized), + 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); signals[REMOVED] = g_signal_new (NM_BLUEZ_DEVICE_REMOVED, G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMBluezDeviceClass, removed), + 0, NULL, NULL, NULL, G_TYPE_NONE, 0); } diff --git a/src/devices/bluetooth/nm-bluez-device.h b/src/devices/bluetooth/nm-bluez-device.h index 66a349e0db..e56d5d2429 100644 --- a/src/devices/bluetooth/nm-bluez-device.h +++ b/src/devices/bluetooth/nm-bluez-device.h @@ -41,18 +41,8 @@ /* Signals */ #define NM_BLUEZ_DEVICE_REMOVED "removed" -typedef struct { - GObject parent; -} NMBluezDevice; - -typedef struct { - GObjectClass parent; - - /* virtual functions */ - void (*initialized) (NMBluezDevice *self, gboolean success); - - void (*removed) (NMBluezDevice *self); -} NMBluezDeviceClass; +typedef struct _NMBluezDevice NMBluezDevice; +typedef struct _NMBluezDeviceClass NMBluezDeviceClass; GType nm_bluez_device_get_type (void); diff --git a/src/devices/bluetooth/nm-bluez-manager.c b/src/devices/bluetooth/nm-bluez-manager.c index 78d907157c..bc262eebdd 100644 --- a/src/devices/bluetooth/nm-bluez-manager.c +++ b/src/devices/bluetooth/nm-bluez-manager.c @@ -20,8 +20,6 @@ #include "nm-default.h" -#include "nm-bluez-manager.h" - #include <signal.h> #include <string.h> #include <stdlib.h> @@ -39,15 +37,21 @@ #include "nm-platform.h" #include "nm-dbus-compat.h" -#define _NMLOG_DOMAIN LOGD_BT -#define _NMLOG_PREFIX_NAME "bluez" -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), _NMLOG_DOMAIN, \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END +/*****************************************************************************/ + +#define NM_TYPE_BLUEZ_MANAGER (nm_bluez_manager_get_type ()) +#define NM_BLUEZ_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_BLUEZ_MANAGER, NMBluezManager)) +#define NM_BLUEZ_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_BLUEZ_MANAGER, NMBluezManagerClass)) +#define NM_IS_BLUEZ_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_BLUEZ_MANAGER)) +#define NM_IS_BLUEZ_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_BLUEZ_MANAGER)) +#define NM_BLUEZ_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_BLUEZ_MANAGER, NMBluezManagerClass)) + +typedef struct _NMBluezManager NMBluezManager; +typedef struct _NMBluezManagerClass NMBluezManagerClass; + +static GType nm_bluez_manager_get_type (void); + +/*****************************************************************************/ typedef struct { int bluez_version; @@ -62,24 +66,37 @@ typedef struct { GCancellable *async_cancellable; } NMBluezManagerPrivate; -#define NM_BLUEZ_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_BLUEZ_MANAGER, NMBluezManagerPrivate)) +struct _NMBluezManager { + GObject parent; + NMBluezManagerPrivate _priv; +}; -static GType nm_bluez_manager_get_type (void); +struct _NMBluezManagerClass { + GObjectClass parent; +}; static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface); G_DEFINE_TYPE_EXTENDED (NMBluezManager, nm_bluez_manager, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_FACTORY, device_factory_interface_init)) -static void check_bluez_and_try_setup (NMBluezManager *self); +#define NM_BLUEZ_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBluezManager, NM_IS_BLUEZ_MANAGER) /*****************************************************************************/ -G_MODULE_EXPORT NMDeviceFactory * -nm_device_factory_create (GError **error) -{ - return (NMDeviceFactory *) g_object_new (NM_TYPE_BLUEZ_MANAGER, NULL); -} +#define _NMLOG_DOMAIN LOGD_BT +#define _NMLOG_PREFIX_NAME "bluez" +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), _NMLOG_DOMAIN, \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ + +static void check_bluez_and_try_setup (NMBluezManager *self); /*****************************************************************************/ @@ -382,6 +399,18 @@ start (NMDeviceFactory *factory) check_bluez_and_try_setup (NM_BLUEZ_MANAGER (factory)); } +static NMDevice * +create_device (NMDeviceFactory *factory, + const char *iface, + const NMPlatformLink *plink, + NMConnection *connection, + gboolean *out_ignore) +{ + g_warn_if_fail (plink->type == NM_LINK_TYPE_BNEP); + *out_ignore = TRUE; + return NULL; +} + NM_DEVICE_FACTORY_DECLARE_TYPES ( NM_DEVICE_FACTORY_DECLARE_LINK_TYPES (NM_LINK_TYPE_BNEP) NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES (NM_SETTING_BLUETOOTH_SETTING_NAME) @@ -390,6 +419,14 @@ NM_DEVICE_FACTORY_DECLARE_TYPES ( /*****************************************************************************/ static void +nm_bluez_manager_init (NMBluezManager *self) +{ + NMBluezManagerPrivate *priv = NM_BLUEZ_MANAGER_GET_PRIVATE (self); + + priv->settings = g_object_ref (NM_SETTINGS_GET); +} + +static void dispose (GObject *object) { NMBluezManager *self = NM_BLUEZ_MANAGER (object); @@ -414,23 +451,11 @@ dispose (GObject *object) } static void -nm_bluez_manager_init (NMBluezManager *self) +nm_bluez_manager_class_init (NMBluezManagerClass *klass) { - NMBluezManagerPrivate *priv = NM_BLUEZ_MANAGER_GET_PRIVATE (self); - - priv->settings = g_object_ref (NM_SETTINGS_GET); -} + GObjectClass *object_class = G_OBJECT_CLASS (klass); -static NMDevice * -create_device (NMDeviceFactory *factory, - const char *iface, - const NMPlatformLink *plink, - NMConnection *connection, - gboolean *out_ignore) -{ - g_warn_if_fail (plink->type == NM_LINK_TYPE_BNEP); - *out_ignore = TRUE; - return NULL; + object_class->dispose = dispose; } static void @@ -441,14 +466,10 @@ device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) factory_iface->start = start; } -static void -nm_bluez_manager_class_init (NMBluezManagerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - g_type_class_add_private (klass, sizeof (NMBluezManagerPrivate)); +/*****************************************************************************/ - /* virtual methods */ - object_class->dispose = dispose; +G_MODULE_EXPORT NMDeviceFactory * +nm_device_factory_create (GError **error) +{ + return (NMDeviceFactory *) g_object_new (NM_TYPE_BLUEZ_MANAGER, NULL); } - diff --git a/src/devices/bluetooth/nm-bluez-manager.h b/src/devices/bluetooth/nm-bluez-manager.h deleted file mode 100644 index d23b33a7d8..0000000000 --- a/src/devices/bluetooth/nm-bluez-manager.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2007 - 2008 Novell, Inc. - * Copyright (C) 2007 - 2014 Red Hat, Inc. - */ - -#ifndef __NETWORKMANAGER_BLUEZ_MANAGER_H__ -#define __NETWORKMANAGER_BLUEZ_MANAGER_H__ - -#define NM_TYPE_BLUEZ_MANAGER (nm_bluez_manager_get_type ()) -#define NM_BLUEZ_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_BLUEZ_MANAGER, NMBluezManager)) - -#define NM_BLUEZ_MANAGER_BDADDR_ADDED "bdaddr-added" - -typedef struct { - GObject parent; -} NMBluezManager; - -typedef struct { - GObjectClass parent; -} NMBluezManagerClass; - -#endif /* __NETWORKMANAGER_BLUEZ_MANAGER_H__ */ - diff --git a/src/devices/bluetooth/nm-bluez4-adapter.c b/src/devices/bluetooth/nm-bluez4-adapter.c index 17feae1b1c..dd684f29c2 100644 --- a/src/devices/bluetooth/nm-bluez4-adapter.c +++ b/src/devices/bluetooth/nm-bluez4-adapter.c @@ -30,9 +30,21 @@ #include "nm-core-internal.h" #include "nm-settings.h" -G_DEFINE_TYPE (NMBluez4Adapter, nm_bluez4_adapter, G_TYPE_OBJECT) +/*****************************************************************************/ -#define NM_BLUEZ4_ADAPTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_BLUEZ4_ADAPTER, NMBluez4AdapterPrivate)) +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_PATH, + PROP_ADDRESS, +); + +enum { + INITIALIZED, + DEVICE_ADDED, + DEVICE_REMOVED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { char *path; @@ -46,26 +58,25 @@ typedef struct { NMSettings *settings; } NMBluez4AdapterPrivate; - -enum { - PROP_0, - PROP_PATH, - PROP_ADDRESS, - - LAST_PROP +struct _NMBluez4Adapter { + GObject parent; + NMBluez4AdapterPrivate _priv; }; -/* Signals */ -enum { - INITIALIZED, - DEVICE_ADDED, - DEVICE_REMOVED, - LAST_SIGNAL +struct _NMBluez4AdapterClass { + GObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; + +G_DEFINE_TYPE (NMBluez4Adapter, nm_bluez4_adapter, G_TYPE_OBJECT) + +#define NM_BLUEZ4_ADAPTER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBluez4Adapter, NM_IS_BLUEZ4_ADAPTER) + +/*****************************************************************************/ static void device_do_remove (NMBluez4Adapter *self, NMBluezDevice *device); +/*****************************************************************************/ + const char * nm_bluez4_adapter_get_path (NMBluez4Adapter *self) { @@ -235,6 +246,61 @@ query_properties (NMBluez4Adapter *self) /*****************************************************************************/ +static gboolean +_find_all (gpointer key, gpointer value, gpointer user_data) +{ + return TRUE; +} + +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE ((NMBluez4Adapter *) object); + + switch (prop_id) { + case PROP_PATH: + g_value_set_string (value, priv->path); + break; + case PROP_ADDRESS: + g_value_set_string (value, priv->address); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE ((NMBluez4Adapter *) object); + + switch (prop_id) { + case PROP_PATH: + /* construct only */ + priv->path = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + +static void +nm_bluez4_adapter_init (NMBluez4Adapter *self) +{ + NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE (self); + + priv->devices = g_hash_table_new_full (g_str_hash, g_str_equal, + NULL, NULL); +} + NMBluez4Adapter * nm_bluez4_adapter_new (const char *path, NMSettings *settings) { @@ -267,21 +333,6 @@ nm_bluez4_adapter_new (const char *path, NMSettings *settings) } static void -nm_bluez4_adapter_init (NMBluez4Adapter *self) -{ - NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE (self); - - priv->devices = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, NULL); -} - -static gboolean -_find_all (gpointer key, gpointer value, gpointer user_data) -{ - return TRUE; -} - -static void dispose (GObject *object) { NMBluez4Adapter *self = NM_BLUEZ4_ADAPTER (object); @@ -297,7 +348,7 @@ dispose (GObject *object) static void finalize (GObject *object) { - NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE (object); + NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE ((NMBluez4Adapter *) object); g_hash_table_destroy (priv->devices); g_free (priv->address); @@ -310,74 +361,33 @@ finalize (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_PATH: - g_value_set_string (value, priv->path); - break; - case PROP_ADDRESS: - g_value_set_string (value, priv->address); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMBluez4AdapterPrivate *priv = NM_BLUEZ4_ADAPTER_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_PATH: - /* construct only */ - priv->path = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void nm_bluez4_adapter_class_init (NMBluez4AdapterClass *config_class) { GObjectClass *object_class = G_OBJECT_CLASS (config_class); - g_type_class_add_private (config_class, sizeof (NMBluez4AdapterPrivate)); - - /* virtual methods */ object_class->get_property = get_property; object_class->set_property = set_property; object_class->dispose = dispose; object_class->finalize = finalize; - /* Properties */ - g_object_class_install_property - (object_class, PROP_PATH, - g_param_spec_string (NM_BLUEZ4_ADAPTER_PATH, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ADDRESS, - g_param_spec_string (NM_BLUEZ4_ADAPTER_ADDRESS, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - /* Signals */ + obj_properties[PROP_PATH] = + g_param_spec_string (NM_BLUEZ4_ADAPTER_PATH, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ADDRESS] = + g_param_spec_string (NM_BLUEZ4_ADAPTER_ADDRESS, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); + signals[INITIALIZED] = g_signal_new ("initialized", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMBluez4AdapterClass, initialized), + 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); @@ -385,7 +395,7 @@ nm_bluez4_adapter_class_init (NMBluez4AdapterClass *config_class) signals[DEVICE_ADDED] = g_signal_new ("device-added", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMBluez4AdapterClass, device_added), + 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); @@ -393,7 +403,7 @@ nm_bluez4_adapter_class_init (NMBluez4AdapterClass *config_class) signals[DEVICE_REMOVED] = g_signal_new ("device-removed", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMBluez4AdapterClass, device_removed), + 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); diff --git a/src/devices/bluetooth/nm-bluez4-adapter.h b/src/devices/bluetooth/nm-bluez4-adapter.h index ee61112f2e..e240ec2ccb 100644 --- a/src/devices/bluetooth/nm-bluez4-adapter.h +++ b/src/devices/bluetooth/nm-bluez4-adapter.h @@ -33,20 +33,8 @@ #define NM_BLUEZ4_ADAPTER_PATH "path" #define NM_BLUEZ4_ADAPTER_ADDRESS "address" -typedef struct { - GObject parent; -} NMBluez4Adapter; - -typedef struct { - GObjectClass parent; - - /* virtual functions */ - void (*initialized) (NMBluez4Adapter *self, gboolean success); - - void (*device_added) (NMBluez4Adapter *self, NMBluezDevice *device); - - void (*device_removed) (NMBluez4Adapter *self, NMBluezDevice *device); -} NMBluez4AdapterClass; +typedef struct _NMBluez4Adapter NMBluez4Adapter; +typedef struct _NMBluez4AdapterClass NMBluez4AdapterClass; GType nm_bluez4_adapter_get_type (void); @@ -62,4 +50,3 @@ gboolean nm_bluez4_adapter_get_initialized (NMBluez4Adapter *self); GSList *nm_bluez4_adapter_get_devices (NMBluez4Adapter *self); #endif /* __NETWORKMANAGER_BLUEZ4_ADAPTER_H__ */ - diff --git a/src/devices/bluetooth/nm-bluez4-manager.c b/src/devices/bluetooth/nm-bluez4-manager.c index 1dc123d7d7..78e892e40a 100644 --- a/src/devices/bluetooth/nm-bluez4-manager.c +++ b/src/devices/bluetooth/nm-bluez4-manager.c @@ -28,11 +28,19 @@ #include <stdlib.h> #include "nm-bluez4-adapter.h" -#include "nm-bluez-manager.h" #include "nm-bluez-common.h" #include "nm-core-internal.h" #include "nm-settings.h" +/*****************************************************************************/ + +enum { + BDADDR_ADDED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + typedef struct { gulong name_owner_changed_id; @@ -43,19 +51,22 @@ typedef struct { NMBluez4Adapter *adapter; } NMBluez4ManagerPrivate; -#define NM_BLUEZ4_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_BLUEZ4_MANAGER, NMBluez4ManagerPrivate)) +struct _NMBluez4Manager { + GObject parent; + NMBluez4ManagerPrivate _priv; +}; + +struct _NMBluez4ManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMBluez4Manager, nm_bluez4_manager, G_TYPE_OBJECT) -enum { - BDADDR_ADDED, - LAST_SIGNAL -}; +#define NM_BLUEZ4_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBluez4Manager, NM_IS_BLUEZ4_MANAGER) -static guint signals[LAST_SIGNAL] = { 0 }; +/*****************************************************************************/ static void - emit_bdaddr_added (NMBluez4Manager *self, NMBluezDevice *device) { g_signal_emit (self, signals[BDADDR_ADDED], 0, @@ -224,18 +235,6 @@ name_owner_changed_cb (GObject *object, /*****************************************************************************/ -NMBluez4Manager * -nm_bluez4_manager_new (NMSettings *settings) -{ - NMBluez4Manager *instance; - - g_return_val_if_fail (NM_IS_SETTINGS (settings), NULL); - - instance = g_object_new (NM_TYPE_BLUEZ4_MANAGER, NULL); - NM_BLUEZ4_MANAGER_GET_PRIVATE (instance)->settings = g_object_ref (settings); - return instance; -} - static void nm_bluez4_manager_init (NMBluez4Manager *self) { @@ -258,6 +257,18 @@ nm_bluez4_manager_init (NMBluez4Manager *self) query_default_adapter (self); } +NMBluez4Manager * +nm_bluez4_manager_new (NMSettings *settings) +{ + NMBluez4Manager *instance; + + g_return_val_if_fail (NM_IS_SETTINGS (settings), NULL); + + instance = g_object_new (NM_TYPE_BLUEZ4_MANAGER, NULL); + NM_BLUEZ4_MANAGER_GET_PRIVATE (instance)->settings = g_object_ref (settings); + return instance; +} + static void dispose (GObject *object) { @@ -277,19 +288,14 @@ nm_bluez4_manager_class_init (NMBluez4ManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMBluez4ManagerPrivate)); - - /* virtual methods */ object_class->dispose = dispose; - /* Signals */ signals[BDADDR_ADDED] = - g_signal_new (NM_BLUEZ_MANAGER_BDADDR_ADDED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMBluez4ManagerClass, bdaddr_added), - NULL, NULL, NULL, - G_TYPE_NONE, 5, G_TYPE_OBJECT, G_TYPE_STRING, - G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); + g_signal_new (NM_BLUEZ_MANAGER_BDADDR_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 5, G_TYPE_OBJECT, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); } diff --git a/src/devices/bluetooth/nm-bluez4-manager.h b/src/devices/bluetooth/nm-bluez4-manager.h index 8afe6924c7..f46379ffab 100644 --- a/src/devices/bluetooth/nm-bluez4-manager.h +++ b/src/devices/bluetooth/nm-bluez4-manager.h @@ -28,20 +28,8 @@ #define NM_IS_BLUEZ4_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_BLUEZ4_MANAGER)) #define NM_BLUEZ4_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_BLUEZ4_MANAGER, NMBluez4ManagerClass)) -typedef struct { - GObject parent; -} NMBluez4Manager; - -typedef struct { - GObjectClass parent; - - /* Signals */ - void (*bdaddr_added) (NMBluez4Manager *manager, - const char *bdaddr, - const char *name, - const char *object_path, - guint uuids); -} NMBluez4ManagerClass; +typedef struct _NMBluez4Manager NMBluez4Manager; +typedef struct _NMBluez4ManagerClass NMBluez4ManagerClass; GType nm_bluez4_manager_get_type (void); @@ -50,4 +38,3 @@ NMBluez4Manager *nm_bluez4_manager_new (NMSettings *settings); void nm_bluez4_manager_query_devices (NMBluez4Manager *manager); #endif /* __NETWORKMANAGER_BLUEZ4_MANAGER_H__ */ - diff --git a/src/devices/bluetooth/nm-bluez5-manager.c b/src/devices/bluetooth/nm-bluez5-manager.c index 63a814b057..9859f74bad 100644 --- a/src/devices/bluetooth/nm-bluez5-manager.c +++ b/src/devices/bluetooth/nm-bluez5-manager.c @@ -30,11 +30,19 @@ #include "nm-core-internal.h" -#include "nm-bluez-manager.h" #include "nm-bluez-device.h" #include "nm-bluez-common.h" #include "nm-settings.h" +/*****************************************************************************/ + +enum { + BDADDR_ADDED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + typedef struct { NMSettings *settings; @@ -43,20 +51,26 @@ typedef struct { GHashTable *devices; } NMBluez5ManagerPrivate; -#define NM_BLUEZ5_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_BLUEZ5_MANAGER, NMBluez5ManagerPrivate)) +struct _NMBluez5Manager { + GObject parent; + NMBluez5ManagerPrivate _priv; +}; + +struct _NMBluez5ManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMBluez5Manager, nm_bluez5_manager, G_TYPE_OBJECT) -enum { - BDADDR_ADDED, - LAST_SIGNAL -}; +#define NM_BLUEZ5_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBluez5Manager, NM_IS_BLUEZ5_MANAGER) -static guint signals[LAST_SIGNAL] = { 0 }; +/*****************************************************************************/ static void device_initialized (NMBluezDevice *device, gboolean success, NMBluez5Manager *self); static void device_usable (NMBluezDevice *device, GParamSpec *pspec, NMBluez5Manager *self); +/*****************************************************************************/ + static void emit_bdaddr_added (NMBluez5Manager *self, NMBluezDevice *device) { @@ -310,6 +324,17 @@ bluez_cleanup (NMBluez5Manager *self, gboolean do_signal) /*****************************************************************************/ +static void +nm_bluez5_manager_init (NMBluez5Manager *self) +{ + NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self); + + bluez_connect (self); + + priv->devices = g_hash_table_new_full (g_str_hash, g_str_equal, + NULL, g_object_unref); +} + NMBluez5Manager * nm_bluez5_manager_new (NMSettings *settings) { @@ -323,17 +348,6 @@ nm_bluez5_manager_new (NMSettings *settings) } static void -nm_bluez5_manager_init (NMBluez5Manager *self) -{ - NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self); - - bluez_connect (self); - - priv->devices = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, g_object_unref); -} - -static void dispose (GObject *object) { NMBluez5Manager *self = NM_BLUEZ5_MANAGER (object); @@ -346,7 +360,7 @@ dispose (GObject *object) static void finalize (GObject *object) { - NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (object); + NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE ((NMBluez5Manager *) object); g_hash_table_destroy (priv->devices); @@ -360,19 +374,14 @@ nm_bluez5_manager_class_init (NMBluez5ManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMBluez5ManagerPrivate)); - - /* virtual methods */ object_class->dispose = dispose; object_class->finalize = finalize; - /* Signals */ signals[BDADDR_ADDED] = - g_signal_new (NM_BLUEZ_MANAGER_BDADDR_ADDED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMBluez5ManagerClass, bdaddr_added), - NULL, NULL, NULL, - G_TYPE_NONE, 5, G_TYPE_OBJECT, G_TYPE_STRING, - G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); + g_signal_new (NM_BLUEZ_MANAGER_BDADDR_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 5, G_TYPE_OBJECT, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT); } diff --git a/src/devices/bluetooth/nm-bluez5-manager.h b/src/devices/bluetooth/nm-bluez5-manager.h index 0e309d33a3..436944359b 100644 --- a/src/devices/bluetooth/nm-bluez5-manager.h +++ b/src/devices/bluetooth/nm-bluez5-manager.h @@ -29,20 +29,8 @@ #define NM_IS_BLUEZ5_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_BLUEZ5_MANAGER)) #define NM_BLUEZ5_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_BLUEZ5_MANAGER, NMBluez5ManagerClass)) -typedef struct { - GObject parent; -} NMBluez5Manager; - -typedef struct { - GObjectClass parent; - - /* Signals */ - void (*bdaddr_added) (NMBluez5Manager *manager, - const char *bdaddr, - const char *name, - const char *object_path, - guint uuids); -} NMBluez5ManagerClass; +typedef struct _NMBluez5Manager NMBluez5Manager; +typedef struct _NMBluez5ManagerClass NMBluez5ManagerClass; GType nm_bluez5_manager_get_type (void); @@ -51,4 +39,3 @@ NMBluez5Manager *nm_bluez5_manager_new (NMSettings *settings); void nm_bluez5_manager_query_devices (NMBluez5Manager *manager); #endif /* __NETWORKMANAGER_BLUEZ5_MANAGER_H__ */ - diff --git a/src/devices/bluetooth/nm-device-bt.c b/src/devices/bluetooth/nm-device-bt.c index 77b4c667b9..a36681c4a3 100644 --- a/src/devices/bluetooth/nm-device-bt.c +++ b/src/devices/bluetooth/nm-device-bt.c @@ -44,18 +44,27 @@ #include "nmdbus-device-bt.h" +#include "nm-device-logging.h" +_LOG_DECLARE_SELF(NMDeviceBt); + #define MM_DBUS_SERVICE "org.freedesktop.ModemManager1" #define MM_DBUS_PATH "/org/freedesktop/ModemManager1" #define MM_DBUS_INTERFACE "org.freedesktop.ModemManager1" -#include "nm-device-logging.h" -_LOG_DECLARE_SELF(NMDeviceBt); +/*****************************************************************************/ -G_DEFINE_TYPE (NMDeviceBt, nm_device_bt, NM_TYPE_DEVICE) +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_BT_NAME, + PROP_BT_CAPABILITIES, + PROP_BT_DEVICE, +); -#define NM_DEVICE_BT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_BT, NMDeviceBtPrivate)) +enum { + PPP_STATS, + LAST_SIGNAL, +}; -static gboolean modem_stage1 (NMDeviceBt *self, NMModem *modem, NMDeviceStateReason *reason); +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { GDBusProxy *mm_proxy; @@ -77,22 +86,24 @@ typedef struct { guint32 bt_type; /* BT type of the current connection */ } NMDeviceBtPrivate; -enum { - PROP_0, - PROP_BT_NAME, - PROP_BT_CAPABILITIES, - PROP_BT_DEVICE, +struct _NMDeviceBt { + NMDevice parent; + NMDeviceBtPrivate _priv; +}; - LAST_PROP +struct _NMDeviceBtClass { + NMDeviceClass parent; }; -enum { - PPP_STATS, +G_DEFINE_TYPE (NMDeviceBt, nm_device_bt, NM_TYPE_DEVICE) - LAST_SIGNAL -}; -static guint signals[LAST_SIGNAL] = { 0 }; +#define NM_DEVICE_BT_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceBt, NM_IS_DEVICE_BT) +/*****************************************************************************/ + +static gboolean modem_stage1 (NMDeviceBt *self, NMModem *modem, NMDeviceStateReason *reason); + +/*****************************************************************************/ guint32 nm_device_bt_get_capabilities (NMDeviceBt *self) { @@ -133,7 +144,7 @@ can_auto_connect (NMDevice *device, NMConnection *connection, char **specific_object) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); guint32 bt_type; nm_assert (!specific_object || !*specific_object); @@ -152,7 +163,7 @@ can_auto_connect (NMDevice *device, static gboolean check_connection_compatible (NMDevice *device, NMConnection *connection) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); NMSettingConnection *s_con; NMSettingBluetooth *s_bt; const char *bdaddr; @@ -190,7 +201,7 @@ check_connection_available (NMDevice *device, NMDeviceCheckConAvailableFlags flags, const char *specific_object) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); guint32 bt_type; bt_type = get_connection_bt_type (connection); @@ -211,7 +222,7 @@ complete_connection (NMDevice *device, const GSList *existing_connections, GError **error) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); NMSettingBluetooth *s_bt; const char *setting_bdaddr; const char *ctype; @@ -420,7 +431,7 @@ static void modem_auth_result (NMModem *modem, GError *error, gpointer user_data) { NMDevice *device = NM_DEVICE (user_data); - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); NMDeviceStateReason reason = NM_DEVICE_STATE_REASON_NONE; if (error) { @@ -488,7 +499,7 @@ device_state_changed (NMDevice *device, NMDeviceState old_state, NMDeviceStateReason reason) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); if (priv->modem) nm_modem_device_state_changed (priv->modem, new_state, old_state, reason); @@ -828,7 +839,7 @@ static NMActStageReturn act_stage2_config (NMDevice *device, NMDeviceStateReason *reason) { NMDeviceBt *self = NM_DEVICE_BT (device); - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (self); NMConnection *connection; connection = nm_device_get_applied_connection (device); @@ -863,11 +874,11 @@ act_stage3_ip4_config_start (NMDevice *device, NMIP4Config **out_config, NMDeviceStateReason *reason) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); NMActStageReturn ret; if (priv->bt_type == NM_BT_CAPABILITY_DUN) { - ret = nm_modem_stage3_ip4_config_start (NM_DEVICE_BT_GET_PRIVATE (device)->modem, + ret = nm_modem_stage3_ip4_config_start (priv->modem, device, NM_DEVICE_CLASS (nm_device_bt_parent_class), reason); @@ -882,11 +893,11 @@ act_stage3_ip6_config_start (NMDevice *device, NMIP6Config **out_config, NMDeviceStateReason *reason) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); NMActStageReturn ret; if (priv->bt_type == NM_BT_CAPABILITY_DUN) { - ret = nm_modem_stage3_ip6_config_start (NM_DEVICE_BT_GET_PRIVATE (device)->modem, + ret = nm_modem_stage3_ip6_config_start (priv->modem, nm_device_get_act_request (device), reason); } else @@ -898,7 +909,7 @@ act_stage3_ip6_config_start (NMDevice *device, static void deactivate (NMDevice *device) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) device); priv->have_iface = FALSE; priv->connected = FALSE; @@ -987,32 +998,56 @@ mm_name_owner_changed (GObject *object, /*****************************************************************************/ -NMDevice * -nm_device_bt_new (NMBluezDevice *bt_device, - const char *udi, - const char *bdaddr, - const char *name, - guint32 capabilities) +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { - g_return_val_if_fail (udi != NULL, NULL); - g_return_val_if_fail (bdaddr != NULL, NULL); - g_return_val_if_fail (name != NULL, NULL); - g_return_val_if_fail (capabilities != NM_BT_CAPABILITY_NONE, NULL); - g_return_val_if_fail (NM_IS_BLUEZ_DEVICE (bt_device), NULL); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) object); - return (NMDevice *) g_object_new (NM_TYPE_DEVICE_BT, - NM_DEVICE_UDI, udi, - NM_DEVICE_IFACE, bdaddr, - NM_DEVICE_DRIVER, "bluez", - NM_DEVICE_PERM_HW_ADDRESS, bdaddr, - NM_DEVICE_BT_DEVICE, bt_device, - NM_DEVICE_BT_NAME, name, - NM_DEVICE_BT_CAPABILITIES, capabilities, - NM_DEVICE_TYPE_DESC, "Bluetooth", - NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_BT, - NULL); + switch (prop_id) { + case PROP_BT_NAME: + g_value_set_string (value, priv->name); + break; + case PROP_BT_CAPABILITIES: + g_value_set_uint (value, priv->capabilities); + break; + case PROP_BT_DEVICE: + g_value_set_object (value, priv->bt_device); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) object); + + switch (prop_id) { + case PROP_BT_NAME: + /* Construct only */ + priv->name = g_value_dup_string (value); + break; + case PROP_BT_CAPABILITIES: + /* Construct only */ + priv->capabilities = g_value_get_uint (value); + break; + case PROP_BT_DEVICE: + /* Construct only */ + priv->bt_device = g_value_dup_object (value); + g_signal_connect (priv->bt_device, "removed", G_CALLBACK (bluez_device_removed), object); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } +/*****************************************************************************/ + static void nm_device_bt_init (NMDeviceBt *self) { @@ -1043,7 +1078,7 @@ nm_device_bt_init (NMDeviceBt *self) static void constructed (GObject *object) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) object); const char *my_hwaddr; G_OBJECT_CLASS (nm_device_bt_parent_class)->constructed (object); @@ -1058,58 +1093,36 @@ constructed (GObject *object) object); } -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_BT_NAME: - /* Construct only */ - priv->name = g_value_dup_string (value); - break; - case PROP_BT_CAPABILITIES: - /* Construct only */ - priv->capabilities = g_value_get_uint (value); - break; - case PROP_BT_DEVICE: - /* Construct only */ - priv->bt_device = g_value_dup_object (value); - g_signal_connect (priv->bt_device, "removed", G_CALLBACK (bluez_device_removed), object); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) +NMDevice * +nm_device_bt_new (NMBluezDevice *bt_device, + const char *udi, + const char *bdaddr, + const char *name, + guint32 capabilities) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object); + g_return_val_if_fail (udi != NULL, NULL); + g_return_val_if_fail (bdaddr != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); + g_return_val_if_fail (capabilities != NM_BT_CAPABILITY_NONE, NULL); + g_return_val_if_fail (NM_IS_BLUEZ_DEVICE (bt_device), NULL); - switch (prop_id) { - case PROP_BT_NAME: - g_value_set_string (value, priv->name); - break; - case PROP_BT_CAPABILITIES: - g_value_set_uint (value, priv->capabilities); - break; - case PROP_BT_DEVICE: - g_value_set_object (value, priv->bt_device); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + return (NMDevice *) g_object_new (NM_TYPE_DEVICE_BT, + NM_DEVICE_UDI, udi, + NM_DEVICE_IFACE, bdaddr, + NM_DEVICE_DRIVER, "bluez", + NM_DEVICE_PERM_HW_ADDRESS, bdaddr, + NM_DEVICE_BT_DEVICE, bt_device, + NM_DEVICE_BT_NAME, name, + NM_DEVICE_BT_CAPABILITIES, capabilities, + NM_DEVICE_TYPE_DESC, "Bluetooth", + NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_BT, + NULL); } static void dispose (GObject *object) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) object); nm_clear_g_source (&priv->timeout_id); @@ -1129,7 +1142,7 @@ dispose (GObject *object) static void finalize (GObject *object) { - NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (object); + NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE ((NMDeviceBt *) object); g_free (priv->rfcomm_iface); g_free (priv->name); @@ -1144,8 +1157,6 @@ nm_device_bt_class_init (NMDeviceBtClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceBtPrivate)); - object_class->constructed = constructed; object_class->get_property = get_property; object_class->set_property = set_property; @@ -1166,37 +1177,33 @@ nm_device_bt_class_init (NMDeviceBtClass *klass) device_class->state_changed = device_state_changed; - /* Properties */ - g_object_class_install_property - (object_class, PROP_BT_NAME, - g_param_spec_string (NM_DEVICE_BT_NAME, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_BT_CAPABILITIES, - g_param_spec_uint (NM_DEVICE_BT_CAPABILITIES, "", "", - NM_BT_CAPABILITY_NONE, G_MAXUINT, NM_BT_CAPABILITY_NONE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_BT_DEVICE, - g_param_spec_object (NM_DEVICE_BT_DEVICE, "", "", - NM_TYPE_BLUEZ_DEVICE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - /* Signals */ + obj_properties[PROP_BT_NAME] = + g_param_spec_string (NM_DEVICE_BT_NAME, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_BT_CAPABILITIES] = + g_param_spec_uint (NM_DEVICE_BT_CAPABILITIES, "", "", + NM_BT_CAPABILITY_NONE, G_MAXUINT, NM_BT_CAPABILITY_NONE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_BT_DEVICE] = + g_param_spec_object (NM_DEVICE_BT_DEVICE, "", "", + NM_TYPE_BLUEZ_DEVICE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); + signals[PPP_STATS] = - g_signal_new ("ppp-stats", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMDeviceBtClass, ppp_stats), - NULL, NULL, NULL, - G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + g_signal_new ("ppp-stats", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 2, + G_TYPE_UINT, G_TYPE_UINT); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_BLUETOOTH_SKELETON, diff --git a/src/devices/bluetooth/nm-device-bt.h b/src/devices/bluetooth/nm-device-bt.h index c97cca0137..2308f0e8a3 100644 --- a/src/devices/bluetooth/nm-device-bt.h +++ b/src/devices/bluetooth/nm-device-bt.h @@ -25,27 +25,19 @@ #include "nm-bluez-device.h" #include "nm-modem.h" -#define NM_TYPE_DEVICE_BT (nm_device_bt_get_type ()) -#define NM_DEVICE_BT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_BT, NMDeviceBt)) -#define NM_DEVICE_BT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_BT, NMDeviceBtClass)) -#define NM_IS_DEVICE_BT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_BT)) -#define NM_IS_DEVICE_BT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_BT)) -#define NM_DEVICE_BT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_BT, NMDeviceBtClass)) +#define NM_TYPE_DEVICE_BT (nm_device_bt_get_type ()) +#define NM_DEVICE_BT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_BT, NMDeviceBt)) +#define NM_DEVICE_BT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_BT, NMDeviceBtClass)) +#define NM_IS_DEVICE_BT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_BT)) +#define NM_IS_DEVICE_BT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_BT)) +#define NM_DEVICE_BT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_BT, NMDeviceBtClass)) #define NM_DEVICE_BT_NAME "name" #define NM_DEVICE_BT_CAPABILITIES "bt-capabilities" #define NM_DEVICE_BT_DEVICE "bt-device" -typedef struct { - NMDevice parent; -} NMDeviceBt; - -typedef struct { - NMDeviceClass parent; - - /* Signals */ - void (*ppp_stats) (NMDeviceBt *device, guint32 in_bytes, guint32 out_bytes); -} NMDeviceBtClass; +typedef struct _NMDeviceBt NMDeviceBt; +typedef struct _NMDeviceBtClass NMDeviceBtClass; GType nm_device_bt_get_type (void); diff --git a/src/devices/nm-arping-manager.c b/src/devices/nm-arping-manager.c index dfb20b4b51..0d3a3ea692 100644 --- a/src/devices/nm-arping-manager.c +++ b/src/devices/nm-arping-manager.c @@ -16,15 +16,18 @@ #include "nm-default.h" +#include "nm-arping-manager.h" + #include <netinet/in.h> #include <sys/types.h> #include <sys/wait.h> -#include "nm-arping-manager.h" #include "nm-platform.h" #include "nm-utils.h" #include "NetworkManagerUtils.h" +/*****************************************************************************/ + typedef enum { STATE_INIT, STATE_PROBING, @@ -33,15 +36,6 @@ typedef enum { } State; typedef struct { - int ifindex; - State state; - GHashTable *addresses; - guint completed; - guint timer; - guint round2_id; -} NMArpingManagerPrivate; - -typedef struct { in_addr_t address; GPid pid; guint watch; @@ -49,15 +43,38 @@ typedef struct { NMArpingManager *manager; } AddressInfo; +/*****************************************************************************/ + enum { PROBE_TERMINATED, LAST_SIGNAL, }; + static guint signals[LAST_SIGNAL] = { 0 }; +typedef struct { + int ifindex; + State state; + GHashTable *addresses; + guint completed; + guint timer; + guint round2_id; +} NMArpingManagerPrivate; + +struct _NMArpingManager { + GObject parent; + NMArpingManagerPrivate _priv; +}; + +struct _NMArpingManagerClass { + GObjectClass parent; +}; + G_DEFINE_TYPE (NMArpingManager, nm_arping_manager, G_TYPE_OBJECT) -#define NM_ARPING_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ARPING_MANAGER, NMArpingManagerPrivate)) +#define NM_ARPING_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMArpingManager, NM_IS_ARPING_MANAGER) + +/*****************************************************************************/ #define _NMLOG_DOMAIN LOGD_IP4 #define _NMLOG_PREFIX_NAME "arping" @@ -74,6 +91,8 @@ G_DEFINE_TYPE (NMArpingManager, nm_arping_manager, G_TYPE_OBJECT) _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ } G_STMT_END +/*****************************************************************************/ + /** * nm_arping_manager_add_address: * @self: a #NMArpingManager @@ -350,7 +369,7 @@ send_announcements (NMArpingManager *self, const char *mode_arg) static gboolean arp_announce_round2 (gpointer self) { - NMArpingManagerPrivate *priv = NM_ARPING_MANAGER_GET_PRIVATE (self); + NMArpingManagerPrivate *priv = NM_ARPING_MANAGER_GET_PRIVATE ((NMArpingManager *) self); priv->round2_id = 0; send_announcements (self, "-U"); @@ -395,18 +414,7 @@ destroy_address_info (gpointer data) g_slice_free (AddressInfo, info); } -static void -dispose (GObject *object) -{ - NMArpingManager *self = NM_ARPING_MANAGER (object); - NMArpingManagerPrivate *priv = NM_ARPING_MANAGER_GET_PRIVATE (self); - - nm_clear_g_source (&priv->timer); - nm_clear_g_source (&priv->round2_id); - g_clear_pointer (&priv->addresses, g_hash_table_destroy); - - G_OBJECT_CLASS (nm_arping_manager_parent_class)->dispose (object); -} +/*****************************************************************************/ static void nm_arping_manager_init (NMArpingManager *self) @@ -427,23 +435,33 @@ nm_arping_manager_new (int ifindex) self = g_object_new (NM_TYPE_ARPING_MANAGER, NULL); priv = NM_ARPING_MANAGER_GET_PRIVATE (self); priv->ifindex = ifindex; - return self; } static void +dispose (GObject *object) +{ + NMArpingManager *self = NM_ARPING_MANAGER (object); + NMArpingManagerPrivate *priv = NM_ARPING_MANAGER_GET_PRIVATE (self); + + nm_clear_g_source (&priv->timer); + nm_clear_g_source (&priv->round2_id); + g_clear_pointer (&priv->addresses, g_hash_table_destroy); + + G_OBJECT_CLASS (nm_arping_manager_parent_class)->dispose (object); +} + +static void nm_arping_manager_class_init (NMArpingManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMArpingManagerPrivate)); - object_class->dispose = dispose; signals[PROBE_TERMINATED] = - g_signal_new (NM_ARPING_MANAGER_PROBE_TERMINATED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_ARPING_MANAGER_PROBE_TERMINATED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); } diff --git a/src/devices/nm-arping-manager.h b/src/devices/nm-arping-manager.h index 78965a0df2..c8a86af030 100644 --- a/src/devices/nm-arping-manager.h +++ b/src/devices/nm-arping-manager.h @@ -28,13 +28,7 @@ #define NM_ARPING_MANAGER_PROBE_TERMINATED "probe-terminated" -struct _NMArpingManager { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMArpingManagerClass; +typedef struct _NMArpingManagerClass NMArpingManagerClass; GType nm_arping_manager_get_type (void); diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c index b76aa5f6b8..6d3a2facad 100644 --- a/src/devices/nm-device-bond.c +++ b/src/devices/nm-device-bond.c @@ -20,10 +20,11 @@ #include "nm-default.h" +#include "nm-device-bond.h" + #include <errno.h> #include <stdlib.h> -#include "nm-device-bond.h" #include "NetworkManagerUtils.h" #include "nm-device-private.h" #include "nm-platform.h" @@ -37,13 +38,17 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceBond); -G_DEFINE_TYPE (NMDeviceBond, nm_device_bond, NM_TYPE_DEVICE) +/*****************************************************************************/ -#define NM_DEVICE_BOND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_BOND, NMDeviceBondPrivate)) +struct _NMDeviceBond { + NMDevice parent; +}; -typedef struct { - int dummy; -} NMDeviceBondPrivate; +struct _NMDeviceBondClass { + NMDeviceClass parent; +}; + +G_DEFINE_TYPE (NMDeviceBond, nm_device_bond, NM_TYPE_DEVICE) /*****************************************************************************/ @@ -492,11 +497,8 @@ nm_device_bond_init (NMDeviceBond * self) static void nm_device_bond_class_init (NMDeviceBondClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceBondPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_BOND_SETTING_NAME, NM_LINK_TYPE_BOND) parent_class->get_generic_capabilities = get_generic_capabilities; @@ -545,5 +547,4 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (BOND, Bond, bond, NM_DEVICE_FACTORY_DECLARE_LINK_TYPES (NM_LINK_TYPE_BOND) NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES (NM_SETTING_BOND_SETTING_NAME), factory_iface->create_device = create_device; - ) - +); diff --git a/src/devices/nm-device-bond.h b/src/devices/nm-device-bond.h index 02b6c8e540..b4e9b0e883 100644 --- a/src/devices/nm-device-bond.h +++ b/src/devices/nm-device-bond.h @@ -30,8 +30,8 @@ #define NM_IS_DEVICE_BOND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_BOND)) #define NM_DEVICE_BOND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_BOND, NMDeviceBondClass)) -typedef NMDevice NMDeviceBond; -typedef NMDeviceClass NMDeviceBondClass; +typedef struct _NMDeviceBond NMDeviceBond; +typedef struct _NMDeviceBondClass NMDeviceBondClass; GType nm_device_bond_get_type (void); diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c index a58fb65b26..f5c236bd80 100644 --- a/src/devices/nm-device-bridge.c +++ b/src/devices/nm-device-bridge.c @@ -20,9 +20,10 @@ #include "nm-default.h" +#include "nm-device-bridge.h" + #include <stdlib.h> -#include "nm-device-bridge.h" #include "NetworkManagerUtils.h" #include "nm-device-private.h" #include "nm-enum-types.h" @@ -35,13 +36,17 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceBridge); -G_DEFINE_TYPE (NMDeviceBridge, nm_device_bridge, NM_TYPE_DEVICE) +/*****************************************************************************/ + +struct _NMDeviceBridge { + NMDevice parent; +}; -#define NM_DEVICE_BRIDGE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgePrivate)) +struct _NMDeviceBridgeClass { + NMDeviceClass parent; +}; -typedef struct { - int dummy; -} NMDeviceBridgePrivate; +G_DEFINE_TYPE (NMDeviceBridge, nm_device_bridge, NM_TYPE_DEVICE) /*****************************************************************************/ @@ -421,11 +426,8 @@ nm_device_bridge_init (NMDeviceBridge * self) static void nm_device_bridge_class_init (NMDeviceBridgeClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceBridgePrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_BRIDGE_SETTING_NAME, NM_LINK_TYPE_BRIDGE) parent_class->get_generic_capabilities = get_generic_capabilities; @@ -473,5 +475,4 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (BRIDGE, Bridge, bridge, NM_DEVICE_FACTORY_DECLARE_LINK_TYPES (NM_LINK_TYPE_BRIDGE) NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES (NM_SETTING_BRIDGE_SETTING_NAME), factory_iface->create_device = create_device; - ) - +); diff --git a/src/devices/nm-device-bridge.h b/src/devices/nm-device-bridge.h index 05da9ed751..f0fa1f4b64 100644 --- a/src/devices/nm-device-bridge.h +++ b/src/devices/nm-device-bridge.h @@ -30,8 +30,8 @@ #define NM_IS_DEVICE_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_BRIDGE)) #define NM_DEVICE_BRIDGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_BRIDGE, NMDeviceBridgeClass)) -typedef NMDevice NMDeviceBridge; -typedef NMDeviceClass NMDeviceBridgeClass; +typedef struct _NMDeviceBridge NMDeviceBridge; +typedef struct _NMDeviceBridgeClass NMDeviceBridgeClass; GType nm_device_bridge_get_type (void); diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c index 43d029e55a..fd80a607a2 100644 --- a/src/devices/nm-device-ethernet.c +++ b/src/devices/nm-device-ethernet.c @@ -33,11 +33,13 @@ #include "nm-device-private.h" #include "nm-act-request.h" +#include "nm-ip4-config.h" #include "NetworkManagerUtils.h" #include "nm-supplicant-manager.h" #include "nm-supplicant-interface.h" #include "nm-supplicant-config.h" #include "ppp-manager/nm-ppp-manager.h" +#include "ppp-manager/nm-ppp-status.h" #include "nm-enum-types.h" #include "nm-platform.h" #include "nm-platform-utils.h" @@ -1633,7 +1635,6 @@ nm_device_ethernet_class_init (NMDeviceEthernetClass *klass) NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_WIRED_SETTING_NAME, NM_LINK_TYPE_ETHERNET) - /* virtual methods */ object_class->constructed = constructed; object_class->dispose = dispose; object_class->finalize = finalize; diff --git a/src/devices/nm-device-ethernet.h b/src/devices/nm-device-ethernet.h index 3ce6f0ca4b..a50a7d851b 100644 --- a/src/devices/nm-device-ethernet.h +++ b/src/devices/nm-device-ethernet.h @@ -42,7 +42,7 @@ typedef struct { } NMDeviceEthernet; typedef struct { - NMDeviceClass parent_class; + NMDeviceClass parent; } NMDeviceEthernetClass; GType nm_device_ethernet_get_type (void); diff --git a/src/devices/nm-device-generic.c b/src/devices/nm-device-generic.c index 2d86799bb9..dc8828a96d 100644 --- a/src/devices/nm-device-generic.c +++ b/src/devices/nm-device-generic.c @@ -21,6 +21,7 @@ #include "nm-default.h" #include "nm-device-generic.h" + #include "nm-device-private.h" #include "nm-enum-types.h" #include "nm-platform.h" @@ -28,21 +29,31 @@ #include "nmdbus-device-generic.h" -G_DEFINE_TYPE (NMDeviceGeneric, nm_device_generic, NM_TYPE_DEVICE) +/*****************************************************************************/ -#define NM_DEVICE_GENERIC_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_GENERIC, NMDeviceGenericPrivate)) +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_TYPE_DESCRIPTION, +); typedef struct { char *type_description; } NMDeviceGenericPrivate; -enum { - PROP_0, - PROP_TYPE_DESCRIPTION, +struct _NMDeviceGeneric { + NMDevice parent; + NMDeviceGenericPrivate _priv; +}; - LAST_PROP +struct _NMDeviceGenericClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceGeneric, nm_device_generic, NM_TYPE_DEVICE) + +#define NM_DEVICE_GENERIC_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceGeneric, NM_IS_DEVICE_GENERIC) + +/*****************************************************************************/ + static NMDeviceCapabilities get_generic_capabilities (NMDevice *dev) { @@ -55,8 +66,8 @@ get_generic_capabilities (NMDevice *dev) static const char * get_type_description (NMDevice *device) { - if (NM_DEVICE_GENERIC_GET_PRIVATE (device)->type_description) - return NM_DEVICE_GENERIC_GET_PRIVATE (device)->type_description; + if (NM_DEVICE_GENERIC_GET_PRIVATE ((NMDeviceGeneric *) device)->type_description) + return NM_DEVICE_GENERIC_GET_PRIVATE ((NMDeviceGeneric *) device)->type_description; return NM_DEVICE_CLASS (nm_device_generic_parent_class)->get_type_description (device); } @@ -110,20 +121,43 @@ update_connection (NMDevice *device, NMConnection *connection) /*****************************************************************************/ -NMDevice * -nm_device_generic_new (const NMPlatformLink *plink, gboolean nm_plugin_missing) +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { - g_return_val_if_fail (plink != NULL, NULL); + NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); + NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); - return (NMDevice *) g_object_new (NM_TYPE_DEVICE_GENERIC, - NM_DEVICE_IFACE, plink->name, - NM_DEVICE_TYPE_DESC, "Generic", - NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_GENERIC, - NM_DEVICE_NM_PLUGIN_MISSING, nm_plugin_missing, - NULL); + switch (prop_id) { + case PROP_TYPE_DESCRIPTION: + g_value_set_string (value, priv->type_description); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); + NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); + + switch (prop_id) { + case PROP_TYPE_DESCRIPTION: + priv->type_description = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + +static void nm_device_generic_init (NMDeviceGeneric *self) { } @@ -144,49 +178,28 @@ constructor (GType type, return object; } -static void -dispose (GObject *object) +NMDevice * +nm_device_generic_new (const NMPlatformLink *plink, gboolean nm_plugin_missing) { - NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); - NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); - - g_clear_pointer (&priv->type_description, g_free); + g_return_val_if_fail (plink != NULL, NULL); - G_OBJECT_CLASS (nm_device_generic_parent_class)->dispose (object); + return (NMDevice *) g_object_new (NM_TYPE_DEVICE_GENERIC, + NM_DEVICE_IFACE, plink->name, + NM_DEVICE_TYPE_DESC, "Generic", + NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_GENERIC, + NM_DEVICE_NM_PLUGIN_MISSING, nm_plugin_missing, + NULL); } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) +dispose (GObject *object) { NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); - switch (prop_id) { - case PROP_TYPE_DESCRIPTION: - g_value_set_string (value, priv->type_description); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); - NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); + g_clear_pointer (&priv->type_description, g_free); - switch (prop_id) { - case PROP_TYPE_DESCRIPTION: - priv->type_description = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + G_OBJECT_CLASS (nm_device_generic_parent_class)->dispose (object); } static void @@ -195,8 +208,6 @@ nm_device_generic_class_init (NMDeviceGenericClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMDeviceGenericPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_GENERIC_SETTING_NAME, NM_LINK_TYPE_ANY) object_class->constructor = constructor; @@ -210,13 +221,13 @@ nm_device_generic_class_init (NMDeviceGenericClass *klass) parent_class->check_connection_compatible = check_connection_compatible; parent_class->update_connection = update_connection; - /* properties */ - g_object_class_install_property - (object_class, PROP_TYPE_DESCRIPTION, - g_param_spec_string (NM_DEVICE_GENERIC_TYPE_DESCRIPTION, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_TYPE_DESCRIPTION] = + g_param_spec_string (NM_DEVICE_GENERIC_TYPE_DESCRIPTION, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_GENERIC_SKELETON, diff --git a/src/devices/nm-device-generic.h b/src/devices/nm-device-generic.h index d988a5e2a1..424421806f 100644 --- a/src/devices/nm-device-generic.h +++ b/src/devices/nm-device-generic.h @@ -32,14 +32,8 @@ #define NM_DEVICE_GENERIC_TYPE_DESCRIPTION "type-description" -typedef struct { - NMDevice parent; -} NMDeviceGeneric; - -typedef struct { - NMDeviceClass parent; - -} NMDeviceGenericClass; +typedef struct _NMDeviceGeneric NMDeviceGeneric; +typedef struct _NMDeviceGenericClass NMDeviceGenericClass; GType nm_device_generic_get_type (void); diff --git a/src/devices/nm-device-infiniband.c b/src/devices/nm-device-infiniband.c index f34af24acd..56bdcb6de0 100644 --- a/src/devices/nm-device-infiniband.c +++ b/src/devices/nm-device-infiniband.c @@ -20,9 +20,10 @@ #include "nm-default.h" +#include "nm-device-infiniband.h" + #include <linux/if_infiniband.h> -#include "nm-device-infiniband.h" #include "NetworkManagerUtils.h" #include "nm-device-private.h" #include "nm-enum-types.h" @@ -34,32 +35,41 @@ #include "nmdbus-device-infiniband.h" -G_DEFINE_TYPE (NMDeviceInfiniband, nm_device_infiniband, NM_TYPE_DEVICE) +#define NM_DEVICE_INFINIBAND_IS_PARTITION "is-partition" -#define NM_DEVICE_INFINIBAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfinibandPrivate)) +/*****************************************************************************/ -#define NM_DEVICE_INFINIBAND_IS_PARTITION "is-partition" +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_IS_PARTITION, +); typedef struct { gboolean is_partition; - int parent_ifindex, p_key; + int parent_ifindex; + int p_key; } NMDeviceInfinibandPrivate; -enum { - PROP_0, - PROP_IS_PARTITION, +struct _NMDeviceInfiniband { + NMDevice parent; + NMDeviceInfinibandPrivate _priv; +}; - LAST_PROP +struct _NMDeviceInfinibandClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceInfiniband, nm_device_infiniband, NM_TYPE_DEVICE) + +#define NM_DEVICE_INFINIBAND_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceInfiniband, NM_IS_DEVICE_INFINIBAND) + /*****************************************************************************/ static NMDeviceCapabilities -get_generic_capabilities (NMDevice *dev) +get_generic_capabilities (NMDevice *device) { guint32 caps = NM_DEVICE_CAP_CARRIER_DETECT; - if (NM_DEVICE_INFINIBAND_GET_PRIVATE (dev)->is_partition) + if (NM_DEVICE_INFINIBAND_GET_PRIVATE ((NMDeviceInfiniband *) device)->is_partition) caps |= NM_DEVICE_CAP_IS_SOFTWARE; return caps; @@ -241,7 +251,7 @@ create_and_realize (NMDevice *device, const NMPlatformLink **out_plink, GError **error) { - NMDeviceInfinibandPrivate *priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (device); + NMDeviceInfinibandPrivate *priv = NM_DEVICE_INFINIBAND_GET_PRIVATE ((NMDeviceInfiniband *) device); NMSettingInfiniband *s_infiniband; NMPlatformError plerr; @@ -294,11 +304,13 @@ create_and_realize (NMDevice *device, static gboolean unrealize (NMDevice *device, GError **error) { - NMDeviceInfinibandPrivate *priv = NM_DEVICE_INFINIBAND_GET_PRIVATE (device); + NMDeviceInfinibandPrivate *priv; NMPlatformError plerr; g_return_val_if_fail (NM_IS_DEVICE_INFINIBAND (device), FALSE); + priv = NM_DEVICE_INFINIBAND_GET_PRIVATE ((NMDeviceInfiniband *) device); + if (priv->p_key < 0) { g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, "Only InfiniBand partitions can be removed"); @@ -320,17 +332,12 @@ unrealize (NMDevice *device, GError **error) /*****************************************************************************/ static void -nm_device_infiniband_init (NMDeviceInfiniband * self) -{ -} - -static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_IS_PARTITION: - g_value_set_boolean (value, NM_DEVICE_INFINIBAND_GET_PRIVATE (object)->is_partition); + g_value_set_boolean (value, NM_DEVICE_INFINIBAND_GET_PRIVATE ((NMDeviceInfiniband *) object)->is_partition); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -340,11 +347,11 @@ get_property (GObject *object, guint prop_id, static void set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) + const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_IS_PARTITION: - NM_DEVICE_INFINIBAND_GET_PRIVATE (object)->is_partition = g_value_get_boolean (value); + NM_DEVICE_INFINIBAND_GET_PRIVATE ((NMDeviceInfiniband *) object)->is_partition = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -352,17 +359,21 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_device_infiniband_init (NMDeviceInfiniband * self) +{ +} + static void nm_device_infiniband_class_init (NMDeviceInfinibandClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceInfinibandPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_INFINIBAND_SETTING_NAME, NM_LINK_TYPE_INFINIBAND) - /* virtual methods */ object_class->get_property = get_property; object_class->set_property = set_property; @@ -376,13 +387,13 @@ nm_device_infiniband_class_init (NMDeviceInfinibandClass *klass) parent_class->act_stage1_prepare = act_stage1_prepare; parent_class->ip4_config_pre_commit = ip4_config_pre_commit; - /* properties */ - g_object_class_install_property - (object_class, PROP_IS_PARTITION, - g_param_spec_boolean (NM_DEVICE_INFINIBAND_IS_PARTITION, "", "", - FALSE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_IS_PARTITION] = + g_param_spec_boolean (NM_DEVICE_INFINIBAND_IS_PARTITION, "", "", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_INFINIBAND_SKELETON, @@ -464,5 +475,4 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (INFINIBAND, Infiniband, infiniband, factory_iface->create_device = create_device; factory_iface->get_connection_parent = get_connection_parent; factory_iface->get_connection_iface = get_connection_iface; - ) - +) diff --git a/src/devices/nm-device-infiniband.h b/src/devices/nm-device-infiniband.h index a74d07a51f..719c9cc9fd 100644 --- a/src/devices/nm-device-infiniband.h +++ b/src/devices/nm-device-infiniband.h @@ -23,15 +23,15 @@ #include "nm-device.h" -#define NM_TYPE_DEVICE_INFINIBAND (nm_device_infiniband_get_type ()) -#define NM_DEVICE_INFINIBAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfiniband)) -#define NM_DEVICE_INFINIBAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfinibandClass)) -#define NM_IS_DEVICE_INFINIBAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_INFINIBAND)) -#define NM_IS_DEVICE_INFINIBAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_INFINIBAND)) -#define NM_DEVICE_INFINIBAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfinibandClass)) +#define NM_TYPE_DEVICE_INFINIBAND (nm_device_infiniband_get_type ()) +#define NM_DEVICE_INFINIBAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfiniband)) +#define NM_DEVICE_INFINIBAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfinibandClass)) +#define NM_IS_DEVICE_INFINIBAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_INFINIBAND)) +#define NM_IS_DEVICE_INFINIBAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_INFINIBAND)) +#define NM_DEVICE_INFINIBAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_INFINIBAND, NMDeviceInfinibandClass)) -typedef NMDevice NMDeviceInfiniband; -typedef NMDeviceClass NMDeviceInfinibandClass; +typedef struct _NMDeviceInfiniband NMDeviceInfiniband; +typedef struct _NMDeviceInfinibandClass NMDeviceInfinibandClass; GType nm_device_infiniband_get_type (void); diff --git a/src/devices/nm-device-ip-tunnel.c b/src/devices/nm-device-ip-tunnel.c index 6103438244..1bb9f2f069 100644 --- a/src/devices/nm-device-ip-tunnel.c +++ b/src/devices/nm-device-ip-tunnel.c @@ -42,9 +42,21 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceIPTunnel); -G_DEFINE_TYPE (NMDeviceIPTunnel, nm_device_ip_tunnel, NM_TYPE_DEVICE) +/*****************************************************************************/ -#define NM_DEVICE_IP_TUNNEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_IP_TUNNEL, NMDeviceIPTunnelPrivate)) +NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceIPTunnel, + PROP_MODE, + PROP_PARENT, + PROP_LOCAL, + PROP_REMOTE, + PROP_TTL, + PROP_TOS, + PROP_PATH_MTU_DISCOVERY, + PROP_INPUT_KEY, + PROP_OUTPUT_KEY, + PROP_ENCAPSULATION_LIMIT, + PROP_FLOW_LABEL, +); typedef struct { NMIPTunnelMode mode; @@ -62,23 +74,19 @@ typedef struct { guint32 flow_label; } NMDeviceIPTunnelPrivate; -enum { - PROP_0, - PROP_MODE, - PROP_PARENT, - PROP_LOCAL, - PROP_REMOTE, - PROP_TTL, - PROP_TOS, - PROP_PATH_MTU_DISCOVERY, - PROP_INPUT_KEY, - PROP_OUTPUT_KEY, - PROP_ENCAPSULATION_LIMIT, - PROP_FLOW_LABEL, +struct _NMDeviceIPTunnel { + NMDevice parent; + NMDeviceIPTunnelPrivate _priv; +}; - LAST_PROP +struct _NMDeviceIPTunnelClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceIPTunnel, nm_device_ip_tunnel, NM_TYPE_DEVICE) + +#define NM_DEVICE_IP_TUNNEL_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceIPTunnel, NM_IS_DEVICE_IP_TUNNEL) + /*****************************************************************************/ static gboolean @@ -118,7 +126,6 @@ update_properties_from_ifindex (NMDevice *device, int ifindex) { NMDeviceIPTunnel *self = NM_DEVICE_IP_TUNNEL (device); NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE (self); - GObject *object = G_OBJECT (device); NMDevice *parent; int parent_ifindex; in_addr_t local4, remote4; @@ -133,23 +140,23 @@ clear: if (priv->parent || priv->parent_ifindex) { g_clear_object (&priv->parent); priv->parent_ifindex = 0; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_PARENT); + _notify (self, PROP_PARENT); } if (priv->local) { g_clear_pointer (&priv->local, g_free); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_LOCAL); + _notify (self, PROP_LOCAL); } if (priv->remote) { g_clear_pointer (&priv->remote, g_free); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_REMOTE); + _notify (self, PROP_REMOTE); } if (priv->input_key) { g_clear_pointer (&priv->input_key, g_free); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_INPUT_KEY); + _notify (self, PROP_INPUT_KEY); } if (priv->output_key) { g_clear_pointer (&priv->output_key, g_free); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_OUTPUT_KEY); + _notify (self, PROP_OUTPUT_KEY); } goto out; @@ -176,13 +183,13 @@ clear: if (g_strcmp0 (priv->input_key, key)) { g_free (priv->input_key); priv->input_key = key; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_INPUT_KEY); + _notify (self, PROP_INPUT_KEY); } else g_free (key); } else { if (priv->input_key) { g_clear_pointer (&priv->input_key, g_free); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_INPUT_KEY); + _notify (self, PROP_INPUT_KEY); } } @@ -191,13 +198,13 @@ clear: if (g_strcmp0 (priv->output_key, key)) { g_free (priv->output_key); priv->output_key = key; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_OUTPUT_KEY); + _notify (self, PROP_OUTPUT_KEY); } else g_free (key); } else { if (priv->output_key) { g_clear_pointer (&priv->output_key, g_free); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_OUTPUT_KEY); + _notify (self, PROP_OUTPUT_KEY); } } } else if (priv->mode == NM_IP_TUNNEL_MODE_SIT) { @@ -256,7 +263,7 @@ clear: parent = nm_manager_get_device_by_ifindex (nm_manager_get (), parent_ifindex); if (parent) priv->parent = g_object_ref (parent); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_PARENT); + _notify (self, PROP_PARENT); } if (priv->addr_family == AF_INET) { @@ -264,28 +271,28 @@ clear: g_clear_pointer (&priv->local, g_free); if (local4) priv->local = g_strdup (nm_utils_inet4_ntop (local4, NULL)); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_LOCAL); + _notify (self, PROP_LOCAL); } if (!address_equal_pn (AF_INET, priv->remote, &remote4)) { g_clear_pointer (&priv->remote, g_free); if (remote4) priv->remote = g_strdup (nm_utils_inet4_ntop (remote4, NULL)); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_REMOTE); + _notify (self, PROP_REMOTE); } } else { if (!address_equal_pn (AF_INET6, priv->local, &local6)) { g_clear_pointer (&priv->local, g_free); if (memcmp (&local6, &in6addr_any, sizeof (in6addr_any))) priv->local = g_strdup (nm_utils_inet6_ntop (&local6, NULL)); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_LOCAL); + _notify (self, PROP_LOCAL); } if (!address_equal_pn (AF_INET6, priv->remote, &remote6)) { g_clear_pointer (&priv->remote, g_free); if (memcmp (&remote6, &in6addr_any, sizeof (in6addr_any))) priv->remote = g_strdup (nm_utils_inet6_ntop (&remote6, NULL)); - g_object_notify (object, NM_DEVICE_IP_TUNNEL_REMOTE); + _notify (self, PROP_REMOTE); } } @@ -293,27 +300,27 @@ out: if (priv->ttl != ttl) { priv->ttl = ttl; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_TTL); + _notify (self, PROP_TTL); } if (priv->tos != tos) { priv->tos = tos; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_TOS); + _notify (self, PROP_TOS); } if (priv->path_mtu_discovery != pmtud) { priv->path_mtu_discovery = pmtud; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_PATH_MTU_DISCOVERY); + _notify (self, PROP_PATH_MTU_DISCOVERY); } if (priv->encap_limit != encap_limit) { priv->encap_limit = encap_limit; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_ENCAPSULATION_LIMIT); + _notify (self, PROP_ENCAPSULATION_LIMIT); } if (priv->flow_label != flow_label) { priv->flow_label = flow_label; - g_object_notify (object, NM_DEVICE_IP_TUNNEL_FLOW_LABEL); + _notify (self, PROP_FLOW_LABEL); } } @@ -585,25 +592,6 @@ tunnel_mode_to_link_type (NMIPTunnelMode tunnel_mode) /*****************************************************************************/ -static void -nm_device_ip_tunnel_init (NMDeviceIPTunnel *self) -{ -} - -static void -constructed (GObject *object) -{ - NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE (object); - - if ( priv->mode == NM_IP_TUNNEL_MODE_IPIP6 - || priv->mode == NM_IP_TUNNEL_MODE_IP6IP6) - priv->addr_family = AF_INET6; - else - priv->addr_family = AF_INET; - - G_OBJECT_CLASS (nm_device_ip_tunnel_parent_class)->constructed (object); -} - static gboolean create_and_realize (NMDevice *device, NMConnection *connection, @@ -804,11 +792,13 @@ unrealize_notify (NMDevice *device) update_properties_from_ifindex (device, 0); } +/*****************************************************************************/ + static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE (object); + NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE ((NMDeviceIPTunnel *) object); NMDevice *parent; switch (prop_id) { @@ -854,9 +844,9 @@ get_property (GObject *object, guint prop_id, static void set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) + const GValue *value, GParamSpec *pspec) { - NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE (object); + NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE ((NMDeviceIPTunnel *) object); switch (prop_id) { case PROP_MODE: @@ -867,14 +857,33 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_device_ip_tunnel_init (NMDeviceIPTunnel *self) +{ +} + +static void +constructed (GObject *object) +{ + NMDeviceIPTunnelPrivate *priv = NM_DEVICE_IP_TUNNEL_GET_PRIVATE ((NMDeviceIPTunnel *) object); + + if ( priv->mode == NM_IP_TUNNEL_MODE_IPIP6 + || priv->mode == NM_IP_TUNNEL_MODE_IP6IP6) + priv->addr_family = AF_INET6; + else + priv->addr_family = AF_INET; + + G_OBJECT_CLASS (nm_device_ip_tunnel_parent_class)->constructed (object); +} + static void nm_device_ip_tunnel_class_init (NMDeviceIPTunnelClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMDeviceIPTunnelPrivate)); - object_class->constructed = constructed; object_class->get_property = get_property; object_class->set_property = set_property; @@ -896,90 +905,80 @@ nm_device_ip_tunnel_class_init (NMDeviceIPTunnelClass *klass) NM_LINK_TYPE_IPIP, NM_LINK_TYPE_SIT); - /* properties */ - g_object_class_install_property - (object_class, PROP_MODE, - g_param_spec_uint (NM_DEVICE_IP_TUNNEL_MODE, "", "", - 0, G_MAXUINT, 0, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - /* properties */ - g_object_class_install_property - (object_class, PROP_PARENT, - g_param_spec_string (NM_DEVICE_IP_TUNNEL_PARENT, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_LOCAL, - g_param_spec_string (NM_DEVICE_IP_TUNNEL_LOCAL, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_REMOTE, - g_param_spec_string (NM_DEVICE_IP_TUNNEL_REMOTE, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_TTL, - g_param_spec_uchar (NM_DEVICE_IP_TUNNEL_TTL, "", "", - 0, 255, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_TOS, - g_param_spec_uchar (NM_DEVICE_IP_TUNNEL_TOS, "", "", - 0, 255, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PATH_MTU_DISCOVERY, - g_param_spec_boolean (NM_DEVICE_IP_TUNNEL_PATH_MTU_DISCOVERY, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_INPUT_KEY, - g_param_spec_string (NM_DEVICE_IP_TUNNEL_INPUT_KEY, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_OUTPUT_KEY, - g_param_spec_string (NM_DEVICE_IP_TUNNEL_OUTPUT_KEY, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ENCAPSULATION_LIMIT, - g_param_spec_uchar (NM_DEVICE_IP_TUNNEL_ENCAPSULATION_LIMIT, "", "", - 0, 255, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_FLOW_LABEL, - g_param_spec_uint (NM_DEVICE_IP_TUNNEL_FLOW_LABEL, "", "", - 0, (1 << 20) - 1, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_MODE] = + g_param_spec_uint (NM_DEVICE_IP_TUNNEL_MODE, "", "", + 0, G_MAXUINT, 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PARENT] = + g_param_spec_string (NM_DEVICE_IP_TUNNEL_PARENT, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_LOCAL] = + g_param_spec_string (NM_DEVICE_IP_TUNNEL_LOCAL, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_REMOTE] = + g_param_spec_string (NM_DEVICE_IP_TUNNEL_REMOTE, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_TTL] = + g_param_spec_uchar (NM_DEVICE_IP_TUNNEL_TTL, "", "", + 0, 255, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_TOS] = + g_param_spec_uchar (NM_DEVICE_IP_TUNNEL_TOS, "", "", + 0, 255, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PATH_MTU_DISCOVERY] = + g_param_spec_boolean (NM_DEVICE_IP_TUNNEL_PATH_MTU_DISCOVERY, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_INPUT_KEY] = + g_param_spec_string (NM_DEVICE_IP_TUNNEL_INPUT_KEY, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_OUTPUT_KEY] = + g_param_spec_string (NM_DEVICE_IP_TUNNEL_OUTPUT_KEY, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ENCAPSULATION_LIMIT] = + g_param_spec_uchar (NM_DEVICE_IP_TUNNEL_ENCAPSULATION_LIMIT, "", "", + 0, 255, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_FLOW_LABEL] = + g_param_spec_uint (NM_DEVICE_IP_TUNNEL_FLOW_LABEL, "", "", + 0, (1 << 20) - 1, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_IPTUNNEL_SKELETON, NULL); } + /*****************************************************************************/ #define NM_TYPE_IP_TUNNEL_FACTORY (nm_ip_tunnel_factory_get_type ()) @@ -1057,4 +1056,4 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (IP_TUNNEL, IPTunnel, ip_tunnel, factory_iface->create_device = create_device; factory_iface->get_connection_parent = get_connection_parent; factory_iface->get_connection_iface = get_connection_iface; -) +); diff --git a/src/devices/nm-device-ip-tunnel.h b/src/devices/nm-device-ip-tunnel.h index 94cc737526..5027a27b07 100644 --- a/src/devices/nm-device-ip-tunnel.h +++ b/src/devices/nm-device-ip-tunnel.h @@ -43,13 +43,8 @@ #define NM_DEVICE_IP_TUNNEL_ENCAPSULATION_LIMIT "encapsulation-limit" #define NM_DEVICE_IP_TUNNEL_FLOW_LABEL "flow-label" -typedef struct { - NMDevice parent; -} NMDeviceIPTunnel; - -typedef struct { - NMDeviceClass parent; -} NMDeviceIPTunnelClass; +typedef struct _NMDeviceIPTunnel NMDeviceIPTunnel; +typedef struct _NMDeviceIPTunnelClass NMDeviceIPTunnelClass; GType nm_device_ip_tunnel_get_type (void); diff --git a/src/devices/nm-device-macvlan.c b/src/devices/nm-device-macvlan.c index c6956abd5e..6c01a9b6a6 100644 --- a/src/devices/nm-device-macvlan.c +++ b/src/devices/nm-device-macvlan.c @@ -41,9 +41,14 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceMacvlan); -G_DEFINE_TYPE (NMDeviceMacvlan, nm_device_macvlan, NM_TYPE_DEVICE) +/*****************************************************************************/ -#define NM_DEVICE_MACVLAN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_MACVLAN, NMDeviceMacvlanPrivate)) +NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceMacvlan, + PROP_PARENT, + PROP_MODE, + PROP_NO_PROMISC, + PROP_TAP, +); typedef struct { int parent_ifindex; @@ -52,16 +57,21 @@ typedef struct { NMPlatformLnkMacvlan props; } NMDeviceMacvlanPrivate; -enum { - PROP_0, - PROP_PARENT, - PROP_MODE, - PROP_NO_PROMISC, - PROP_TAP, +struct _NMDeviceMacvlan { + NMDevice parent; + NMDeviceMacvlanPrivate _priv; +}; - LAST_PROP +struct _NMDeviceMacvlanClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceMacvlan, nm_device_macvlan, NM_TYPE_DEVICE) + +#define NM_DEVICE_MACVLAN_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceMacvlan, NM_IS_DEVICE_MACVLAN) + +/*****************************************************************************/ + static int modes[][2] = { { NM_SETTING_MACVLAN_MODE_VEPA, MACVLAN_MODE_VEPA }, { NM_SETTING_MACVLAN_MODE_BRIDGE, MACVLAN_MODE_BRIDGE }, @@ -158,17 +168,17 @@ nm_device_macvlan_set_parent (NMDeviceMacvlan *self, NMDevice *parent) } /* Recheck availability now that the parent has changed */ - nm_device_queue_recheck_available (self, + nm_device_queue_recheck_available (device, NM_DEVICE_STATE_REASON_PARENT_CHANGED, NM_DEVICE_STATE_REASON_PARENT_CHANGED); - g_object_notify (G_OBJECT (device), NM_DEVICE_MACVLAN_PARENT); + _notify (self, PROP_PARENT); } static void update_properties (NMDevice *device) { NMDeviceMacvlan *self = NM_DEVICE_MACVLAN (device); - NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (device); + NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (self); GObject *object = G_OBJECT (device); const NMPlatformLnkMacvlan *props; const NMPlatformLink *plink; @@ -191,9 +201,9 @@ update_properties (NMDevice *device) nm_device_macvlan_set_parent (self, parent); } if (priv->props.mode != props->mode) - g_object_notify (object, NM_DEVICE_MACVLAN_MODE); + _notify (self, PROP_MODE); if (priv->props.no_promisc != props->no_promisc) - g_object_notify (object, NM_DEVICE_MACVLAN_NO_PROMISC); + _notify (self, PROP_NO_PROMISC); priv->parent_ifindex = plink->parent; priv->props = *props; @@ -272,7 +282,7 @@ get_generic_capabilities (NMDevice *dev) static gboolean is_available (NMDevice *device, NMDeviceCheckDevAvailableFlags flags) { - if (!NM_DEVICE_MACVLAN_GET_PRIVATE (device)->parent) + if (!NM_DEVICE_MACVLAN_GET_PRIVATE ((NMDeviceMacvlan *) device)->parent) return FALSE; return NM_DEVICE_CLASS (nm_device_macvlan_parent_class)->is_available (device, flags); @@ -343,7 +353,7 @@ match_parent (NMDeviceMacvlan *self, const char *parent) static gboolean match_hwaddr (NMDevice *device, NMConnection *connection, gboolean fail_if_no_hwaddr) { - NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (device); + NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE ((NMDeviceMacvlan *) device); NMSettingWired *s_wired; const char *setting_mac; const char *parent_mac; @@ -366,7 +376,7 @@ match_hwaddr (NMDevice *device, NMConnection *connection, gboolean fail_if_no_hw static gboolean check_connection_compatible (NMDevice *device, NMConnection *connection) { - NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (device); + NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE ((NMDeviceMacvlan *) device); NMSettingMacvlan *s_macvlan; const char *parent = NULL; @@ -445,7 +455,7 @@ complete_connection (NMDevice *device, static void update_connection (NMDevice *device, NMConnection *connection) { - NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (device); + NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE ((NMDeviceMacvlan *) device); NMSettingMacvlan *s_macvlan = nm_connection_get_setting_macvlan (connection); const char *setting_parent, *new_parent; int new_mode; @@ -530,15 +540,10 @@ realize_start_notify (NMDevice *device, const NMPlatformLink *plink) /*****************************************************************************/ static void -nm_device_macvlan_init (NMDeviceMacvlan *self) -{ -} - -static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (object); + NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE ((NMDeviceMacvlan *) object); NMDevice *parent; switch (prop_id) { @@ -566,9 +571,9 @@ get_property (GObject *object, guint prop_id, static void set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) + const GValue *value, GParamSpec *pspec) { - NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE (object); + NMDeviceMacvlanPrivate *priv = NM_DEVICE_MACVLAN_GET_PRIVATE ((NMDeviceMacvlan *) object); switch (prop_id) { case PROP_TAP: @@ -579,6 +584,13 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_device_macvlan_init (NMDeviceMacvlan *self) +{ +} + static void dispose (GObject *object) { @@ -593,8 +605,6 @@ nm_device_macvlan_class_init (NMDeviceMacvlanClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMDeviceMacvlanPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NULL, NM_LINK_TYPE_MACVLAN, NM_LINK_TYPE_MACVTAP) object_class->dispose = dispose; @@ -614,35 +624,32 @@ nm_device_macvlan_class_init (NMDeviceMacvlanClass *klass) device_class->realize_start_notify = realize_start_notify; device_class->update_connection = update_connection; - /* properties */ - g_object_class_install_property - (object_class, PROP_PARENT, - g_param_spec_string (NM_DEVICE_MACVLAN_PARENT, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_MODE, - g_param_spec_string (NM_DEVICE_MACVLAN_MODE, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_NO_PROMISC, - g_param_spec_boolean (NM_DEVICE_MACVLAN_NO_PROMISC, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_TAP, - g_param_spec_boolean (NM_DEVICE_MACVLAN_TAP, "", "", - FALSE, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_PARENT] = + g_param_spec_string (NM_DEVICE_MACVLAN_PARENT, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_MODE] = + g_param_spec_string (NM_DEVICE_MACVLAN_MODE, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_NO_PROMISC] = + g_param_spec_boolean (NM_DEVICE_MACVLAN_NO_PROMISC, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_TAP] = + g_param_spec_boolean (NM_DEVICE_MACVLAN_TAP, "", "", + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_MACVLAN_SKELETON, @@ -735,5 +742,4 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (MACVLAN, Macvlan, macvlan, factory_iface->create_device = create_device; factory_iface->get_connection_parent = get_connection_parent; factory_iface->get_connection_iface = get_connection_iface; - ) - +); diff --git a/src/devices/nm-device-macvlan.h b/src/devices/nm-device-macvlan.h index 5756f696fd..13dac7d792 100644 --- a/src/devices/nm-device-macvlan.h +++ b/src/devices/nm-device-macvlan.h @@ -35,8 +35,8 @@ #define NM_DEVICE_MACVLAN_NO_PROMISC "no-promisc" #define NM_DEVICE_MACVLAN_TAP "tap" -typedef NMDevice NMDeviceMacvlan; -typedef NMDeviceClass NMDeviceMacvlanClass; +typedef struct _NMDeviceMacvlan NMDeviceMacvlan; +typedef struct _NMDeviceMacvlanClass NMDeviceMacvlanClass; GType nm_device_macvlan_get_type (void); diff --git a/src/devices/nm-device-tun.c b/src/devices/nm-device-tun.c index 3bc5f2f95e..1870b5fdf4 100644 --- a/src/devices/nm-device-tun.c +++ b/src/devices/nm-device-tun.c @@ -20,12 +20,13 @@ #include "nm-default.h" +#include "nm-device-tun.h" + #include <stdlib.h> #include <string.h> #include <sys/types.h> #include "nm-act-request.h" -#include "nm-device-tun.h" #include "nm-device-private.h" #include "nm-ip4-config.h" #include "nm-platform.h" @@ -38,27 +39,37 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceTun); -G_DEFINE_TYPE (NMDeviceTun, nm_device_tun, NM_TYPE_DEVICE) - -#define NM_DEVICE_TUN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_TUN, NMDeviceTunPrivate)) - -typedef struct { - NMPlatformTunProperties props; - const char *mode; -} NMDeviceTunPrivate; +/*****************************************************************************/ -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceTun, PROP_OWNER, PROP_GROUP, PROP_MODE, PROP_NO_PI, PROP_VNET_HDR, PROP_MULTI_QUEUE, +); - LAST_PROP +typedef struct { + NMPlatformTunProperties props; + const char *mode; +} NMDeviceTunPrivate; + +struct _NMDeviceTun { + NMDevice parent; + NMDeviceTunPrivate _priv; }; +struct _NMDeviceTunClass { + NMDeviceClass parent; +}; + +G_DEFINE_TYPE (NMDeviceTun, nm_device_tun, NM_TYPE_DEVICE) + +#define NM_DEVICE_TUN_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceTun, NM_IS_DEVICE_TUN) + +/*****************************************************************************/ + static void reload_tun_properties (NMDeviceTun *self) { @@ -89,15 +100,15 @@ reload_tun_properties (NMDeviceTun *self) g_object_freeze_notify (object); if (priv->props.owner != props.owner) - g_object_notify (object, NM_DEVICE_TUN_OWNER); + _notify (self, PROP_OWNER); if (priv->props.group != props.group) - g_object_notify (object, NM_DEVICE_TUN_GROUP); + _notify (self, PROP_GROUP); if (priv->props.no_pi != props.no_pi) - g_object_notify (object, NM_DEVICE_TUN_NO_PI); + _notify (self, PROP_NO_PI); if (priv->props.vnet_hdr != props.vnet_hdr) - g_object_notify (object, NM_DEVICE_TUN_VNET_HDR); + _notify (self, PROP_VNET_HDR); if (priv->props.multi_queue != props.multi_queue) - g_object_notify (object, NM_DEVICE_TUN_MULTI_QUEUE); + _notify (self, PROP_MULTI_QUEUE); memcpy (&priv->props, &props, sizeof (NMPlatformTunProperties)); @@ -244,7 +255,7 @@ static void realize_start_notify (NMDevice *device, const NMPlatformLink *plink) { NM_DEVICE_CLASS (nm_device_tun_parent_class)->realize_start_notify (device, plink); - reload_tun_properties (device); + reload_tun_properties ((NMDeviceTun *) device); } static gboolean @@ -332,27 +343,19 @@ unrealize_notify (NMDevice *device) { NMDeviceTun *self = NM_DEVICE_TUN (device); NMDeviceTunPrivate *priv = NM_DEVICE_TUN_GET_PRIVATE (self); - GParamSpec **properties; - guint n_properties, i; + guint i; NM_DEVICE_CLASS (nm_device_tun_parent_class)->unrealize_notify (device); memset (&priv->props, 0, sizeof (NMPlatformTunProperties)); - properties = g_object_class_list_properties (G_OBJECT_GET_CLASS (self), &n_properties); - for (i = 0; i < n_properties; i++) - g_object_notify_by_pspec (G_OBJECT (self), properties[i]); - g_free (properties); + for (i = 1; i < _PROPERTY_ENUMS_LAST; i++) + g_object_notify_by_pspec ((GObject *) self, obj_properties[i]); } /*****************************************************************************/ static void -nm_device_tun_init (NMDeviceTun *self) -{ -} - -static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { @@ -411,21 +414,25 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_device_tun_init (NMDeviceTun *self) +{ +} + static void nm_device_tun_class_init (NMDeviceTunClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMDeviceTunPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NULL, NM_LINK_TYPE_TUN, NM_LINK_TYPE_TAP) object_class->get_property = get_property; object_class->set_property = set_property; device_class->connection_type = NM_SETTING_TUN_SETTING_NAME; - device_class->link_changed = link_changed; device_class->complete_connection = complete_connection; device_class->check_connection_compatible = check_connection_compatible; @@ -437,42 +444,38 @@ nm_device_tun_class_init (NMDeviceTunClass *klass) device_class->act_stage1_prepare = act_stage1_prepare; device_class->ip4_config_pre_commit = ip4_config_pre_commit; - /* properties */ - g_object_class_install_property - (object_class, PROP_OWNER, - g_param_spec_int64 (NM_DEVICE_TUN_OWNER, "", "", - -1, G_MAXUINT32, -1, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_GROUP, - g_param_spec_int64 (NM_DEVICE_TUN_GROUP, "", "", - -1, G_MAXUINT32, -1, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_MODE, - g_param_spec_string (NM_DEVICE_TUN_MODE, "", "", - "tun", - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_NO_PI, - g_param_spec_boolean (NM_DEVICE_TUN_NO_PI, "", "", - FALSE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_VNET_HDR, - g_param_spec_boolean (NM_DEVICE_TUN_VNET_HDR, "", "", - FALSE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_MULTI_QUEUE, - g_param_spec_boolean (NM_DEVICE_TUN_MULTI_QUEUE, "", "", - FALSE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_OWNER] = + g_param_spec_int64 (NM_DEVICE_TUN_OWNER, "", "", + -1, G_MAXUINT32, -1, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_GROUP] = + g_param_spec_int64 (NM_DEVICE_TUN_GROUP, "", "", + -1, G_MAXUINT32, -1, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_MODE] = + g_param_spec_string (NM_DEVICE_TUN_MODE, "", "", + "tun", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_NO_PI] = + g_param_spec_boolean (NM_DEVICE_TUN_NO_PI, "", "", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_VNET_HDR] = + g_param_spec_boolean (NM_DEVICE_TUN_VNET_HDR, "", "", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_MULTI_QUEUE] = + g_param_spec_boolean (NM_DEVICE_TUN_MULTI_QUEUE, "", "", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_TUN_SKELETON, @@ -530,5 +533,5 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (TUN, Tun, tun, NM_DEVICE_FACTORY_DECLARE_LINK_TYPES (NM_LINK_TYPE_TUN, NM_LINK_TYPE_TAP) NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES (NM_SETTING_TUN_SETTING_NAME), factory_iface->create_device = create_device; - ) +); diff --git a/src/devices/nm-device-tun.h b/src/devices/nm-device-tun.h index d62b0c373e..b0d309bb06 100644 --- a/src/devices/nm-device-tun.h +++ b/src/devices/nm-device-tun.h @@ -37,8 +37,8 @@ #define NM_DEVICE_TUN_VNET_HDR "vnet-hdr" #define NM_DEVICE_TUN_MULTI_QUEUE "multi-queue" -typedef NMDevice NMDeviceTun; -typedef NMDeviceClass NMDeviceTunClass; +typedef struct _NMDeviceTun NMDeviceTun; +typedef struct _NMDeviceTunClass NMDeviceTunClass; GType nm_device_tun_get_type (void); diff --git a/src/devices/nm-device-veth.c b/src/devices/nm-device-veth.c index 7f28bfbc8f..33078d786c 100644 --- a/src/devices/nm-device-veth.c +++ b/src/devices/nm-device-veth.c @@ -51,7 +51,7 @@ struct _NMDeviceVeth { }; struct _NMDeviceVethClass { - NMDeviceEthernetClass parent_class; + NMDeviceEthernetClass parent; }; NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceVeth, diff --git a/src/devices/nm-device-vlan.c b/src/devices/nm-device-vlan.c index 5ceedba2fa..1c2f6dd70a 100644 --- a/src/devices/nm-device-vlan.c +++ b/src/devices/nm-device-vlan.c @@ -43,9 +43,12 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceVlan); -G_DEFINE_TYPE (NMDeviceVlan, nm_device_vlan, NM_TYPE_DEVICE) +/*****************************************************************************/ -#define NM_DEVICE_VLAN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_VLAN, NMDeviceVlanPrivate)) +NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceVlan, + PROP_PARENT, + PROP_VLAN_ID, +); typedef struct { NMDevice *parent; @@ -54,14 +57,19 @@ typedef struct { guint vlan_id; } NMDeviceVlanPrivate; -enum { - PROP_0, - PROP_PARENT, - PROP_VLAN_ID, +struct _NMDeviceVlan { + NMDevice parent; + NMDeviceVlanPrivate _priv; +}; - LAST_PROP +struct _NMDeviceVlanClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceVlan, nm_device_vlan, NM_TYPE_DEVICE) + +#define NM_DEVICE_VLAN_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceVlan, NM_IS_DEVICE_VLAN) + /*****************************************************************************/ static void @@ -91,18 +99,18 @@ parent_hwaddr_maybe_changed (NMDevice *parent, NMSettingIPConfig *s_ip6; /* Never touch assumed devices */ - if (nm_device_uses_assumed_connection (self)) + if (nm_device_uses_assumed_connection ((NMDevice *) self)) return; - connection = nm_device_get_applied_connection (self); + connection = nm_device_get_applied_connection ((NMDevice *) self); if (!connection) return; /* Update the VLAN MAC only if configuration does not specify one */ - if (nm_device_hw_addr_is_explict (self)) + if (nm_device_hw_addr_is_explict ((NMDevice *) self)) return; - old_mac = nm_device_get_hw_address (self); + old_mac = nm_device_get_hw_address ((NMDevice *) self); new_mac = nm_device_get_hw_address (parent); if (nm_streq0 (old_mac, new_mac)) return; @@ -110,7 +118,7 @@ parent_hwaddr_maybe_changed (NMDevice *parent, _LOGD (LOGD_VLAN, "parent hardware address changed to %s%s%s", NM_PRINT_FMT_QUOTE_STRING (new_mac)); if (new_mac) { - nm_device_hw_addr_set (self, new_mac, "vlan-parent"); + nm_device_hw_addr_set ((NMDevice *) self, new_mac, "vlan-parent"); /* When changing the hw address the interface is taken down, * removing the IPv6 configuration; reapply it. */ @@ -152,10 +160,10 @@ nm_device_vlan_set_parent (NMDeviceVlan *self, NMDevice *parent) } /* Recheck availability now that the parent has changed */ - nm_device_queue_recheck_available (self, + nm_device_queue_recheck_available (device, NM_DEVICE_STATE_REASON_PARENT_CHANGED, NM_DEVICE_STATE_REASON_PARENT_CHANGED); - g_object_notify (G_OBJECT (device), NM_DEVICE_VLAN_PARENT); + _notify (self, PROP_PARENT); } static void @@ -170,7 +178,7 @@ update_properties (NMDevice *device) g_return_if_fail (NM_IS_DEVICE_VLAN (device)); - priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device); ifindex = nm_device_get_ifindex (device); @@ -188,7 +196,7 @@ update_properties (NMDevice *device) vlan_id = plnk ? plnk->id : 0; if (vlan_id != priv->vlan_id) { priv->vlan_id = vlan_id; - g_object_notify ((GObject *) device, NM_DEVICE_VLAN_ID); + _notify ((NMDeviceVlan *) device, PROP_VLAN_ID); } g_object_thaw_notify ((GObject *) device); @@ -209,7 +217,7 @@ create_and_realize (NMDevice *device, const NMPlatformLink **out_plink, GError **error) { - NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device); const char *iface = nm_device_get_iface (device); NMSettingVlan *s_vlan; int parent_ifindex; @@ -257,7 +265,7 @@ create_and_realize (NMDevice *device, nm_device_vlan_set_parent (NM_DEVICE_VLAN (device), parent); if (vlan_id != priv->vlan_id) { priv->vlan_id = vlan_id; - g_object_notify ((GObject *) device, NM_DEVICE_VLAN_ID); + _notify ((NMDeviceVlan *) device, PROP_VLAN_ID); } return TRUE; @@ -268,8 +276,8 @@ unrealize_notify (NMDevice *device) { NM_DEVICE_CLASS (nm_device_vlan_parent_class)->unrealize_notify (device); - NM_DEVICE_VLAN_GET_PRIVATE (device)->vlan_id = 0; - g_object_notify (G_OBJECT (device), NM_DEVICE_VLAN_ID); + NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device)->vlan_id = 0; + _notify ((NMDeviceVlan *) device, PROP_VLAN_ID); nm_device_vlan_set_parent (NM_DEVICE_VLAN (device), NULL); } @@ -287,7 +295,7 @@ get_generic_capabilities (NMDevice *dev) static gboolean is_available (NMDevice *device, NMDeviceCheckDevAvailableFlags flags) { - if (!NM_DEVICE_VLAN_GET_PRIVATE (device)->parent) + if (!NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device)->parent) return FALSE; return NM_DEVICE_CLASS (nm_device_vlan_parent_class)->is_available (device, flags); @@ -373,7 +381,7 @@ match_hwaddr (NMDevice *device, NMConnection *connection, gboolean fail_if_no_hw if (!setting_mac) return !fail_if_no_hwaddr; - priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device); if (!priv->parent) return !fail_if_no_hwaddr; @@ -384,7 +392,7 @@ match_hwaddr (NMDevice *device, NMConnection *connection, gboolean fail_if_no_hw static gboolean check_connection_compatible (NMDevice *device, NMConnection *connection) { - NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device); NMSettingVlan *s_vlan; const char *parent = NULL; @@ -468,7 +476,7 @@ complete_connection (NMDevice *device, static void update_connection (NMDevice *device, NMConnection *connection) { - NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) device); NMSettingVlan *s_vlan = nm_connection_get_setting_vlan (connection); int ifindex = nm_device_get_ifindex (device); const char *setting_parent, *new_parent; @@ -534,7 +542,7 @@ update_connection (NMDevice *device, NMConnection *connection) static NMActStageReturn act_stage1_prepare (NMDevice *dev, NMDeviceStateReason *reason) { - NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (dev); + NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) dev); NMSettingVlan *s_vlan; NMActStageReturn ret; @@ -602,15 +610,10 @@ ip4_config_pre_commit (NMDevice *device, NMIP4Config *config) /*****************************************************************************/ static void -nm_device_vlan_init (NMDeviceVlan * self) -{ -} - -static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (object); + NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE ((NMDeviceVlan *) object); switch (prop_id) { case PROP_PARENT: @@ -625,11 +628,11 @@ get_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +nm_device_vlan_init (NMDeviceVlan * self) { - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } static void @@ -648,11 +651,7 @@ nm_device_vlan_class_init (NMDeviceVlanClass *klass) NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_VLAN_SETTING_NAME, NM_LINK_TYPE_VLAN) - g_type_class_add_private (object_class, sizeof (NMDeviceVlanPrivate)); - - /* virtual methods */ object_class->get_property = get_property; - object_class->set_property = set_property; object_class->dispose = dispose; parent_class->create_and_realize = create_and_realize; @@ -669,18 +668,18 @@ nm_device_vlan_class_init (NMDeviceVlanClass *klass) parent_class->complete_connection = complete_connection; parent_class->update_connection = update_connection; - /* properties */ - g_object_class_install_property - (object_class, PROP_PARENT, - g_param_spec_string (NM_DEVICE_VLAN_PARENT, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - g_object_class_install_property - (object_class, PROP_VLAN_ID, - g_param_spec_uint (NM_DEVICE_VLAN_ID, "", "", - 0, 4095, 0, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_PARENT] = + g_param_spec_string (NM_DEVICE_VLAN_PARENT, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + obj_properties[PROP_VLAN_ID] = + g_param_spec_uint (NM_DEVICE_VLAN_ID, "", "", + 0, 4095, 0, + G_PARAM_READABLE + | G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_VLAN_SKELETON, @@ -765,5 +764,4 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (VLAN, Vlan, vlan, factory_iface->create_device = create_device; factory_iface->get_connection_parent = get_connection_parent; factory_iface->get_connection_iface = get_connection_iface; - ) - +); diff --git a/src/devices/nm-device-vlan.h b/src/devices/nm-device-vlan.h index 71ca80307a..f587f4f60b 100644 --- a/src/devices/nm-device-vlan.h +++ b/src/devices/nm-device-vlan.h @@ -40,8 +40,8 @@ typedef enum { #define NM_DEVICE_VLAN_PARENT "parent" #define NM_DEVICE_VLAN_ID "vlan-id" -typedef NMDevice NMDeviceVlan; -typedef NMDeviceClass NMDeviceVlanClass; +typedef struct _NMDeviceVlan NMDeviceVlan; +typedef struct _NMDeviceVlanClass NMDeviceVlanClass; GType nm_device_vlan_get_type (void); diff --git a/src/devices/nm-device-vxlan.c b/src/devices/nm-device-vxlan.c index aa7fc98b32..583cb6677b 100644 --- a/src/devices/nm-device-vxlan.c +++ b/src/devices/nm-device-vxlan.c @@ -40,17 +40,9 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceVxlan); -G_DEFINE_TYPE (NMDeviceVxlan, nm_device_vxlan, NM_TYPE_DEVICE) - -#define NM_DEVICE_VXLAN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_VXLAN, NMDeviceVxlanPrivate)) - -typedef struct { - NMDevice *parent; - NMPlatformLnkVxlan props; -} NMDeviceVxlanPrivate; +/*****************************************************************************/ -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceVxlan, PROP_PARENT, PROP_ID, PROP_LOCAL, @@ -67,17 +59,33 @@ enum { PROP_RSC, PROP_L2MISS, PROP_L3MISS, +); - LAST_PROP +typedef struct { + NMDevice *parent; + NMPlatformLnkVxlan props; +} NMDeviceVxlanPrivate; + +struct _NMDeviceVxlan { + NMDevice parent; + NMDeviceVxlanPrivate _priv; +}; + +struct _NMDeviceVxlanClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceVxlan, nm_device_vxlan, NM_TYPE_DEVICE) + +#define NM_DEVICE_VXLAN_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceVxlan, NM_IS_DEVICE_VXLAN) + /*****************************************************************************/ static void update_properties (NMDevice *device) { NMDeviceVxlan *self = NM_DEVICE_VXLAN (device); - NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (device); + NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (self); GObject *object = G_OBJECT (device); const NMPlatformLnkVxlan *props; NMDevice *parent; @@ -95,42 +103,42 @@ update_properties (NMDevice *device) parent = nm_manager_get_device_by_ifindex (nm_manager_get (), props->parent_ifindex); if (parent) priv->parent = g_object_ref (parent); - g_object_notify (object, NM_DEVICE_VXLAN_PARENT); + _notify (self, PROP_PARENT); } if (priv->props.id != props->id) - g_object_notify (object, NM_DEVICE_VXLAN_ID); + _notify (self, PROP_ID); if (priv->props.local != props->local) - g_object_notify (object, NM_DEVICE_VXLAN_LOCAL); + _notify (self, PROP_LOCAL); if (memcmp (&priv->props.local6, &props->local6, sizeof (props->local6)) != 0) - g_object_notify (object, NM_DEVICE_VXLAN_LOCAL); + _notify (self, PROP_LOCAL); if (priv->props.group != props->group) - g_object_notify (object, NM_DEVICE_VXLAN_GROUP); + _notify (self, PROP_GROUP); if (memcmp (&priv->props.group6, &props->group6, sizeof (props->group6)) != 0) - g_object_notify (object, NM_DEVICE_VXLAN_GROUP); + _notify (self, PROP_GROUP); if (priv->props.tos != props->tos) - g_object_notify (object, NM_DEVICE_VXLAN_TOS); + _notify (self, PROP_TOS); if (priv->props.ttl != props->ttl) - g_object_notify (object, NM_DEVICE_VXLAN_TTL); + _notify (self, PROP_TTL); if (priv->props.learning != props->learning) - g_object_notify (object, NM_DEVICE_VXLAN_LEARNING); + _notify (self, PROP_LEARNING); if (priv->props.ageing != props->ageing) - g_object_notify (object, NM_DEVICE_VXLAN_AGEING); + _notify (self, PROP_AGEING); if (priv->props.limit != props->limit) - g_object_notify (object, NM_DEVICE_VXLAN_LIMIT); + _notify (self, PROP_LIMIT); if (priv->props.src_port_min != props->src_port_min) - g_object_notify (object, NM_DEVICE_VXLAN_SRC_PORT_MIN); + _notify (self, PROP_SRC_PORT_MIN); if (priv->props.src_port_max != props->src_port_max) - g_object_notify (object, NM_DEVICE_VXLAN_SRC_PORT_MAX); + _notify (self, PROP_SRC_PORT_MAX); if (priv->props.dst_port != props->dst_port) - g_object_notify (object, NM_DEVICE_VXLAN_DST_PORT); + _notify (self, PROP_DST_PORT); if (priv->props.proxy != props->proxy) - g_object_notify (object, NM_DEVICE_VXLAN_PROXY); + _notify (self, PROP_PROXY); if (priv->props.rsc != props->rsc) - g_object_notify (object, NM_DEVICE_VXLAN_RSC); + _notify (self, PROP_RSC); if (priv->props.l2miss != props->l2miss) - g_object_notify (object, NM_DEVICE_VXLAN_L2MISS); + _notify (self, PROP_L2MISS); if (priv->props.l3miss != props->l3miss) - g_object_notify (object, NM_DEVICE_VXLAN_L3MISS); + _notify (self, PROP_L3MISS); priv->props = *props; @@ -165,17 +173,14 @@ unrealize_notify (NMDevice *device) { NMDeviceVxlan *self = NM_DEVICE_VXLAN (device); NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (self); - GParamSpec **properties; - guint n_properties, i; + guint i; NM_DEVICE_CLASS (nm_device_vxlan_parent_class)->unrealize_notify (device); memset (&priv->props, 0, sizeof (NMPlatformLnkVxlan)); - properties = g_object_class_list_properties (G_OBJECT_GET_CLASS (self), &n_properties); - for (i = 0; i < n_properties; i++) - g_object_notify_by_pspec (G_OBJECT (self), properties[i]); - g_free (properties); + for (i = 1; i < _PROPERTY_ENUMS_LAST; i++) + g_object_notify_by_pspec (G_OBJECT (self), obj_properties[i]); } static gboolean @@ -300,7 +305,7 @@ address_matches (const char *str, in_addr_t addr4, struct in6_addr *addr6) static gboolean check_connection_compatible (NMDevice *device, NMConnection *connection) { - NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (device); + NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE ((NMDeviceVxlan *) device); NMSettingVxlan *s_vxlan; const char *parent; @@ -394,7 +399,7 @@ complete_connection (NMDevice *device, static void update_connection (NMDevice *device, NMConnection *connection) { - NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (device); + NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE ((NMDeviceVxlan *) device); NMSettingVxlan *s_vxlan = nm_connection_get_setting_vxlan (connection); NMDevice *parent = NULL; const char *setting_parent, *new_parent; @@ -546,15 +551,10 @@ ip4_config_pre_commit (NMDevice *device, NMIP4Config *config) /*****************************************************************************/ static void -nm_device_vxlan_init (NMDeviceVxlan *self) -{ -} - -static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (object); + NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE ((NMDeviceVxlan *) object); NMDevice *parent; switch (prop_id) { @@ -619,10 +619,17 @@ get_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_device_vxlan_init (NMDeviceVxlan *self) +{ +} + static void dispose (GObject *object) { - NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE (object); + NMDeviceVxlanPrivate *priv = NM_DEVICE_VXLAN_GET_PRIVATE ((NMDeviceVxlan *) object); g_clear_object (&priv->parent); G_OBJECT_CLASS (nm_device_vxlan_parent_class)->dispose (object); @@ -634,8 +641,6 @@ nm_device_vxlan_class_init (NMDeviceVxlanClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMDeviceVxlanPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NULL, NM_LINK_TYPE_VXLAN) object_class->get_property = get_property; @@ -653,118 +658,103 @@ nm_device_vxlan_class_init (NMDeviceVxlanClass *klass) device_class->act_stage1_prepare = act_stage1_prepare; device_class->ip4_config_pre_commit = ip4_config_pre_commit; - /* properties */ - g_object_class_install_property - (object_class, PROP_PARENT, - g_param_spec_string (NM_DEVICE_VXLAN_PARENT, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ID, - g_param_spec_uint (NM_DEVICE_VXLAN_ID, "", "", - 0, G_MAXUINT32, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_LOCAL, - g_param_spec_string (NM_DEVICE_VXLAN_LOCAL, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_GROUP, - g_param_spec_string (NM_DEVICE_VXLAN_GROUP, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_TOS, - g_param_spec_uchar (NM_DEVICE_VXLAN_TOS, "", "", - 0, 255, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_TTL, - g_param_spec_uchar (NM_DEVICE_VXLAN_TTL, "", "", - 0, 255, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_LEARNING, - g_param_spec_boolean (NM_DEVICE_VXLAN_LEARNING, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_AGEING, - g_param_spec_uint (NM_DEVICE_VXLAN_AGEING, "", "", - 0, G_MAXUINT32, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_LIMIT, - g_param_spec_uint (NM_DEVICE_VXLAN_LIMIT, "", "", - 0, G_MAXUINT32, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_SRC_PORT_MIN, - g_param_spec_uint (NM_DEVICE_VXLAN_SRC_PORT_MIN, "", "", - 0, 65535, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_SRC_PORT_MAX, - g_param_spec_uint (NM_DEVICE_VXLAN_SRC_PORT_MAX, "", "", - 0, 65535, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_DST_PORT, - g_param_spec_uint (NM_DEVICE_VXLAN_DST_PORT, "", "", - 0, 65535, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PROXY, - g_param_spec_boolean (NM_DEVICE_VXLAN_PROXY, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_RSC, - g_param_spec_boolean (NM_DEVICE_VXLAN_RSC, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_L2MISS, - g_param_spec_boolean (NM_DEVICE_VXLAN_L2MISS, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_L3MISS, - g_param_spec_boolean (NM_DEVICE_VXLAN_L3MISS, "", "", - FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_PARENT] = + g_param_spec_string (NM_DEVICE_VXLAN_PARENT, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ID] = + g_param_spec_uint (NM_DEVICE_VXLAN_ID, "", "", + 0, G_MAXUINT32, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_LOCAL] = + g_param_spec_string (NM_DEVICE_VXLAN_LOCAL, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_GROUP] = + g_param_spec_string (NM_DEVICE_VXLAN_GROUP, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_TOS] = + g_param_spec_uchar (NM_DEVICE_VXLAN_TOS, "", "", + 0, 255, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_TTL] = + g_param_spec_uchar (NM_DEVICE_VXLAN_TTL, "", "", + 0, 255, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_LEARNING] = + g_param_spec_boolean (NM_DEVICE_VXLAN_LEARNING, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_AGEING] = + g_param_spec_uint (NM_DEVICE_VXLAN_AGEING, "", "", + 0, G_MAXUINT32, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_LIMIT] = + g_param_spec_uint (NM_DEVICE_VXLAN_LIMIT, "", "", + 0, G_MAXUINT32, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_SRC_PORT_MIN] = + g_param_spec_uint (NM_DEVICE_VXLAN_SRC_PORT_MIN, "", "", + 0, 65535, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_SRC_PORT_MAX] = + g_param_spec_uint (NM_DEVICE_VXLAN_SRC_PORT_MAX, "", "", + 0, 65535, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_DST_PORT] = + g_param_spec_uint (NM_DEVICE_VXLAN_DST_PORT, "", "", + 0, 65535, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PROXY] = + g_param_spec_boolean (NM_DEVICE_VXLAN_PROXY, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_RSC] = + g_param_spec_boolean (NM_DEVICE_VXLAN_RSC, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_L2MISS] = + g_param_spec_boolean (NM_DEVICE_VXLAN_L2MISS, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_L3MISS] = + g_param_spec_boolean (NM_DEVICE_VXLAN_L3MISS, "", "", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_VXLAN_SKELETON, @@ -830,5 +820,5 @@ NM_DEVICE_FACTORY_DEFINE_INTERNAL (VXLAN, Vxlan, vxlan, factory_iface->create_device = create_device; factory_iface->get_connection_parent = get_connection_parent; factory_iface->get_connection_iface = get_connection_iface; - ) +); diff --git a/src/devices/nm-device-vxlan.h b/src/devices/nm-device-vxlan.h index 71204d3beb..82e5c604e9 100644 --- a/src/devices/nm-device-vxlan.h +++ b/src/devices/nm-device-vxlan.h @@ -47,8 +47,8 @@ #define NM_DEVICE_VXLAN_L2MISS "l2miss" #define NM_DEVICE_VXLAN_L3MISS "l3miss" -typedef NMDevice NMDeviceVxlan; -typedef NMDeviceClass NMDeviceVxlanClass; +typedef struct _NMDeviceVxlan NMDeviceVxlan; +typedef struct _NMDeviceVxlanClass NMDeviceVxlanClass; GType nm_device_vxlan_get_type (void); diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 8786f3a31f..e2cd28f911 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -12643,7 +12643,6 @@ nm_device_class_init (NMDeviceClass *klass) exported_object_class->export_path = NM_DBUS_PATH "/Devices/%u"; - /* Virtual methods */ object_class->dispose = dispose; object_class->finalize = finalize; object_class->set_property = set_property; @@ -12675,7 +12674,6 @@ nm_device_class_init (NMDeviceClass *klass) klass->unmanaged_on_quit = unmanaged_on_quit; klass->deactivate_reset_hw_addr = deactivate_reset_hw_addr; - /* Properties */ obj_properties[PROP_UDI] = g_param_spec_string (NM_DEVICE_UDI, "", "", NULL, @@ -12893,7 +12891,6 @@ nm_device_class_init (NMDeviceClass *klass) g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); - /* Signals */ signals[STATE_CHANGED] = g_signal_new (NM_DEVICE_STATE_CHANGED, G_OBJECT_CLASS_TYPE (object_class), diff --git a/src/devices/team/Makefile.am b/src/devices/team/Makefile.am index f0ed8201be..f2ad28d1cd 100644 --- a/src/devices/team/Makefile.am +++ b/src/devices/team/Makefile.am @@ -28,10 +28,9 @@ pkglib_LTLIBRARIES = libnm-device-plugin-team.la SYMBOL_VIS_FILE=$(srcdir)/exports.ver libnm_device_plugin_team_la_SOURCES = \ - nm-device-team.c \ - nm-device-team.h \ nm-team-factory.c \ - nm-team-factory.h + nm-device-team.c \ + nm-device-team.h libnm_device_plugin_team_la_LDFLAGS = \ -module -avoid-version \ diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c index b0504b5754..0ed80f84c8 100644 --- a/src/devices/team/nm-device-team.c +++ b/src/devices/team/nm-device-team.c @@ -20,6 +20,8 @@ #include "nm-default.h" +#include "nm-device-team.h" + #include <sys/types.h> #include <unistd.h> #include <signal.h> @@ -27,7 +29,6 @@ #include <teamdctl.h> #include <stdlib.h> -#include "nm-device-team.h" #include "NetworkManagerUtils.h" #include "nm-device-private.h" #include "nm-platform.h" @@ -41,9 +42,7 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceTeam); -G_DEFINE_TYPE (NMDeviceTeam, nm_device_team, NM_TYPE_DEVICE) - -#define NM_DEVICE_TEAM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_TEAM, NMDeviceTeamPrivate)) +/*****************************************************************************/ NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceTeam, PROP_CONFIG, @@ -59,6 +58,21 @@ typedef struct { char *config; } NMDeviceTeamPrivate; +struct _NMDeviceTeam { + NMDevice parent; + NMDeviceTeamPrivate _priv; +}; + +struct _NMDeviceTeamClass { + NMDeviceClass parent; +}; + +G_DEFINE_TYPE (NMDeviceTeam, nm_device_team, NM_TYPE_DEVICE) + +#define NM_DEVICE_TEAM_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceTeam, NM_IS_DEVICE_TEAM) + +/*****************************************************************************/ + static gboolean teamd_start (NMDevice *device, NMSettingTeam *s_team); /*****************************************************************************/ @@ -179,7 +193,7 @@ teamd_read_config (NMDevice *device) static gboolean teamd_read_timeout_cb (gpointer user_data) { - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (user_data); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE ((NMDeviceTeam *) user_data); teamd_read_config ((NMDevice *) user_data); priv->teamd_read_timeout = 0; @@ -286,7 +300,7 @@ master_update_slave_connection (NMDevice *self, static void teamd_cleanup (NMDevice *device, gboolean free_tdc) { - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (device); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE ((NMDeviceTeam *) device); nm_clear_g_source (&priv->teamd_process_watch); nm_clear_g_source (&priv->teamd_timeout); @@ -309,7 +323,7 @@ teamd_timeout_cb (gpointer user_data) { NMDeviceTeam *self = NM_DEVICE_TEAM (user_data); NMDevice *device = NM_DEVICE (self); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (device); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); g_return_val_if_fail (priv->teamd_timeout, FALSE); priv->teamd_timeout = 0; @@ -637,7 +651,7 @@ enslave_slave (NMDevice *device, gboolean configure) { NMDeviceTeam *self = NM_DEVICE_TEAM (device); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (device); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); gboolean success = TRUE, no_firmware = FALSE; const char *slave_iface = nm_device_get_ip_iface (slave); NMSettingTeamPort *s_team_port; @@ -696,7 +710,7 @@ release_slave (NMDevice *device, gboolean configure) { NMDeviceTeam *self = NM_DEVICE_TEAM (device); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (device); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); gboolean success, no_firmware = FALSE; if (configure) { @@ -750,19 +764,6 @@ create_and_realize (NMDevice *device, /*****************************************************************************/ -NMDevice * -nm_device_team_new (const char *iface) -{ - return (NMDevice *) g_object_new (NM_TYPE_DEVICE_TEAM, - NM_DEVICE_IFACE, iface, - NM_DEVICE_DRIVER, "team", - NM_DEVICE_TYPE_DESC, "Team", - NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_TEAM, - NM_DEVICE_LINK_TYPE, NM_LINK_TYPE_TEAM, - NM_DEVICE_IS_MASTER, TRUE, - NULL); -} - static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) @@ -780,6 +781,8 @@ get_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + static void nm_device_team_init (NMDeviceTeam * self) { @@ -789,7 +792,7 @@ static void constructed (GObject *object) { NMDevice *device = NM_DEVICE (object); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (object); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE ((NMDeviceTeam *) device); char *tmp_str = NULL; G_OBJECT_CLASS (nm_device_team_parent_class)->constructed (object); @@ -806,11 +809,24 @@ constructed (GObject *object) g_free (tmp_str); } +NMDevice * +nm_device_team_new (const char *iface) +{ + return (NMDevice *) g_object_new (NM_TYPE_DEVICE_TEAM, + NM_DEVICE_IFACE, iface, + NM_DEVICE_DRIVER, "team", + NM_DEVICE_TYPE_DESC, "Team", + NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_TEAM, + NM_DEVICE_LINK_TYPE, NM_LINK_TYPE_TEAM, + NM_DEVICE_IS_MASTER, TRUE, + NULL); +} + static void dispose (GObject *object) { NMDevice *device = NM_DEVICE (object); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (object); + NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE ((NMDeviceTeam *) device); if (priv->teamd_dbus_watch) { g_bus_unwatch_name (priv->teamd_dbus_watch); @@ -829,8 +845,6 @@ nm_device_team_class_init (NMDeviceTeamClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceTeamPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_TEAM_SETTING_NAME, NM_LINK_TYPE_TEAM) object_class->constructed = constructed; diff --git a/src/devices/team/nm-device-team.h b/src/devices/team/nm-device-team.h index 43e8aab408..90af2e87c5 100644 --- a/src/devices/team/nm-device-team.h +++ b/src/devices/team/nm-device-team.h @@ -33,8 +33,8 @@ /* Properties */ #define NM_DEVICE_TEAM_CONFIG "config" -typedef NMDevice NMDeviceTeam; -typedef NMDeviceClass NMDeviceTeamClass; +typedef struct _NMDeviceTeam NMDeviceTeam; +typedef struct _NMDeviceTeamClass NMDeviceTeamClass; GType nm_device_team_get_type (void); diff --git a/src/devices/team/nm-team-factory.c b/src/devices/team/nm-team-factory.c index 08cb15d268..97275f7ef7 100644 --- a/src/devices/team/nm-team-factory.c +++ b/src/devices/team/nm-team-factory.c @@ -25,13 +25,34 @@ #include "nm-manager.h" #include "nm-device-factory.h" -#include "nm-team-factory.h" #include "nm-device-team.h" #include "nm-platform.h" #include "nm-core-internal.h" +/*****************************************************************************/ + +#define NM_TYPE_TEAM_FACTORY (nm_team_factory_get_type ()) +#define NM_TEAM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_TEAM_FACTORY, NMTeamFactory)) +#define NM_TEAM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_TEAM_FACTORY, NMTeamFactoryClass)) +#define NM_IS_TEAM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_TEAM_FACTORY)) +#define NM_IS_TEAM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_TEAM_FACTORY)) +#define NM_TEAM_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_TEAM_FACTORY, NMTeamFactoryClass)) + +typedef struct _NMTeamFactory NMTeamFactory; +typedef struct _NMTeamFactoryClass NMTeamFactoryClass; + static GType nm_team_factory_get_type (void); +/*****************************************************************************/ + +struct _NMTeamFactory { + GObject parent; +}; + +struct _NMTeamFactoryClass { + GObjectClass parent; +}; + static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface); G_DEFINE_TYPE_EXTENDED (NMTeamFactory, nm_team_factory, G_TYPE_OBJECT, 0, @@ -39,15 +60,6 @@ G_DEFINE_TYPE_EXTENDED (NMTeamFactory, nm_team_factory, G_TYPE_OBJECT, 0, /*****************************************************************************/ -G_MODULE_EXPORT NMDeviceFactory * -nm_device_factory_create (GError **error) -{ - nm_manager_set_capability (nm_manager_get (), NM_CAPABILITY_TEAM); - return (NMDeviceFactory *) g_object_new (NM_TYPE_TEAM_FACTORY, NULL); -} - -/*****************************************************************************/ - static NMDevice * create_device (NMDeviceFactory *factory, const char *iface, @@ -71,13 +83,22 @@ nm_team_factory_init (NMTeamFactory *self) } static void +nm_team_factory_class_init (NMTeamFactoryClass *klass) +{ +} + +static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) { factory_iface->create_device = create_device; factory_iface->get_supported_types = get_supported_types; } -static void -nm_team_factory_class_init (NMTeamFactoryClass *klass) +/*****************************************************************************/ + +G_MODULE_EXPORT NMDeviceFactory * +nm_device_factory_create (GError **error) { + nm_manager_set_capability (nm_manager_get (), NM_CAPABILITY_TEAM); + return (NMDeviceFactory *) g_object_new (NM_TYPE_TEAM_FACTORY, NULL); } diff --git a/src/devices/team/nm-team-factory.h b/src/devices/team/nm-team-factory.h deleted file mode 100644 index 4155870c2a..0000000000 --- a/src/devices/team/nm-team-factory.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2014 Red Hat, Inc. - */ - -#ifndef __NETWORKMANAGER_TEAM_FACTORY_H__ -#define __NETWORKMANAGER_TEAM_FACTORY_H__ - -#define NM_TYPE_TEAM_FACTORY (nm_team_factory_get_type ()) -#define NM_TEAM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_TEAM_FACTORY, NMTeamFactory)) - -typedef struct { - GObject parent; -} NMTeamFactory; - -typedef struct { - GObjectClass parent; -} NMTeamFactoryClass; - -#endif /* __NETWORKMANAGER_TEAM_FACTORY_H__ */ diff --git a/src/devices/wifi/nm-device-olpc-mesh.c b/src/devices/wifi/nm-device-olpc-mesh.c index cfac85881a..cac8b068cd 100644 --- a/src/devices/wifi/nm-device-olpc-mesh.c +++ b/src/devices/wifi/nm-device-olpc-mesh.c @@ -26,6 +26,8 @@ #include "nm-default.h" +#include "nm-device-olpc-mesh.h" + #include <netinet/in.h> #include <string.h> #include <sys/stat.h> @@ -37,7 +39,6 @@ #include "nm-device.h" #include "nm-device-wifi.h" -#include "nm-device-olpc-mesh.h" #include "nm-device-private.h" #include "nm-utils.h" #include "NetworkManagerUtils.h" @@ -56,24 +57,32 @@ #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceOlpcMesh); -G_DEFINE_TYPE (NMDeviceOlpcMesh, nm_device_olpc_mesh, NM_TYPE_DEVICE) - -#define NM_DEVICE_OLPC_MESH_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_OLPC_MESH, NMDeviceOlpcMeshPrivate)) +/*****************************************************************************/ -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE (NMDeviceOlpcMesh, PROP_COMPANION, PROP_ACTIVE_CHANNEL, +); - LAST_PROP -}; - -struct _NMDeviceOlpcMeshPrivate { +typedef struct { NMDevice *companion; NMManager *manager; gboolean stage1_waiting; +} NMDeviceOlpcMeshPrivate; + +struct _NMDeviceOlpcMesh { + NMDevice parent; + NMDeviceOlpcMeshPrivate _priv; +}; + +struct _NMDeviceOlpcMeshClass { + NMDeviceClass parent; }; +G_DEFINE_TYPE (NMDeviceOlpcMesh, nm_device_olpc_mesh, NM_TYPE_DEVICE) + +#define NM_DEVICE_OLPC_MESH_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceOlpcMesh, NM_IS_DEVICE_OLPC_MESH) + /*****************************************************************************/ static gboolean @@ -158,7 +167,7 @@ static NMActStageReturn act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason) { NMDeviceOlpcMesh *self = NM_DEVICE_OLPC_MESH (device); - NMDeviceOlpcMeshPrivate *priv = NM_DEVICE_OLPC_MESH_GET_PRIVATE (device); + NMDeviceOlpcMeshPrivate *priv = NM_DEVICE_OLPC_MESH_GET_PRIVATE (self); NMActStageReturn ret; gboolean scanning; @@ -196,7 +205,7 @@ _mesh_set_channel (NMDeviceOlpcMesh *self, guint32 channel) if (nm_platform_mesh_get_channel (NM_PLATFORM_GET, ifindex) != channel) { if (nm_platform_mesh_set_channel (NM_PLATFORM_GET, ifindex, channel)) - g_object_notify (G_OBJECT (self), NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL); + _notify (self, PROP_ACTIVE_CHANNEL); } } @@ -256,7 +265,7 @@ companion_cleanup (NMDeviceOlpcMesh *self) g_signal_handlers_disconnect_by_data (priv->companion, self); g_clear_object (&priv->companion); } - g_object_notify (G_OBJECT (self), NM_DEVICE_OLPC_MESH_COMPANION); + _notify (self, PROP_COMPANION); } static void @@ -354,7 +363,7 @@ check_companion (NMDeviceOlpcMesh *self, NMDevice *other) g_signal_connect (G_OBJECT (other), NM_DEVICE_AUTOCONNECT_ALLOWED, G_CALLBACK (companion_autoconnect_allowed_cb), self); - g_object_notify (G_OBJECT (self), NM_DEVICE_OLPC_MESH_COMPANION); + _notify (self, PROP_COMPANION); return TRUE; } @@ -417,17 +426,28 @@ state_changed (NMDevice *device, /*****************************************************************************/ -NMDevice * -nm_device_olpc_mesh_new (const char *iface) +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { - return (NMDevice *) g_object_new (NM_TYPE_DEVICE_OLPC_MESH, - NM_DEVICE_IFACE, iface, - NM_DEVICE_TYPE_DESC, "802.11 OLPC Mesh", - NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_OLPC_MESH, - NM_DEVICE_LINK_TYPE, NM_LINK_TYPE_OLPC_MESH, - NULL); + NMDeviceOlpcMesh *device = NM_DEVICE_OLPC_MESH (object); + NMDeviceOlpcMeshPrivate *priv = NM_DEVICE_OLPC_MESH_GET_PRIVATE (device); + + switch (prop_id) { + case PROP_COMPANION: + 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)))); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } +/*****************************************************************************/ + static void nm_device_olpc_mesh_init (NMDeviceOlpcMesh * self) { @@ -450,35 +470,15 @@ constructed (GObject *object) nm_device_set_dhcp_timeout (NM_DEVICE (self), 20); } -static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMDeviceOlpcMesh *device = NM_DEVICE_OLPC_MESH (object); - NMDeviceOlpcMeshPrivate *priv = NM_DEVICE_OLPC_MESH_GET_PRIVATE (device); - - switch (prop_id) { - case PROP_COMPANION: - 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)))); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +NMDevice * +nm_device_olpc_mesh_new (const char *iface) { - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + return (NMDevice *) g_object_new (NM_TYPE_DEVICE_OLPC_MESH, + NM_DEVICE_IFACE, iface, + NM_DEVICE_TYPE_DESC, "802.11 OLPC Mesh", + NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_OLPC_MESH, + NM_DEVICE_LINK_TYPE, NM_LINK_TYPE_OLPC_MESH, + NULL); } static void @@ -504,39 +504,33 @@ nm_device_olpc_mesh_class_init (NMDeviceOlpcMeshClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMDeviceClass *parent_class = NM_DEVICE_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMDeviceOlpcMeshPrivate)); - NM_DEVICE_CLASS_DECLARE_TYPES (klass, NM_SETTING_OLPC_MESH_SETTING_NAME, NM_LINK_TYPE_OLPC_MESH) object_class->constructed = constructed; object_class->get_property = get_property; - object_class->set_property = set_property; object_class->dispose = dispose; parent_class->check_connection_compatible = check_connection_compatible; parent_class->can_auto_connect = can_auto_connect; parent_class->complete_connection = complete_connection; - parent_class->is_available = is_available; parent_class->act_stage1_prepare = act_stage1_prepare; parent_class->act_stage2_config = act_stage2_config; - parent_class->state_changed = state_changed; - /* Properties */ - g_object_class_install_property - (object_class, PROP_COMPANION, - g_param_spec_string (NM_DEVICE_OLPC_MESH_COMPANION, "", "", - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_ACTIVE_CHANNEL, - g_param_spec_uint (NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL, "", "", - 0, G_MAXUINT32, 0, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_COMPANION] = + g_param_spec_string (NM_DEVICE_OLPC_MESH_COMPANION, "", "", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_ACTIVE_CHANNEL] = + g_param_spec_uint (NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL, "", "", + 0, G_MAXUINT32, 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (klass), NMDBUS_TYPE_DEVICE_OLPC_MESH_SKELETON, diff --git a/src/devices/wifi/nm-device-olpc-mesh.h b/src/devices/wifi/nm-device-olpc-mesh.h index 135226d5af..b58dfdf7be 100644 --- a/src/devices/wifi/nm-device-olpc-mesh.h +++ b/src/devices/wifi/nm-device-olpc-mesh.h @@ -41,25 +41,8 @@ #define NM_DEVICE_OLPC_MESH_BITRATE "bitrate" #define NM_DEVICE_OLPC_MESH_ACTIVE_CHANNEL "active-channel" -#ifndef NM_DEVICE_OLPC_MESH_DEFINED -#define NM_DEVICE_OLPC_MESH_DEFINED typedef struct _NMDeviceOlpcMesh NMDeviceOlpcMesh; -#endif - typedef struct _NMDeviceOlpcMeshClass NMDeviceOlpcMeshClass; -typedef struct _NMDeviceOlpcMeshPrivate NMDeviceOlpcMeshPrivate; - -struct _NMDeviceOlpcMesh -{ - NMDevice parent; -}; - -struct _NMDeviceOlpcMeshClass -{ - NMDeviceClass parent; - -}; - GType nm_device_olpc_mesh_get_type (void); diff --git a/src/devices/wifi/nm-wifi-factory.c b/src/devices/wifi/nm-wifi-factory.c index 2259daac60..1bd0756a48 100644 --- a/src/devices/wifi/nm-wifi-factory.c +++ b/src/devices/wifi/nm-wifi-factory.c @@ -30,19 +30,30 @@ #include "nm-settings-connection.h" #include "nm-platform.h" -#define NM_TYPE_WIFI_FACTORY (nm_wifi_factory_get_type ()) -#define NM_WIFI_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_WIFI_FACTORY, NMWifiFactory)) +/*****************************************************************************/ -typedef struct { - GObject parent; -} NMWifiFactory; +#define NM_TYPE_WIFI_FACTORY (nm_wifi_factory_get_type ()) +#define NM_WIFI_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_WIFI_FACTORY, NMWifiFactory)) +#define NM_WIFI_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_WIFI_FACTORY, NMWifiFactoryClass)) +#define NM_IS_WIFI_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_WIFI_FACTORY)) +#define NM_IS_WIFI_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_WIFI_FACTORY)) +#define NM_WIFI_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_WIFI_FACTORY, NMWifiFactoryClass)) -typedef struct { - GObjectClass parent; -} NMWifiFactoryClass; +typedef struct _NMWifiFactory NMWifiFactory; +typedef struct _NMWifiFactoryClass NMWifiFactoryClass; static GType nm_wifi_factory_get_type (void); +/*****************************************************************************/ + +struct _NMWifiFactory { + GObject parent; +}; + +struct _NMWifiFactoryClass { + GObjectClass parent; +}; + static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface); G_DEFINE_TYPE_EXTENDED (NMWifiFactory, nm_wifi_factory, G_TYPE_OBJECT, 0, @@ -50,14 +61,6 @@ G_DEFINE_TYPE_EXTENDED (NMWifiFactory, nm_wifi_factory, G_TYPE_OBJECT, 0, /*****************************************************************************/ -G_MODULE_EXPORT NMDeviceFactory * -nm_device_factory_create (GError **error) -{ - return (NMDeviceFactory *) g_object_new (NM_TYPE_WIFI_FACTORY, NULL); -} - -/*****************************************************************************/ - static NMDevice * create_device (NMDeviceFactory *factory, const char *iface, @@ -101,20 +104,29 @@ NM_DEVICE_FACTORY_DECLARE_TYPES ( NM_DEVICE_FACTORY_DECLARE_SETTING_TYPES (NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_OLPC_MESH_SETTING_NAME) ) +/*****************************************************************************/ + static void -device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) +nm_wifi_factory_init (NMWifiFactory *self) { - factory_iface->create_device = create_device; - factory_iface->get_supported_types = get_supported_types; } static void -nm_wifi_factory_init (NMWifiFactory *self) +nm_wifi_factory_class_init (NMWifiFactoryClass *wf_class) { } static void -nm_wifi_factory_class_init (NMWifiFactoryClass *wf_class) +device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) { + factory_iface->create_device = create_device; + factory_iface->get_supported_types = get_supported_types; } +/*****************************************************************************/ + +G_MODULE_EXPORT NMDeviceFactory * +nm_device_factory_create (GError **error) +{ + return (NMDeviceFactory *) g_object_new (NM_TYPE_WIFI_FACTORY, NULL); +} diff --git a/src/devices/wwan/Makefile.am b/src/devices/wwan/Makefile.am index 1b117d4f3d..845951d14c 100644 --- a/src/devices/wwan/Makefile.am +++ b/src/devices/wwan/Makefile.am @@ -68,7 +68,6 @@ SYMBOL_VIS_FILE=$(srcdir)/exports.ver libnm_device_plugin_wwan_la_SOURCES = \ nm-wwan-factory.c \ - nm-wwan-factory.h \ nm-device-modem.c \ nm-device-modem.h diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c index 100f2d71f8..90fe4d6882 100644 --- a/src/devices/wwan/nm-device-modem.c +++ b/src/devices/wwan/nm-device-modem.c @@ -20,9 +20,10 @@ #include "nm-default.h" +#include "nm-device-modem.h" + #include <string.h> -#include "nm-device-modem.h" #include "nm-modem.h" #include "nm-device-private.h" #include "nm-rfkill-manager.h" @@ -31,14 +32,18 @@ #include "NetworkManagerUtils.h" #include "nm-core-internal.h" +#include "nmdbus-device-modem.h" + #include "nm-device-logging.h" _LOG_DECLARE_SELF(NMDeviceModem); -#include "nmdbus-device-modem.h" - -G_DEFINE_TYPE (NMDeviceModem, nm_device_modem, NM_TYPE_DEVICE) +/*****************************************************************************/ -#define NM_DEVICE_MODEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_MODEM, NMDeviceModemPrivate)) +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_MODEM, + PROP_CAPABILITIES, + PROP_CURRENT_CAPABILITIES, +); typedef struct { NMModem *modem; @@ -47,13 +52,19 @@ typedef struct { gboolean rf_enabled; } NMDeviceModemPrivate; -enum { - PROP_0, - PROP_MODEM, - PROP_CAPABILITIES, - PROP_CURRENT_CAPABILITIES, +struct _NMDeviceModem { + NMDevice parent; + NMDeviceModemPrivate _priv; }; +struct _NMDeviceModemClass { + NMDeviceClass parent; +}; + +G_DEFINE_TYPE (NMDeviceModem, nm_device_modem, NM_TYPE_DEVICE) + +#define NM_DEVICE_MODEM_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDeviceModem, NM_IS_DEVICE_MODEM) + /*****************************************************************************/ static void @@ -281,7 +292,7 @@ modem_state_cb (NMModem *modem, gpointer user_data) { NMDevice *device = NM_DEVICE (user_data); - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device); NMDeviceState dev_state = nm_device_get_state (device); if (new_state <= NM_MODEM_STATE_DISABLING && @@ -335,9 +346,10 @@ modem_removed_cb (NMModem *modem, gpointer user_data) static gboolean owns_iface (NMDevice *device, const char *iface) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device); + + g_return_val_if_fail (priv->modem, FALSE); - g_assert (priv->modem); return nm_modem_owns_port (priv->modem, iface); } @@ -350,7 +362,7 @@ device_state_changed (NMDevice *device, NMDeviceStateReason reason) { NMDeviceModem *self = NM_DEVICE_MODEM (device); - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self); NMConnection *connection = nm_device_get_applied_connection (device); g_assert (priv->modem); @@ -394,7 +406,7 @@ get_generic_capabilities (NMDevice *device) static const char * get_type_description (NMDevice *device) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device); if (NM_FLAGS_HAS (priv->current_caps, NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS)) return "gsm"; @@ -409,7 +421,7 @@ check_connection_compatible (NMDevice *device, NMConnection *connection) if (!NM_DEVICE_CLASS (nm_device_modem_parent_class)->check_connection_compatible (device, connection)) return FALSE; - return nm_modem_check_connection_compatible (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, connection); + return nm_modem_check_connection_compatible (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, connection); } static gboolean @@ -444,7 +456,7 @@ complete_connection (NMDevice *device, const GSList *existing_connections, GError **error) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device); return nm_modem_complete_connection (priv->modem, connection, existing_connections, error); } @@ -452,7 +464,7 @@ complete_connection (NMDevice *device, static void deactivate (NMDevice *device) { - nm_modem_deactivate (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device); + nm_modem_deactivate (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, device); } /*****************************************************************************/ @@ -490,7 +502,7 @@ deactivate_async (NMDevice *self, callback, user_data, deactivate_async); - nm_modem_deactivate_async (NM_DEVICE_MODEM_GET_PRIVATE (self)->modem, + nm_modem_deactivate_async (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) self)->modem, self, cancellable, (GAsyncReadyCallback) modem_deactivate_async_ready, @@ -512,7 +524,7 @@ act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason) req = nm_device_get_act_request (device); g_assert (req); - return nm_modem_act_stage1_prepare (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, req, reason); + return nm_modem_act_stage1_prepare (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, req, reason); } static NMActStageReturn @@ -523,7 +535,7 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *reason) req = nm_device_get_act_request (device); g_assert (req); - return nm_modem_act_stage2_config (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, req, reason); + return nm_modem_act_stage2_config (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, req, reason); } static NMActStageReturn @@ -531,7 +543,7 @@ act_stage3_ip4_config_start (NMDevice *device, NMIP4Config **out_config, NMDeviceStateReason *reason) { - return nm_modem_stage3_ip4_config_start (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, + return nm_modem_stage3_ip4_config_start (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, device, NM_DEVICE_CLASS (nm_device_modem_parent_class), reason); @@ -540,7 +552,7 @@ act_stage3_ip4_config_start (NMDevice *device, static void ip4_config_pre_commit (NMDevice *device, NMIP4Config *config) { - nm_modem_ip4_pre_commit (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device, config); + nm_modem_ip4_pre_commit (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, device, config); } static NMActStageReturn @@ -548,7 +560,7 @@ act_stage3_ip6_config_start (NMDevice *device, NMIP6Config **out_config, NMDeviceStateReason *reason) { - return nm_modem_stage3_ip6_config_start (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, + return nm_modem_stage3_ip6_config_start (NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device)->modem, nm_device_get_act_request (device), reason); } @@ -572,7 +584,7 @@ get_ip_iface_identifier (NMDevice *device, NMUtilsIPv6IfaceId *out_iid) static gboolean get_enabled (NMDevice *device) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (device); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) device); NMModemState modem_state = nm_modem_get_state (priv->modem); return priv->rf_enabled && (modem_state >= NM_MODEM_STATE_LOCKED); @@ -621,58 +633,6 @@ is_available (NMDevice *device, NMDeviceCheckDevAvailableFlags flags) /*****************************************************************************/ -NMDevice * -nm_device_modem_new (NMModem *modem) -{ - NMDeviceModemCapabilities caps = NM_DEVICE_MODEM_CAPABILITY_NONE; - NMDeviceModemCapabilities current_caps = NM_DEVICE_MODEM_CAPABILITY_NONE; - NMDevice *device; - const char *data_port; - - g_return_val_if_fail (NM_IS_MODEM (modem), NULL); - - /* Load capabilities */ - nm_modem_get_capabilities (modem, &caps, ¤t_caps); - - device = (NMDevice *) g_object_new (NM_TYPE_DEVICE_MODEM, - NM_DEVICE_UDI, nm_modem_get_path (modem), - NM_DEVICE_IFACE, nm_modem_get_uid (modem), - NM_DEVICE_DRIVER, nm_modem_get_driver (modem), - NM_DEVICE_TYPE_DESC, "Broadband", - NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_MODEM, - NM_DEVICE_RFKILL_TYPE, RFKILL_TYPE_WWAN, - NM_DEVICE_MODEM_MODEM, modem, - NM_DEVICE_MODEM_CAPABILITIES, caps, - NM_DEVICE_MODEM_CURRENT_CAPABILITIES, current_caps, - NULL); - - /* If the data port is known, set it as the IP interface immediately */ - data_port = nm_modem_get_data_port (modem); - if (data_port) { - nm_device_set_ip_iface (device, data_port); - nm_device_ipv6_sysctl_set (device, "disable_ipv6", "1"); - } - - return device; -} - -static void -nm_device_modem_init (NMDeviceModem *self) -{ -} - -static void -constructed (GObject *object) -{ - G_OBJECT_CLASS (nm_device_modem_parent_class)->constructed (object); - - /* DHCP is always done by the modem firmware, not by the network, and - * by the time we get around to DHCP the firmware should already know - * the IP addressing details. So the DHCP timeout can be much shorter. - */ - nm_device_set_dhcp_timeout (NM_DEVICE (object), 15); -} - static void set_modem (NMDeviceModem *self, NMModem *modem) { @@ -701,22 +661,23 @@ set_modem (NMDeviceModem *self, NMModem *modem) g_signal_connect (modem, "notify::" NM_MODEM_SIM_OPERATOR_ID, G_CALLBACK (ids_changed_cb), self); } +/*****************************************************************************/ + static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) object); switch (prop_id) { case PROP_MODEM: - /* construct-only */ - set_modem (NM_DEVICE_MODEM (object), g_value_get_object (value)); + g_value_set_object (value, priv->modem); break; case PROP_CAPABILITIES: - priv->caps = g_value_get_uint (value); + g_value_set_uint (value, priv->caps); break; case PROP_CURRENT_CAPABILITIES: - priv->current_caps = g_value_get_uint (value); + g_value_set_uint (value, priv->current_caps); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -725,20 +686,21 @@ set_property (GObject *object, guint prop_id, } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) object); switch (prop_id) { case PROP_MODEM: - g_value_set_object (value, priv->modem); + /* construct-only */ + set_modem (NM_DEVICE_MODEM (object), g_value_get_object (value)); break; case PROP_CAPABILITIES: - g_value_set_uint (value, priv->caps); + priv->caps = g_value_get_uint (value); break; case PROP_CURRENT_CAPABILITIES: - g_value_set_uint (value, priv->current_caps); + priv->current_caps = g_value_get_uint (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -746,10 +708,64 @@ get_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_device_modem_init (NMDeviceModem *self) +{ +} + +static void +constructed (GObject *object) +{ + G_OBJECT_CLASS (nm_device_modem_parent_class)->constructed (object); + + /* DHCP is always done by the modem firmware, not by the network, and + * by the time we get around to DHCP the firmware should already know + * the IP addressing details. So the DHCP timeout can be much shorter. + */ + nm_device_set_dhcp_timeout (NM_DEVICE (object), 15); +} + +NMDevice * +nm_device_modem_new (NMModem *modem) +{ + NMDeviceModemCapabilities caps = NM_DEVICE_MODEM_CAPABILITY_NONE; + NMDeviceModemCapabilities current_caps = NM_DEVICE_MODEM_CAPABILITY_NONE; + NMDevice *device; + const char *data_port; + + g_return_val_if_fail (NM_IS_MODEM (modem), NULL); + + /* Load capabilities */ + nm_modem_get_capabilities (modem, &caps, ¤t_caps); + + device = (NMDevice *) g_object_new (NM_TYPE_DEVICE_MODEM, + NM_DEVICE_UDI, nm_modem_get_path (modem), + NM_DEVICE_IFACE, nm_modem_get_uid (modem), + NM_DEVICE_DRIVER, nm_modem_get_driver (modem), + NM_DEVICE_TYPE_DESC, "Broadband", + NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_MODEM, + NM_DEVICE_RFKILL_TYPE, RFKILL_TYPE_WWAN, + NM_DEVICE_MODEM_MODEM, modem, + NM_DEVICE_MODEM_CAPABILITIES, caps, + NM_DEVICE_MODEM_CURRENT_CAPABILITIES, current_caps, + NULL); + + /* If the data port is known, set it as the IP interface immediately */ + data_port = nm_modem_get_data_port (modem); + if (data_port) { + nm_device_set_ip_iface (device, data_port); + nm_device_ipv6_sysctl_set (device, "disable_ipv6", "1"); + } + + return device; +} + static void dispose (GObject *object) { - NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (object); + NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE ((NMDeviceModem *) object); if (priv->modem) g_signal_handlers_disconnect_by_data (priv->modem, NM_DEVICE_MODEM (object)); @@ -764,9 +780,6 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass) GObjectClass *object_class = G_OBJECT_CLASS (mclass); NMDeviceClass *device_class = NM_DEVICE_CLASS (mclass); - g_type_class_add_private (object_class, sizeof (NMDeviceModemPrivate)); - - /* Virtual methods */ object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; @@ -793,27 +806,25 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass) device_class->state_changed = device_state_changed; - /* Properties */ - g_object_class_install_property - (object_class, PROP_MODEM, - g_param_spec_object (NM_DEVICE_MODEM_MODEM, "", "", - NM_TYPE_MODEM, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CAPABILITIES, - g_param_spec_uint (NM_DEVICE_MODEM_CAPABILITIES, "", "", - 0, G_MAXUINT32, NM_DEVICE_MODEM_CAPABILITY_NONE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CURRENT_CAPABILITIES, - g_param_spec_uint (NM_DEVICE_MODEM_CURRENT_CAPABILITIES, "", "", - 0, G_MAXUINT32, NM_DEVICE_MODEM_CAPABILITY_NONE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_MODEM] = + g_param_spec_object (NM_DEVICE_MODEM_MODEM, "", "", + NM_TYPE_MODEM, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CAPABILITIES] = + g_param_spec_uint (NM_DEVICE_MODEM_CAPABILITIES, "", "", + 0, G_MAXUINT32, NM_DEVICE_MODEM_CAPABILITY_NONE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CURRENT_CAPABILITIES] = + g_param_spec_uint (NM_DEVICE_MODEM_CURRENT_CAPABILITIES, "", "", + 0, G_MAXUINT32, NM_DEVICE_MODEM_CAPABILITY_NONE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (mclass), NMDBUS_TYPE_DEVICE_MODEM_SKELETON, diff --git a/src/devices/wwan/nm-device-modem.h b/src/devices/wwan/nm-device-modem.h index 1cf399e12c..fe53de62c4 100644 --- a/src/devices/wwan/nm-device-modem.h +++ b/src/devices/wwan/nm-device-modem.h @@ -35,14 +35,8 @@ #define NM_DEVICE_MODEM_CAPABILITIES "modem-capabilities" #define NM_DEVICE_MODEM_CURRENT_CAPABILITIES "current-capabilities" -typedef struct { - NMDevice parent; -} NMDeviceModem; - -typedef struct { - NMDeviceClass parent; - -} NMDeviceModemClass; +typedef struct _NMDeviceModem NMDeviceModem; +typedef struct _NMDeviceModemClass NMDeviceModemClass; GType nm_device_modem_get_type (void); diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c index e3681c01ff..f5f12a03df 100644 --- a/src/devices/wwan/nm-modem-broadband.c +++ b/src/devices/wwan/nm-modem-broadband.c @@ -20,27 +20,39 @@ #include "nm-default.h" +#include "nm-modem-broadband.h" + #include <string.h> #include <arpa/inet.h> #include <libmm-glib.h> -#include "nm-modem-broadband.h" #include "nm-core-internal.h" #include "NetworkManagerUtils.h" #include "nm-device-private.h" #include "nm-platform.h" +#include "nm-ip4-config.h" +#include "nm-ip6-config.h" #define NM_MODEM_BROADBAND_MODEM "modem" -G_DEFINE_TYPE (NMModemBroadband, nm_modem_broadband, NM_TYPE_MODEM) +#define MODEM_CAPS_3GPP(caps) (caps & (MM_MODEM_CAPABILITY_GSM_UMTS | \ + MM_MODEM_CAPABILITY_LTE | \ + MM_MODEM_CAPABILITY_LTE_ADVANCED)) + +#define MODEM_CAPS_3GPP2(caps) (caps & (MM_MODEM_CAPABILITY_CDMA_EVDO)) + +/* Maximum time to keep the DBus call waiting for a connection result */ +#define MODEM_CONNECT_TIMEOUT_SECS 120 + +/*****************************************************************************/ typedef enum { - CONNECT_STEP_FIRST, - CONNECT_STEP_WAIT_FOR_SIM, - CONNECT_STEP_UNLOCK, - CONNECT_STEP_WAIT_FOR_READY, - CONNECT_STEP_CONNECT, - CONNECT_STEP_LAST + CONNECT_STEP_FIRST, + CONNECT_STEP_WAIT_FOR_SIM, + CONNECT_STEP_UNLOCK, + CONNECT_STEP_WAIT_FOR_READY, + CONNECT_STEP_CONNECT, + CONNECT_STEP_LAST, } ConnectStep; typedef struct { @@ -57,7 +69,13 @@ typedef struct { GError *first_error; } ConnectContext; -struct _NMModemBroadbandPrivate { +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_MODEM, +); + +typedef struct { /* The modem object from dbus */ MMObject *modem_object; /* Per-interface objects */ @@ -73,21 +91,20 @@ struct _NMModemBroadbandPrivate { MMBearerIpConfig *ipv6_config; guint32 pin_tries; -}; +} NMModemBroadbandPrivate; -enum { - PROP_0, - PROP_MODEM, +struct _NMModemBroadband { + NMModem parent; + NMModemBroadbandPrivate _priv; }; -#define MODEM_CAPS_3GPP(caps) (caps & (MM_MODEM_CAPABILITY_GSM_UMTS | \ - MM_MODEM_CAPABILITY_LTE | \ - MM_MODEM_CAPABILITY_LTE_ADVANCED)) +struct _NMModemBroadbandClass { + NMModemClass parent; +}; -#define MODEM_CAPS_3GPP2(caps) (caps & (MM_MODEM_CAPABILITY_CDMA_EVDO)) +G_DEFINE_TYPE (NMModemBroadband, nm_modem_broadband, NM_TYPE_MODEM) -/* Maximum time to keep the DBus call waiting for a connection result */ -#define MODEM_CONNECT_TIMEOUT_SECS 120 +#define NM_MODEM_BROADBAND_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMModemBroadband, NM_IS_MODEM_BROADBAND) /*****************************************************************************/ @@ -172,7 +189,7 @@ get_capabilities (NMModem *_self, /* For now, we don't care about the capability combinations, just merge all * combinations in a single mask */ - if (mm_modem_get_supported_capabilities (self->priv->modem_iface, &supported, &n_supported)) { + if (mm_modem_get_supported_capabilities (self->_priv.modem_iface, &supported, &n_supported)) { guint i; for (i = 0; i < n_supported; i++) @@ -182,7 +199,7 @@ get_capabilities (NMModem *_self, } *modem_caps = (NMDeviceModemCapabilities) all_supported; - *current_caps = (NMDeviceModemCapabilities) mm_modem_get_current_capabilities (self->priv->modem_iface); + *current_caps = (NMDeviceModemCapabilities) mm_modem_get_current_capabilities (self->_priv.modem_iface); } static gboolean @@ -193,7 +210,7 @@ owns_port (NMModem *_self, const char *iface) guint n_ports = 0, i; gboolean owns = FALSE; - mm_modem_peek_ports (self->priv->modem_iface, &ports, &n_ports); + mm_modem_peek_ports (self->_priv.modem_iface, &ports, &n_ports); for (i = 0; i < n_ports && !owns; i++) owns = (g_strcmp0 (iface, ports[i].name) == 0); return owns; @@ -206,7 +223,7 @@ ask_for_pin (NMModemBroadband *self) { guint32 tries; - tries = self->priv->pin_tries++; + tries = self->_priv.pin_tries++; nm_modem_get_secrets (NM_MODEM (self), NM_SETTING_GSM_SETTING_NAME, tries ? TRUE : FALSE, @@ -312,8 +329,8 @@ create_gsm_connect_properties (NMConnection *connection) static void connect_context_clear (NMModemBroadband *self) { - if (self->priv->ctx) { - ConnectContext *ctx = self->priv->ctx; + if (self->_priv.ctx) { + ConnectContext *ctx = self->_priv.ctx; g_clear_error (&ctx->first_error); g_clear_pointer (&ctx->ip_types, (GDestroyNotify) g_array_unref); @@ -322,7 +339,7 @@ connect_context_clear (NMModemBroadband *self) g_clear_object (&ctx->connect_properties); g_clear_object (&ctx->self); g_slice_free (ConnectContext, ctx); - self->priv->ctx = NULL; + self->_priv.ctx = NULL; } } @@ -333,20 +350,20 @@ connect_ready (MMModemSimple *simple_iface, GAsyncResult *res, NMModemBroadband *self) { - ConnectContext *ctx = self->priv->ctx; + ConnectContext *ctx = self->_priv.ctx; GError *error = NULL; NMModemIPMethod ip4_method = NM_MODEM_IP_METHOD_UNKNOWN; NMModemIPMethod ip6_method = NM_MODEM_IP_METHOD_UNKNOWN; - self->priv->bearer = mm_modem_simple_connect_finish (simple_iface, res, &error); + self->_priv.bearer = mm_modem_simple_connect_finish (simple_iface, res, &error); if (!ctx) return; - if (!self->priv->bearer) { + if (!self->_priv.bearer) { if (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_PIN) || (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_UNAUTHORIZED) && - mm_modem_get_unlock_required (self->priv->modem_iface) == MM_MODEM_LOCK_SIM_PIN)) { + mm_modem_get_unlock_required (self->_priv.modem_iface) == MM_MODEM_LOCK_SIM_PIN)) { g_error_free (error); /* Request PIN */ @@ -379,13 +396,13 @@ connect_ready (MMModemSimple *simple_iface, } /* Grab IP configurations */ - self->priv->ipv4_config = mm_bearer_get_ipv4_config (self->priv->bearer); - if (self->priv->ipv4_config) - ip4_method = get_bearer_ip_method (self->priv->ipv4_config); + self->_priv.ipv4_config = mm_bearer_get_ipv4_config (self->_priv.bearer); + if (self->_priv.ipv4_config) + ip4_method = get_bearer_ip_method (self->_priv.ipv4_config); - self->priv->ipv6_config = mm_bearer_get_ipv6_config (self->priv->bearer); - if (self->priv->ipv6_config) - ip6_method = get_bearer_ip_method (self->priv->ipv6_config); + self->_priv.ipv6_config = mm_bearer_get_ipv6_config (self->_priv.bearer); + if (self->_priv.ipv6_config) + ip6_method = get_bearer_ip_method (self->_priv.ipv6_config); if (ip4_method == NM_MODEM_IP_METHOD_UNKNOWN && ip6_method == NM_MODEM_IP_METHOD_UNKNOWN) { @@ -396,10 +413,10 @@ connect_ready (MMModemSimple *simple_iface, } g_object_set (self, - NM_MODEM_DATA_PORT, mm_bearer_get_interface (self->priv->bearer), + NM_MODEM_DATA_PORT, mm_bearer_get_interface (self->_priv.bearer), NM_MODEM_IP4_METHOD, ip4_method, NM_MODEM_IP6_METHOD, ip6_method, - NM_MODEM_IP_TIMEOUT, mm_bearer_get_ip_timeout (self->priv->bearer), + NM_MODEM_IP_TIMEOUT, mm_bearer_get_ip_timeout (self->_priv.bearer), NULL); ctx->step++; @@ -416,13 +433,13 @@ send_pin_ready (MMSim *sim, GAsyncResult *result, NMModemBroadband *self) if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; - if (!self->priv->ctx || self->priv->ctx->step != CONNECT_STEP_UNLOCK) + if (!self->_priv.ctx || self->_priv.ctx->step != CONNECT_STEP_UNLOCK) g_return_if_reached (); if (error) { if (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_PIN) || (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_UNAUTHORIZED) && - mm_modem_get_unlock_required (self->priv->modem_iface) == MM_MODEM_LOCK_SIM_PIN)) { + mm_modem_get_unlock_required (self->_priv.modem_iface) == MM_MODEM_LOCK_SIM_PIN)) { ask_for_pin (self); } else { g_signal_emit_by_name (self, NM_MODEM_PREPARE_RESULT, FALSE, translate_mm_error (self, error)); @@ -430,14 +447,14 @@ send_pin_ready (MMSim *sim, GAsyncResult *result, NMModemBroadband *self) return; } - self->priv->ctx->step++; + self->_priv.ctx->step++; connect_context_step (self); } static void connect_context_step (NMModemBroadband *self) { - ConnectContext *ctx = self->priv->ctx; + ConnectContext *ctx = self->_priv.ctx; switch (ctx->step) { case CONNECT_STEP_FIRST: @@ -445,7 +462,7 @@ connect_context_step (NMModemBroadband *self) /* fall through */ case CONNECT_STEP_WAIT_FOR_SIM: - if (MODEM_CAPS_3GPP (ctx->caps) && !self->priv->sim_iface) { + if (MODEM_CAPS_3GPP (ctx->caps) && !self->_priv.sim_iface) { /* Have to wait for the SIM to show up */ break; } @@ -454,13 +471,13 @@ connect_context_step (NMModemBroadband *self) case CONNECT_STEP_UNLOCK: if ( MODEM_CAPS_3GPP (ctx->caps) - && mm_modem_get_unlock_required (self->priv->modem_iface) == MM_MODEM_LOCK_SIM_PIN) { + && mm_modem_get_unlock_required (self->_priv.modem_iface) == MM_MODEM_LOCK_SIM_PIN) { NMSettingGsm *s_gsm = nm_connection_get_setting_gsm (ctx->connection); const char *pin = nm_setting_gsm_get_pin (s_gsm); /* If we have a PIN already, send it. If we don't, get it. */ if (pin) { - mm_sim_send_pin (self->priv->sim_iface, + mm_sim_send_pin (self->_priv.sim_iface, pin, ctx->cancellable, (GAsyncReadyCallback) send_pin_ready, @@ -476,7 +493,7 @@ connect_context_step (NMModemBroadband *self) case CONNECT_STEP_WAIT_FOR_READY: { GError *error = NULL; - if (mm_modem_get_state (self->priv->modem_iface) <= MM_MODEM_STATE_LOCKED) + if (mm_modem_get_state (self->_priv.modem_iface) <= MM_MODEM_STATE_LOCKED) break; /* Create core connect properties based on the modem capabilities */ @@ -532,7 +549,7 @@ connect_context_step (NMModemBroadband *self) nm_modem_ip_type_to_string (current), ctx->ip_type_tries + 1); - mm_modem_simple_connect (self->priv->simple_iface, + mm_modem_simple_connect (self->_priv.simple_iface, ctx->connect_properties, NULL, (GAsyncReadyCallback) connect_ready, @@ -544,7 +561,7 @@ connect_context_step (NMModemBroadband *self) /* fall through */ case CONNECT_STEP_LAST: - if (self->priv->ipv4_config || self->priv->ipv6_config) { + if (self->_priv.ipv4_config || self->_priv.ipv6_config) { g_signal_emit_by_name (self, NM_MODEM_PREPARE_RESULT, TRUE, NM_DEVICE_STATE_REASON_NONE); } else { /* If we have a saved error from a previous attempt, use it */ @@ -571,9 +588,9 @@ act_stage1_prepare (NMModem *_self, NMModemBroadband *self = NM_MODEM_BROADBAND (_self); /* Make sure we can get the Simple interface from the modem */ - if (!self->priv->simple_iface) { - self->priv->simple_iface = mm_object_get_modem_simple (self->priv->modem_object); - if (!self->priv->simple_iface) { + if (!self->_priv.simple_iface) { + self->_priv.simple_iface = mm_object_get_modem_simple (self->_priv.modem_object); + if (!self->_priv.simple_iface) { _LOGW ("cannot access the Simple mobile broadband modem interface"); *reason = NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED; return NM_ACT_STAGE_RETURN_FAILURE; @@ -583,12 +600,12 @@ act_stage1_prepare (NMModem *_self, connect_context_clear (self); /* Allocate new context for this connect stage attempt */ - self->priv->ctx = g_slice_new0 (ConnectContext); - self->priv->ctx->caps = mm_modem_get_current_capabilities (self->priv->modem_iface); - self->priv->ctx->cancellable = g_cancellable_new (); - self->priv->ctx->connection = g_object_ref (connection); + self->_priv.ctx = g_slice_new0 (ConnectContext); + self->_priv.ctx->caps = mm_modem_get_current_capabilities (self->_priv.modem_iface); + self->_priv.ctx->cancellable = g_cancellable_new (); + self->_priv.ctx->connection = g_object_ref (connection); - g_dbus_proxy_set_default_timeout (G_DBUS_PROXY (self->priv->simple_iface), MODEM_CONNECT_TIMEOUT_SECS * 1000); + g_dbus_proxy_set_default_timeout (G_DBUS_PROXY (self->_priv.simple_iface), MODEM_CONNECT_TIMEOUT_SECS * 1000); connect_context_step (self); return NM_ACT_STAGE_RETURN_POSTPONE; @@ -603,7 +620,7 @@ check_connection_compatible (NMModem *_self, NMConnection *connection) MMModemCapability modem_caps; NMSettingConnection *s_con; - modem_caps = mm_modem_get_current_capabilities (self->priv->modem_iface); + modem_caps = mm_modem_get_current_capabilities (self->_priv.modem_iface); s_con = nm_connection_get_setting_connection (connection); g_assert (s_con); @@ -650,7 +667,7 @@ complete_connection (NMModem *_self, MMModemCapability modem_caps; NMSettingPpp *s_ppp; - modem_caps = mm_modem_get_current_capabilities (self->priv->modem_iface); + modem_caps = mm_modem_get_current_capabilities (self->_priv.modem_iface); /* PPP settings common to 3GPP and 3GPP2 */ s_ppp = nm_connection_get_setting_ppp (connection); @@ -827,12 +844,12 @@ set_mm_enabled (NMModem *_self, NMModemBroadband *self = NM_MODEM_BROADBAND (_self); if (enabled) { - mm_modem_enable (self->priv->modem_iface, + mm_modem_enable (self->_priv.modem_iface, NULL, /* cancellable */ (GAsyncReadyCallback)modem_enable_ready, g_object_ref (self)); } else { - mm_modem_disable (self->priv->modem_iface, + mm_modem_disable (self->_priv.modem_iface, NULL, /* cancellable */ (GAsyncReadyCallback)modem_disable_ready, g_object_ref (self)); @@ -871,13 +888,13 @@ static_stage3_ip4_done (NMModemBroadband *self) const gchar **dns; guint i; - g_assert (self->priv->ipv4_config); - g_assert (self->priv->bearer); + g_assert (self->_priv.ipv4_config); + g_assert (self->_priv.bearer); _LOGI ("IPv4 static configuration:"); /* Fully fail if invalid IP address retrieved */ - address_string = mm_bearer_ip_config_get_address (self->priv->ipv4_config); + address_string = mm_bearer_ip_config_get_address (self->_priv.ipv4_config); if (!ip4_string_to_num (address_string, &address_network)) { error = g_error_new (NM_DEVICE_ERROR, NM_DEVICE_ERROR_INVALID_CONNECTION, @@ -888,17 +905,17 @@ static_stage3_ip4_done (NMModemBroadband *self) } /* Missing gateway not a hard failure */ - gw_string = mm_bearer_ip_config_get_gateway (self->priv->ipv4_config); + gw_string = mm_bearer_ip_config_get_gateway (self->_priv.ipv4_config); ip4_string_to_num (gw_string, &gw); - data_port = mm_bearer_get_interface (self->priv->bearer); + data_port = mm_bearer_get_interface (self->_priv.bearer); g_assert (data_port); config = nm_ip4_config_new (nm_platform_link_get_ifindex (NM_PLATFORM_GET, data_port)); memset (&address, 0, sizeof (address)); address.address = address_network; address.peer_address = address_network; - address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv4_config); + address.plen = mm_bearer_ip_config_get_prefix (self->_priv.ipv4_config); address.addr_source = NM_IP_CONFIG_SOURCE_WWAN; if (address.plen <= 32) nm_ip4_config_add_address (config, &address); @@ -911,7 +928,7 @@ static_stage3_ip4_done (NMModemBroadband *self) } /* DNS servers */ - dns = mm_bearer_ip_config_get_dns (self->priv->ipv4_config); + dns = mm_bearer_ip_config_get_dns (self->_priv.ipv4_config); for (i = 0; dns && dns[i]; i++) { if ( ip4_string_to_num (dns[i], &address_network) && address_network > 0) { @@ -955,13 +972,13 @@ stage3_ip6_done (NMModemBroadband *self) const gchar **dns; guint i; - g_assert (self->priv->ipv6_config); + g_assert (self->_priv.ipv6_config); memset (&address, 0, sizeof (address)); - ip_method = get_bearer_ip_method (self->priv->ipv6_config); + ip_method = get_bearer_ip_method (self->_priv.ipv6_config); - address_string = mm_bearer_ip_config_get_address (self->priv->ipv6_config); + address_string = mm_bearer_ip_config_get_address (self->_priv.ipv6_config); if (!address_string) { /* DHCP/SLAAC is allowed to skip addresses; other methods require it */ if (ip_method != NM_MODEM_IP_METHOD_AUTO) { @@ -985,17 +1002,17 @@ stage3_ip6_done (NMModemBroadband *self) _LOGI ("IPv6 base configuration:"); - data_port = mm_bearer_get_interface (self->priv->bearer); + data_port = mm_bearer_get_interface (self->_priv.bearer); g_assert (data_port); config = nm_ip6_config_new (nm_platform_link_get_ifindex (NM_PLATFORM_GET, data_port)); - address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv6_config); + address.plen = mm_bearer_ip_config_get_prefix (self->_priv.ipv6_config); if (address.plen <= 128) nm_ip6_config_add_address (config, &address); _LOGI (" address %s/%d", address_string, address.plen); - address_string = mm_bearer_ip_config_get_gateway (self->priv->ipv6_config); + address_string = mm_bearer_ip_config_get_gateway (self->_priv.ipv6_config); if (address_string) { if (!inet_pton (AF_INET6, address_string, (void *) &(address.address))) { error = g_error_new (NM_DEVICE_ERROR, @@ -1017,7 +1034,7 @@ stage3_ip6_done (NMModemBroadband *self) } /* DNS servers */ - dns = mm_bearer_ip_config_get_dns (self->priv->ipv6_config); + dns = mm_bearer_ip_config_get_dns (self->_priv.ipv6_config); for (i = 0; dns[i]; i++) { struct in6_addr addr; @@ -1125,14 +1142,14 @@ disconnect (NMModem *modem, } /* If no simple iface, we're done */ - if (!ctx->self->priv->simple_iface) { + if (!ctx->self->_priv.simple_iface) { disconnect_context_complete (ctx); return; } _LOGD ("notifying ModemManager about the modem disconnection"); ctx->cancellable = cancellable ? g_object_ref (cancellable) : NULL; - mm_modem_simple_disconnect (ctx->self->priv->simple_iface, + mm_modem_simple_disconnect (ctx->self->_priv.simple_iface, NULL, /* bearer path; if NULL given ALL get disconnected */ cancellable, (GAsyncReadyCallback) simple_disconnect_ready, @@ -1149,11 +1166,11 @@ deactivate_cleanup (NMModem *_self, NMDevice *device) /* TODO: cancel SimpleConnect() if any */ /* Cleanup IPv4 addresses and routes */ - g_clear_object (&self->priv->ipv4_config); - g_clear_object (&self->priv->ipv6_config); - g_clear_object (&self->priv->bearer); + g_clear_object (&self->_priv.ipv4_config); + g_clear_object (&self->_priv.ipv6_config); + g_clear_object (&self->_priv.bearer); - self->priv->pin_tries = 0; + self->_priv.pin_tries = 0; /* Chain up parent's */ NM_MODEM_CLASS (nm_modem_broadband_parent_class)->deactivate_cleanup (_self, device); @@ -1202,7 +1219,7 @@ modem_state_changed (MMModem *modem, mm_state_to_nm (new_state), mm_modem_state_change_reason_get_string (reason)); - if (self->priv->ctx && self->priv->ctx->step == CONNECT_STEP_WAIT_FOR_READY) + if (self->_priv.ctx && self->_priv.ctx->step == CONNECT_STEP_WAIT_FOR_READY) connect_context_step (self); } @@ -1223,40 +1240,6 @@ mm_ip_family_to_nm (MMBearerIpFamily family) return nm_type; } -NMModem * -nm_modem_broadband_new (GObject *object, GError **error) -{ - NMModem *modem; - MMObject *modem_object; - MMModem *modem_iface; - gchar *drivers; - - g_return_val_if_fail (MM_IS_OBJECT (object), NULL); - modem_object = MM_OBJECT (object); - - /* Ensure we have the 'Modem' interface and the primary port at least */ - modem_iface = mm_object_peek_modem (modem_object); - g_return_val_if_fail (!!modem_iface, NULL); - g_return_val_if_fail (!!mm_modem_get_primary_port (modem_iface), NULL); - - /* Build a single string with all drivers listed */ - drivers = g_strjoinv (", ", (gchar **)mm_modem_get_drivers (modem_iface)); - - modem = g_object_new (NM_TYPE_MODEM_BROADBAND, - NM_MODEM_PATH, mm_object_get_path (modem_object), - NM_MODEM_UID, mm_modem_get_primary_port (modem_iface), - NM_MODEM_CONTROL_PORT, mm_modem_get_primary_port (modem_iface), - NM_MODEM_DATA_PORT, NULL, /* We don't know it until bearer created */ - NM_MODEM_IP_TYPES, mm_ip_family_to_nm (mm_modem_get_supported_ip_families (modem_iface)), - NM_MODEM_STATE, mm_state_to_nm (mm_modem_get_state (modem_iface)), - NM_MODEM_DEVICE_ID, mm_modem_get_device_identifier (modem_iface), - NM_MODEM_BROADBAND_MODEM, modem_object, - NM_MODEM_DRIVER, drivers, - NULL); - g_free (drivers); - return modem; -} - static void get_sim_ready (MMModem *modem, GAsyncResult *res, @@ -1267,20 +1250,20 @@ get_sim_ready (MMModem *modem, new_sim = mm_modem_get_sim_finish (modem, res, &error); - if (new_sim != self->priv->sim_iface) { - g_clear_object (&self->priv->sim_iface); - self->priv->sim_iface = new_sim; + if (new_sim != self->_priv.sim_iface) { + g_clear_object (&self->_priv.sim_iface); + self->_priv.sim_iface = new_sim; } else g_clear_object (&new_sim); - if (self->priv->sim_iface) { + if (self->_priv.sim_iface) { g_object_set (G_OBJECT (self), - NM_MODEM_SIM_ID, mm_sim_get_identifier (self->priv->sim_iface), - NM_MODEM_SIM_OPERATOR_ID, mm_sim_get_operator_identifier (self->priv->sim_iface), + NM_MODEM_SIM_ID, mm_sim_get_identifier (self->_priv.sim_iface), + NM_MODEM_SIM_OPERATOR_ID, mm_sim_get_operator_identifier (self->_priv.sim_iface), NULL); /* If we're waiting for the SIM during a connect, proceed with the connect */ - if (self->priv->ctx && self->priv->ctx->step == CONNECT_STEP_WAIT_FOR_SIM) + if (self->_priv.ctx && self->_priv.ctx->step == CONNECT_STEP_WAIT_FOR_SIM) connect_context_step (self); } else { _NMLOG (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND) @@ -1297,10 +1280,10 @@ sim_changed (MMModem *modem, GParamSpec *pspec, gpointer user_data) { NMModemBroadband *self = NM_MODEM_BROADBAND (user_data); - g_return_if_fail (modem == self->priv->modem_iface); + g_return_if_fail (modem == self->_priv.modem_iface); - if (mm_modem_get_sim_path (self->priv->modem_iface)) { - mm_modem_get_sim (self->priv->modem_iface, + if (mm_modem_get_sim_path (self->_priv.modem_iface)) { + mm_modem_get_sim (self->_priv.modem_iface, NULL, /* cancellable */ (GAsyncReadyCallback) get_sim_ready, g_object_ref (self)); @@ -1316,7 +1299,7 @@ supported_ip_families_changed (MMModem *modem, GParamSpec *pspec, gpointer user_ { NMModemBroadband *self = NM_MODEM_BROADBAND (user_data); - g_return_if_fail (modem == self->priv->modem_iface); + g_return_if_fail (modem == self->_priv.modem_iface); g_object_set (G_OBJECT (self), NM_MODEM_IP_TYPES, @@ -1324,12 +1307,24 @@ supported_ip_families_changed (MMModem *modem, GParamSpec *pspec, gpointer user_ NULL); } +/*****************************************************************************/ + static void -nm_modem_broadband_init (NMModemBroadband *self) +get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - NM_TYPE_MODEM_BROADBAND, - NMModemBroadbandPrivate); + NMModemBroadband *self = NM_MODEM_BROADBAND (object); + + switch (prop_id) { + case PROP_MODEM: + g_value_set_object (value, self->_priv.modem_object); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void @@ -1343,19 +1338,19 @@ set_property (GObject *object, switch (prop_id) { case PROP_MODEM: /* construct-only */ - self->priv->modem_object = g_value_dup_object (value); - self->priv->modem_iface = mm_object_get_modem (self->priv->modem_object); - g_assert (self->priv->modem_iface != NULL); - g_signal_connect (self->priv->modem_iface, + self->_priv.modem_object = g_value_dup_object (value); + self->_priv.modem_iface = mm_object_get_modem (self->_priv.modem_object); + g_assert (self->_priv.modem_iface != NULL); + g_signal_connect (self->_priv.modem_iface, "state-changed", G_CALLBACK (modem_state_changed), self); - g_signal_connect (self->priv->modem_iface, + g_signal_connect (self->_priv.modem_iface, "notify::sim", G_CALLBACK (sim_changed), self); - sim_changed (self->priv->modem_iface, NULL, self); - g_signal_connect (self->priv->modem_iface, + sim_changed (self->_priv.modem_iface, NULL, self); + g_signal_connect (self->_priv.modem_iface, "notify::supported-ip-families", G_CALLBACK (supported_ip_families_changed), self); @@ -1369,22 +1364,45 @@ set_property (GObject *object, } } +/*****************************************************************************/ + static void -get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +nm_modem_broadband_init (NMModemBroadband *self) { - NMModemBroadband *self = NM_MODEM_BROADBAND (object); +} - switch (prop_id) { - case PROP_MODEM: - g_value_set_object (value, self->priv->modem_object); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } +NMModem * +nm_modem_broadband_new (GObject *object, GError **error) +{ + NMModem *modem; + MMObject *modem_object; + MMModem *modem_iface; + gchar *drivers; + + g_return_val_if_fail (MM_IS_OBJECT (object), NULL); + modem_object = MM_OBJECT (object); + + /* Ensure we have the 'Modem' interface and the primary port at least */ + modem_iface = mm_object_peek_modem (modem_object); + g_return_val_if_fail (!!modem_iface, NULL); + g_return_val_if_fail (!!mm_modem_get_primary_port (modem_iface), NULL); + + /* Build a single string with all drivers listed */ + drivers = g_strjoinv (", ", (gchar **)mm_modem_get_drivers (modem_iface)); + + modem = g_object_new (NM_TYPE_MODEM_BROADBAND, + NM_MODEM_PATH, mm_object_get_path (modem_object), + NM_MODEM_UID, mm_modem_get_primary_port (modem_iface), + NM_MODEM_CONTROL_PORT, mm_modem_get_primary_port (modem_iface), + NM_MODEM_DATA_PORT, NULL, /* We don't know it until bearer created */ + NM_MODEM_IP_TYPES, mm_ip_family_to_nm (mm_modem_get_supported_ip_families (modem_iface)), + NM_MODEM_STATE, mm_state_to_nm (mm_modem_get_state (modem_iface)), + NM_MODEM_DEVICE_ID, mm_modem_get_device_identifier (modem_iface), + NM_MODEM_BROADBAND_MODEM, modem_object, + NM_MODEM_DRIVER, drivers, + NULL); + g_free (drivers); + return modem; } static void @@ -1393,13 +1411,13 @@ dispose (GObject *object) NMModemBroadband *self = NM_MODEM_BROADBAND (object); connect_context_clear (self); - g_clear_object (&self->priv->ipv4_config); - g_clear_object (&self->priv->ipv6_config); - g_clear_object (&self->priv->bearer); - g_clear_object (&self->priv->modem_iface); - g_clear_object (&self->priv->simple_iface); - g_clear_object (&self->priv->sim_iface); - g_clear_object (&self->priv->modem_object); + g_clear_object (&self->_priv.ipv4_config); + g_clear_object (&self->_priv.ipv6_config); + g_clear_object (&self->_priv.bearer); + g_clear_object (&self->_priv.modem_iface); + g_clear_object (&self->_priv.simple_iface); + g_clear_object (&self->_priv.sim_iface); + g_clear_object (&self->_priv.modem_object); G_OBJECT_CLASS (nm_modem_broadband_parent_class)->dispose (object); } @@ -1410,9 +1428,6 @@ nm_modem_broadband_class_init (NMModemBroadbandClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMModemClass *modem_class = NM_MODEM_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMModemBroadbandPrivate)); - - /* Virtual methods */ object_class->dispose = dispose; object_class->get_property = get_property; object_class->set_property = set_property; @@ -1430,11 +1445,11 @@ nm_modem_broadband_class_init (NMModemBroadbandClass *klass) modem_class->act_stage1_prepare = act_stage1_prepare; modem_class->owns_port = owns_port; - /* Properties */ - g_object_class_install_property - (object_class, PROP_MODEM, - g_param_spec_object (NM_MODEM_BROADBAND_MODEM, "", "", - MM_GDBUS_TYPE_OBJECT, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_MODEM] = + g_param_spec_object (NM_MODEM_BROADBAND_MODEM, "", "", + MM_GDBUS_TYPE_OBJECT, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); } diff --git a/src/devices/wwan/nm-modem-broadband.h b/src/devices/wwan/nm-modem-broadband.h index 6607f7f553..4948cb3b75 100644 --- a/src/devices/wwan/nm-modem-broadband.h +++ b/src/devices/wwan/nm-modem-broadband.h @@ -30,18 +30,8 @@ #define NM_IS_MODEM_BROADBAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_MODEM_BROADBAND)) #define NM_MODEM_BROADBAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_MODEM_BROADBAND, NMModemBroadbandClass)) -typedef struct _NMModemBroadband NMModemBroadband; -typedef struct _NMModemBroadbandClass NMModemBroadbandClass; -typedef struct _NMModemBroadbandPrivate NMModemBroadbandPrivate; - -struct _NMModemBroadband { - NMModem parent; - NMModemBroadbandPrivate *priv; -}; - -struct _NMModemBroadbandClass { - NMModemClass parent; -}; +typedef struct _NMModemBroadband NMModemBroadband; +typedef struct _NMModemBroadbandClass NMModemBroadbandClass; GType nm_modem_broadband_get_type (void); diff --git a/src/devices/wwan/nm-modem-manager.c b/src/devices/wwan/nm-modem-manager.c index d12856c9ff..b1f6d92e7f 100644 --- a/src/devices/wwan/nm-modem-manager.c +++ b/src/devices/wwan/nm-modem-manager.c @@ -43,9 +43,16 @@ #define MODEM_POKE_INTERVAL 120 -G_DEFINE_TYPE (NMModemManager, nm_modem_manager, G_TYPE_OBJECT) +/*****************************************************************************/ + +enum { + MODEM_ADDED, + LAST_SIGNAL, +}; -struct _NMModemManagerPrivate { +static guint signals[LAST_SIGNAL] = { 0 }; + +typedef struct { GDBusConnection *dbus_connection; MMManager *modem_manager; guint mm_launch_id; @@ -57,15 +64,21 @@ struct _NMModemManagerPrivate { GDBusProxy *ofono_proxy; #endif - /* Common */ GHashTable *modems; +} NMModemManagerPrivate; + +struct _NMModemManager { + GObject parent; + NMModemManagerPrivate _priv; }; -enum { - MODEM_ADDED, - LAST_SIGNAL, +struct _NMModemManagerClass { + GObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; + +G_DEFINE_TYPE (NMModemManager, nm_modem_manager, G_TYPE_OBJECT) + +#define NM_MODEM_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMModemManager, NM_IS_MODEM_MANAGER) /*****************************************************************************/ @@ -75,13 +88,13 @@ handle_new_modem (NMModemManager *self, NMModem *modem) const char *path; path = nm_modem_get_path (modem); - if (g_hash_table_lookup (self->priv->modems, path)) { + if (g_hash_table_lookup (self->_priv.modems, path)) { g_warn_if_reached (); return; } /* Track the new modem */ - g_hash_table_insert (self->priv->modems, g_strdup (path), modem); + g_hash_table_insert (self->_priv.modems, g_strdup (path), modem); g_signal_emit (self, signals[MODEM_ADDED], 0, modem); } @@ -95,12 +108,12 @@ remove_one_modem (gpointer key, gpointer value, gpointer user_data) static void clear_modem_manager (NMModemManager *self) { - if (!self->priv->modem_manager) + if (!self->_priv.modem_manager) return; - nm_clear_g_signal_handler (self->priv->modem_manager, &self->priv->mm_name_owner_changed_id); - nm_clear_g_signal_handler (self->priv->modem_manager, &self->priv->mm_object_added_id); - nm_clear_g_signal_handler (self->priv->modem_manager, &self->priv->mm_object_removed_id); - g_clear_object (&self->priv->modem_manager); + nm_clear_g_signal_handler (self->_priv.modem_manager, &self->_priv.mm_name_owner_changed_id); + nm_clear_g_signal_handler (self->_priv.modem_manager, &self->_priv.mm_object_added_id); + nm_clear_g_signal_handler (self->_priv.modem_manager, &self->_priv.mm_object_removed_id); + g_clear_object (&self->_priv.modem_manager); } static void @@ -115,7 +128,7 @@ modem_object_added (MMManager *modem_manager, /* Ensure we don't have the same modem already */ path = mm_object_get_path (modem_object); - if (g_hash_table_lookup (self->priv->modems, path)) { + if (g_hash_table_lookup (self->_priv.modems, path)) { nm_log_warn (LOGD_MB, "modem with path %s already exists, ignoring", path); return; } @@ -153,12 +166,12 @@ modem_object_removed (MMManager *manager, const gchar *path; path = mm_object_get_path (modem_object); - modem = (NMModem *) g_hash_table_lookup (self->priv->modems, path); + modem = (NMModem *) g_hash_table_lookup (self->_priv.modems, path); if (!modem) return; nm_modem_emit_removed (modem); - g_hash_table_remove (self->priv->modems, path); + g_hash_table_remove (self->_priv.modems, path); } static void @@ -169,9 +182,9 @@ modem_manager_available (NMModemManager *self) nm_log_info (LOGD_MB, "ModemManager available in the bus"); /* Update initial modems list */ - modems = g_dbus_object_manager_get_objects (G_DBUS_OBJECT_MANAGER (self->priv->modem_manager)); + modems = g_dbus_object_manager_get_objects (G_DBUS_OBJECT_MANAGER (self->_priv.modem_manager)); for (l = modems; l; l = g_list_next (l)) - modem_object_added (self->priv->modem_manager, MM_OBJECT (l->data), self); + modem_object_added (self->_priv.modem_manager, MM_OBJECT (l->data), self); g_list_free_full (modems, (GDestroyNotify) g_object_unref); } @@ -187,7 +200,7 @@ modem_manager_name_owner_changed (MMManager *modem_manager, gchar *name_owner; /* Quit poking, if any */ - nm_clear_g_source (&self->priv->mm_launch_id); + nm_clear_g_source (&self->_priv.mm_launch_id); name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (modem_manager)); if (!name_owner) { @@ -226,7 +239,7 @@ ofono_create_modem (NMModemManager *self, const char *path) * receive ModemAdded signals before GetModems() returns, so some of the * modems returned from GetModems() may already have been created. */ - if (!g_hash_table_lookup (self->priv->modems, path)) { + if (!g_hash_table_lookup (self->_priv.modems, path)) { modem = nm_modem_ofono_new (path); if (modem) handle_new_modem (self, modem); @@ -256,10 +269,10 @@ ofono_signal_cb (GDBusProxy *proxy, g_variant_get (parameters, "(o)", &object_path); nm_log_info (LOGD_MB, "oFono modem removed: %s", object_path); - modem = (NMModem *) g_hash_table_lookup (self->priv->modems, object_path); + modem = (NMModem *) g_hash_table_lookup (self->_priv.modems, object_path); if (modem) { nm_modem_emit_removed (modem); - g_hash_table_remove (self->priv->modems, object_path); + g_hash_table_remove (self->_priv.modems, object_path); } else { nm_log_warn (LOGD_MB, "could not remove modem %s, not found in table", object_path); @@ -297,11 +310,11 @@ ofono_check_name_owner (NMModemManager *self) { gs_free char *name_owner = NULL; - name_owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (self->priv->ofono_proxy)); + name_owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (self->_priv.ofono_proxy)); if (name_owner) { nm_log_info (LOGD_MB, "oFono is now available"); - g_dbus_proxy_call (self->priv->ofono_proxy, + g_dbus_proxy_call (self->_priv.ofono_proxy, "GetModems", NULL, G_DBUS_CALL_FLAGS_NONE, @@ -316,7 +329,7 @@ ofono_check_name_owner (NMModemManager *self) nm_log_info (LOGD_MB, "oFono disappeared from bus"); /* Remove any oFono modems that might be left around */ - g_hash_table_iter_init (&iter, self->priv->modems); + g_hash_table_iter_init (&iter, self->_priv.modems); while (g_hash_table_iter_next (&iter, NULL, (gpointer) &modem)) { if (NM_IS_MODEM_OFONO (modem)) { nm_modem_emit_removed (modem); @@ -340,18 +353,18 @@ ofono_proxy_new_cb (GObject *source_object, GAsyncResult *res, gpointer user_dat gs_unref_object NMModemManager *self = NM_MODEM_MANAGER (user_data); gs_free_error GError *error = NULL; - self->priv->ofono_proxy = g_dbus_proxy_new_finish (res, &error); + self->_priv.ofono_proxy = g_dbus_proxy_new_finish (res, &error); if (error) { nm_log_warn (LOGD_MB, "error getting oFono bus proxy: %s", error->message); return; } - g_signal_connect (self->priv->ofono_proxy, + g_signal_connect (self->_priv.ofono_proxy, "notify::g-name-owner", G_CALLBACK (ofono_name_owner_changed), self); - g_signal_connect (self->priv->ofono_proxy, + g_signal_connect (self->_priv.ofono_proxy, "g-signal", G_CALLBACK (ofono_signal_cb), self); @@ -362,8 +375,8 @@ ofono_proxy_new_cb (GObject *source_object, GAsyncResult *res, gpointer user_dat static void ensure_ofono_client (NMModemManager *self) { - g_assert (self->priv->dbus_connection); - g_dbus_proxy_new (self->priv->dbus_connection, + g_assert (self->_priv.dbus_connection); + g_dbus_proxy_new (self->_priv.dbus_connection, G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, NULL, OFONO_DBUS_SERVICE, @@ -408,7 +421,7 @@ static void modem_manager_poke (NMModemManager *self) { /* If there is no current owner right away, ensure we poke to get one */ - g_dbus_connection_call (self->priv->dbus_connection, + g_dbus_connection_call (self->_priv.dbus_connection, "org.freedesktop.ModemManager1", "/org/freedesktop/ModemManager1", DBUS_INTERFACE_PEER, @@ -427,7 +440,7 @@ modem_manager_check_name_owner (NMModemManager *self) { gs_free gchar *name_owner = NULL; - name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (self->priv->modem_manager)); + name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (self->_priv.modem_manager)); if (name_owner) { /* Available! */ modem_manager_available (self); @@ -448,10 +461,10 @@ manager_new_ready (GObject *source, GError *error = NULL; - g_return_if_fail (!self->priv->modem_manager); + g_return_if_fail (!self->_priv.modem_manager); - self->priv->modem_manager = mm_manager_new_finish (res, &error); - if (!self->priv->modem_manager) { + self->_priv.modem_manager = mm_manager_new_finish (res, &error); + if (!self->_priv.modem_manager) { /* We're not really supposed to get any error here. If we do get one, * though, just re-schedule the MMManager creation after some time. * During this period, name-owner changes won't be followed. */ @@ -461,18 +474,18 @@ manager_new_ready (GObject *source, schedule_modem_manager_relaunch (self, MODEM_POKE_INTERVAL); } else { /* Setup signals in the GDBusObjectManagerClient */ - self->priv->mm_name_owner_changed_id = - g_signal_connect (self->priv->modem_manager, + self->_priv.mm_name_owner_changed_id = + g_signal_connect (self->_priv.modem_manager, "notify::name-owner", G_CALLBACK (modem_manager_name_owner_changed), self); - self->priv->mm_object_added_id = - g_signal_connect (self->priv->modem_manager, + self->_priv.mm_object_added_id = + g_signal_connect (self->_priv.modem_manager, "object-added", G_CALLBACK (modem_object_added), self); - self->priv->mm_object_removed_id = - g_signal_connect (self->priv->modem_manager, + self->_priv.mm_object_removed_id = + g_signal_connect (self->_priv.modem_manager, "object-removed", G_CALLBACK (modem_object_removed), self); @@ -487,13 +500,13 @@ manager_new_ready (GObject *source, static void ensure_modem_manager (NMModemManager *self) { - g_assert (self->priv->dbus_connection); + g_assert (self->_priv.dbus_connection); /* Create the GDBusObjectManagerClient. We do not request to autostart, as * we don't really want the MMManager creation to fail. We can always poke * later on if we want to request the autostart */ - if (!self->priv->modem_manager) { - mm_manager_new (self->priv->dbus_connection, + if (!self->_priv.modem_manager) { + mm_manager_new (self->_priv.dbus_connection, G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START, NULL, (GAsyncReadyCallback)manager_new_ready, @@ -508,7 +521,7 @@ ensure_modem_manager (NMModemManager *self) static gboolean mm_launch_cb (NMModemManager *self) { - self->priv->mm_launch_id = 0; + self->_priv.mm_launch_id = 0; ensure_modem_manager (self); return G_SOURCE_REMOVE; } @@ -520,9 +533,9 @@ schedule_modem_manager_relaunch (NMModemManager *self, /* No need to pass an extra reference to self; timeout/idle will be * cancelled if the object gets disposed. */ if (n_seconds) - self->priv->mm_launch_id = g_timeout_add_seconds (n_seconds, (GSourceFunc)mm_launch_cb, self); + self->_priv.mm_launch_id = g_timeout_add_seconds (n_seconds, (GSourceFunc)mm_launch_cb, self); else - self->priv->mm_launch_id = g_idle_add ((GSourceFunc)mm_launch_cb, self); + self->_priv.mm_launch_id = g_idle_add ((GSourceFunc)mm_launch_cb, self); } static void @@ -533,8 +546,8 @@ bus_get_ready (GObject *source, gs_unref_object NMModemManager *self = NM_MODEM_MANAGER (user_data); gs_free_error GError *error = NULL; - self->priv->dbus_connection = g_bus_get_finish (res, &error); - if (!self->priv->dbus_connection) { + self->_priv.dbus_connection = g_bus_get_finish (res, &error); + if (!self->_priv.dbus_connection) { nm_log_warn (LOGD_MB, "error getting bus connection: %s", error->message); return; } @@ -551,11 +564,8 @@ bus_get_ready (GObject *source, static void nm_modem_manager_init (NMModemManager *self) { - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_MODEM_MANAGER, NMModemManagerPrivate); + self->_priv.modems = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); - self->priv->modems = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); - - // FIXME: this doesn't handle bus-daemon restart g_bus_get (G_BUS_TYPE_SYSTEM, NULL, (GAsyncReadyCallback)bus_get_ready, @@ -567,26 +577,25 @@ dispose (GObject *object) { NMModemManager *self = NM_MODEM_MANAGER (object); - nm_clear_g_source (&self->priv->mm_launch_id); + nm_clear_g_source (&self->_priv.mm_launch_id); clear_modem_manager (self); #if WITH_OFONO - if (self->priv->ofono_proxy) { - g_signal_handlers_disconnect_by_func (self->priv->ofono_proxy, ofono_name_owner_changed, self); - g_signal_handlers_disconnect_by_func (self->priv->ofono_proxy, ofono_signal_cb, self); - g_clear_object (&self->priv->ofono_proxy); + if (self->_priv.ofono_proxy) { + g_signal_handlers_disconnect_by_func (self->_priv.ofono_proxy, ofono_name_owner_changed, self); + g_signal_handlers_disconnect_by_func (self->_priv.ofono_proxy, ofono_signal_cb, self); + g_clear_object (&self->_priv.ofono_proxy); } #endif - g_clear_object (&self->priv->dbus_connection); + g_clear_object (&self->_priv.dbus_connection); - if (self->priv->modems) { - g_hash_table_foreach_remove (self->priv->modems, remove_one_modem, object); - g_hash_table_destroy (self->priv->modems); + if (self->_priv.modems) { + g_hash_table_foreach_remove (self->_priv.modems, remove_one_modem, object); + g_hash_table_destroy (self->_priv.modems); } - /* Chain up to the parent class */ G_OBJECT_CLASS (nm_modem_manager_parent_class)->dispose (object); } @@ -595,15 +604,12 @@ nm_modem_manager_class_init (NMModemManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMModemManagerPrivate)); - object_class->dispose = dispose; signals[MODEM_ADDED] = - g_signal_new (NM_MODEM_MANAGER_MODEM_ADDED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemManagerClass, modem_added), - NULL, NULL, NULL, - G_TYPE_NONE, 1, NM_TYPE_MODEM); + g_signal_new (NM_MODEM_MANAGER_MODEM_ADDED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, NM_TYPE_MODEM); } diff --git a/src/devices/wwan/nm-modem-manager.h b/src/devices/wwan/nm-modem-manager.h index b0014c6a89..65594dfa56 100644 --- a/src/devices/wwan/nm-modem-manager.h +++ b/src/devices/wwan/nm-modem-manager.h @@ -25,23 +25,17 @@ #include "nm-modem.h" -#define NM_TYPE_MODEM_MANAGER (nm_modem_manager_get_type ()) -#define NM_MODEM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_MODEM_MANAGER, NMModemManager)) +#define NM_TYPE_MODEM_MANAGER (nm_modem_manager_get_type ()) +#define NM_MODEM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_MODEM_MANAGER, NMModemManager)) +#define NM_MODEM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_MODEM_MANAGER, NMModemManagerClass)) +#define NM_IS_MODEM_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_MODEM_MANAGER)) +#define NM_IS_MODEM_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_MODEM_MANAGER)) +#define NM_MODEM_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_MODEM_MANAGER, NMModemManagerClass)) #define NM_MODEM_MANAGER_MODEM_ADDED "modem-added" -typedef struct _NMModemManagerPrivate NMModemManagerPrivate; - -typedef struct { - GObject parent; - NMModemManagerPrivate *priv; -} NMModemManager; - -typedef struct { - GObjectClass parent; - - void (*modem_added) (NMModemManager *self, NMModem *modem); -} NMModemManagerClass; +typedef struct _NMModemManager NMModemManager; +typedef struct _NMModemManagerClass NMModemManagerClass; GType nm_modem_manager_get_type (void); diff --git a/src/devices/wwan/nm-modem-ofono.c b/src/devices/wwan/nm-modem-ofono.c index 86492d3d98..69582f97c1 100644 --- a/src/devices/wwan/nm-modem-ofono.c +++ b/src/devices/wwan/nm-modem-ofono.c @@ -28,10 +28,7 @@ #include "nm-device-private.h" #include "nm-modem.h" #include "nm-platform.h" - -G_DEFINE_TYPE (NMModemOfono, nm_modem_ofono, NM_TYPE_MODEM) - -#define NM_MODEM_OFONO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_MODEM_OFONO, NMModemOfonoPrivate)) +#include "nm-ip4-config.h" #define VARIANT_IS_OF_TYPE_BOOLEAN(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_BOOLEAN) )) #define VARIANT_IS_OF_TYPE_STRING(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_STRING) )) @@ -39,6 +36,8 @@ G_DEFINE_TYPE (NMModemOfono, nm_modem_ofono, NM_TYPE_MODEM) #define VARIANT_IS_OF_TYPE_STRING_ARRAY(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_STRING_ARRAY) )) #define VARIANT_IS_OF_TYPE_DICTIONARY(v) ((v) != NULL && ( g_variant_is_of_type ((v), G_VARIANT_TYPE_DICTIONARY) )) +/*****************************************************************************/ + typedef struct { GHashTable *connect_properties; @@ -58,6 +57,19 @@ typedef struct { NMIP4Config *ip4_config; } NMModemOfonoPrivate; +struct _NMModemOfono { + NMModem parent; + NMModemOfonoPrivate _priv; +}; + +struct _NMModemOfonoClass { + NMModemClass parent; +}; + +G_DEFINE_TYPE (NMModemOfono, nm_modem_ofono, NM_TYPE_MODEM) + +#define NM_MODEM_OFONO_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMModemOfono, NM_IS_MODEM_OFONO) + /*****************************************************************************/ #define _NMLOG_DOMAIN LOGD_MB @@ -239,7 +251,7 @@ disconnect (NMModem *modem, user_data, disconnect); } - /* Setup cancellable */ + ctx->cancellable = cancellable ? g_object_ref (cancellable) : NULL; if (disconnect_context_complete_if_cancelled (ctx)) return; @@ -261,17 +273,16 @@ disconnect (NMModem *modem, } static void -deactivate_cleanup (NMModem *_self, NMDevice *device) +deactivate_cleanup (NMModem *modem, NMDevice *device) { - NMModemOfono *self = NM_MODEM_OFONO (_self); + NMModemOfono *self = NM_MODEM_OFONO (modem); NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self); /* TODO: cancel SimpleConnect() if any */ g_clear_object (&priv->ip4_config); - /* Chain up parent's */ - NM_MODEM_CLASS (nm_modem_ofono_parent_class)->deactivate_cleanup (_self, device); + NM_MODEM_CLASS (nm_modem_ofono_parent_class)->deactivate_cleanup (modem, device); } @@ -700,30 +711,6 @@ modem_get_properties_done (GDBusProxy *proxy, GAsyncResult *result, gpointer use g_variant_unref (v_properties); } -NMModem * -nm_modem_ofono_new (const char *path) -{ - gs_free char *basename = NULL; - - g_return_val_if_fail (path != NULL, NULL); - - nm_log_info (LOGD_MB, "ofono: creating new Ofono modem path %s", path); - - /* Use short modem name (not its object path) as the NM device name (which - * comes from NM_MODEM_UID)and the device ID. - */ - basename = g_path_get_basename (path); - - return (NMModem *) g_object_new (NM_TYPE_MODEM_OFONO, - NM_MODEM_PATH, path, - NM_MODEM_UID, basename, - NM_MODEM_DEVICE_ID, basename, - NM_MODEM_CONTROL_PORT, "ofono", /* mandatory */ - NM_MODEM_DRIVER, "ofono", - NM_MODEM_STATE, NM_MODEM_STATE_INITIALIZING, - NULL); -} - static void stage1_prepare_done (GDBusProxy *proxy, GAsyncResult *result, gpointer user_data) { @@ -933,11 +920,11 @@ out: } static NMActStageReturn -static_stage3_ip4_config_start (NMModem *_self, +static_stage3_ip4_config_start (NMModem *modem, NMActRequest *req, NMDeviceStateReason *reason) { - NMModemOfono *self = NM_MODEM_OFONO (_self); + NMModemOfono *self = NM_MODEM_OFONO (modem); NMModemOfonoPrivate *priv = NM_MODEM_OFONO_GET_PRIVATE (self); NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE; GError *error = NULL; @@ -1123,6 +1110,8 @@ modem_proxy_new_cb (GDBusProxy *proxy, GAsyncResult *result, gpointer user_data) g_object_ref (self)); } +/*****************************************************************************/ + static void nm_modem_ofono_init (NMModemOfono *self) { @@ -1144,6 +1133,30 @@ constructed (GObject *object) g_object_ref (self)); } +NMModem * +nm_modem_ofono_new (const char *path) +{ + gs_free char *basename = NULL; + + g_return_val_if_fail (path != NULL, NULL); + + nm_log_info (LOGD_MB, "ofono: creating new Ofono modem path %s", path); + + /* Use short modem name (not its object path) as the NM device name (which + * comes from NM_MODEM_UID)and the device ID. + */ + basename = g_path_get_basename (path); + + return (NMModem *) g_object_new (NM_TYPE_MODEM_OFONO, + NM_MODEM_PATH, path, + NM_MODEM_UID, basename, + NM_MODEM_DEVICE_ID, basename, + NM_MODEM_CONTROL_PORT, "ofono", /* mandatory */ + NM_MODEM_DRIVER, "ofono", + NM_MODEM_STATE, NM_MODEM_STATE_INITIALIZING, + NULL); +} + static void dispose (GObject *object) { @@ -1182,9 +1195,6 @@ nm_modem_ofono_class_init (NMModemOfonoClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMModemClass *modem_class = NM_MODEM_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMModemOfonoPrivate)); - - /* Virtual methods */ object_class->constructed = constructed; object_class->dispose = dispose; @@ -1194,9 +1204,6 @@ nm_modem_ofono_class_init (NMModemOfonoClass *klass) modem_class->deactivate_cleanup = deactivate_cleanup; modem_class->check_connection_compatible = check_connection_compatible; - /* same as nm-modem-broadband */ modem_class->act_stage1_prepare = act_stage1_prepare; - - /* same as nm-modem-broadband */ modem_class->static_stage3_ip4_config_start = static_stage3_ip4_config_start; } diff --git a/src/devices/wwan/nm-modem-ofono.h b/src/devices/wwan/nm-modem-ofono.h index 5965526d61..d9cb68ac94 100644 --- a/src/devices/wwan/nm-modem-ofono.h +++ b/src/devices/wwan/nm-modem-ofono.h @@ -38,13 +38,8 @@ #define OFONO_DBUS_INTERFACE_CONNECTION_CONTEXT "org.ofono.ConnectionContext" #define OFONO_DBUS_INTERFACE_SIM_MANAGER "org.ofono.SimManager" -typedef struct { - NMModem parent; -} NMModemOfono; - -typedef struct { - NMModemClass parent; -} NMModemOfonoClass; +typedef struct _NMModemOfono NMModemOfono; +typedef struct _NMModemOfonoClass NMModemOfonoClass; GType nm_modem_ofono_get_type (void); diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c index 94430af47a..d5f12b1cc2 100644 --- a/src/devices/wwan/nm-modem.c +++ b/src/devices/wwan/nm-modem.c @@ -32,13 +32,14 @@ #include "nm-device-private.h" #include "nm-modem-enum-types.h" #include "nm-route-manager.h" +#include "nm-act-request.h" +#include "nm-ip4-config.h" +#include "nm-ip6-config.h" +#include "ppp-manager/nm-ppp-status.h" -G_DEFINE_TYPE (NMModem, nm_modem, G_TYPE_OBJECT) - -#define NM_MODEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_MODEM, NMModemPrivate)) +/*****************************************************************************/ -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE (NMModem, PROP_CONTROL_PORT, PROP_DATA_PORT, PROP_PATH, @@ -52,11 +53,24 @@ enum { PROP_SIM_ID, PROP_IP_TYPES, PROP_SIM_OPERATOR_ID, +); - LAST_PROP +enum { + PPP_STATS, + PPP_FAILED, + PREPARE_RESULT, + IP4_CONFIG_RESULT, + IP6_CONFIG_RESULT, + AUTH_REQUESTED, + AUTH_RESULT, + REMOVED, + STATE_CHANGED, + LAST_SIGNAL, }; -typedef struct { +static guint signals[LAST_SIGNAL] = { 0 }; + +typedef struct _NMModemPrivate { char *uid; char *path; char *driver; @@ -86,22 +100,9 @@ typedef struct { guint32 out_bytes; } NMModemPrivate; -enum { - PPP_STATS, - PPP_FAILED, - PREPARE_RESULT, - IP4_CONFIG_RESULT, - IP6_CONFIG_RESULT, - AUTH_REQUESTED, - AUTH_RESULT, - REMOVED, - STATE_CHANGED, - - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0 }; +G_DEFINE_TYPE (NMModem, nm_modem, G_TYPE_OBJECT) +#define NM_MODEM_GET_PRIVATE(self) _NM_GET_PRIVATE_PTR (self, NMModem, NM_IS_MODEM) /*****************************************************************************/ /* State/enabled/connected */ @@ -154,7 +155,7 @@ nm_modem_set_state (NMModem *self, reason ? reason : "none"); priv->state = new_state; - g_object_notify (G_OBJECT (self), NM_MODEM_STATE); + _notify (self, PROP_STATE); g_signal_emit (self, signals[STATE_CHANGED], 0, new_state, old_state, reason); } } @@ -397,7 +398,7 @@ set_data_port (NMModem *self, const char *new_data_port) if (g_strcmp0 (priv->data_port, new_data_port) != 0) { g_free (priv->data_port); priv->data_port = g_strdup (new_data_port); - g_object_notify (G_OBJECT (self), NM_MODEM_DATA_PORT); + _notify (self, PROP_DATA_PORT); } } @@ -1306,48 +1307,10 @@ nm_modem_get_capabilities (NMModem *self, /*****************************************************************************/ static void -nm_modem_init (NMModem *self) -{ -} - -static GObject* -constructor (GType type, - guint n_construct_params, - GObjectConstructParam *construct_params) -{ - GObject *object; - NMModemPrivate *priv; - - object = G_OBJECT_CLASS (nm_modem_parent_class)->constructor (type, - n_construct_params, - construct_params); - if (!object) - return NULL; - - priv = NM_MODEM_GET_PRIVATE (object); - - if (!priv->data_port && !priv->control_port) { - nm_log_err (LOGD_HW, "neither modem command nor data interface provided"); - goto err; - } - - if (!priv->path) { - nm_log_err (LOGD_HW, "D-Bus path not provided"); - goto err; - } - - return object; - -err: - g_object_unref (object); - return NULL; -} - -static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object); + NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object); switch (prop_id) { case PROP_PATH: @@ -1399,7 +1362,7 @@ static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object); + NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object); const char *s; switch (prop_id) { @@ -1458,10 +1421,53 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_modem_init (NMModem *self) +{ + self->_priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_MODEM, NMModemPrivate); +} + +static GObject* +constructor (GType type, + guint n_construct_params, + GObjectConstructParam *construct_params) +{ + GObject *object; + NMModemPrivate *priv; + + object = G_OBJECT_CLASS (nm_modem_parent_class)->constructor (type, + n_construct_params, + construct_params); + if (!object) + return NULL; + + priv = NM_MODEM_GET_PRIVATE ((NMModem *) object); + + if (!priv->data_port && !priv->control_port) { + nm_log_err (LOGD_HW, "neither modem command nor data interface provided"); + goto err; + } + + if (!priv->path) { + nm_log_err (LOGD_HW, "D-Bus path not provided"); + goto err; + } + + return object; + +err: + g_object_unref (object); + return NULL; +} + +/*****************************************************************************/ + static void dispose (GObject *object) { - NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object); + NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object); if (priv->act_request) { g_object_unref (priv->act_request); @@ -1474,7 +1480,7 @@ dispose (GObject *object) static void finalize (GObject *object) { - NMModemPrivate *priv = NM_MODEM_GET_PRIVATE (object); + NMModemPrivate *priv = NM_MODEM_GET_PRIVATE ((NMModem *) object); g_free (priv->uid); g_free (priv->path); @@ -1495,7 +1501,6 @@ nm_modem_class_init (NMModemClass *klass) g_type_class_add_private (object_class, sizeof (NMModemPrivate)); - /* Virtual methods */ object_class->constructor = constructor; object_class->set_property = set_property; object_class->get_property = get_property; @@ -1506,131 +1511,114 @@ nm_modem_class_init (NMModemClass *klass) klass->stage3_ip6_config_request = stage3_ip6_config_request; klass->deactivate_cleanup = deactivate_cleanup; - /* Properties */ - - g_object_class_install_property - (object_class, PROP_UID, - g_param_spec_string (NM_MODEM_UID, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_PATH, - g_param_spec_string (NM_MODEM_PATH, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_DRIVER, - g_param_spec_string (NM_MODEM_DRIVER, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CONTROL_PORT, - g_param_spec_string (NM_MODEM_CONTROL_PORT, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_DATA_PORT, - g_param_spec_string (NM_MODEM_DATA_PORT, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_IP4_METHOD, - g_param_spec_uint (NM_MODEM_IP4_METHOD, "", "", - NM_MODEM_IP_METHOD_UNKNOWN, - NM_MODEM_IP_METHOD_AUTO, - NM_MODEM_IP_METHOD_UNKNOWN, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_IP6_METHOD, - g_param_spec_uint (NM_MODEM_IP6_METHOD, "", "", - NM_MODEM_IP_METHOD_UNKNOWN, - NM_MODEM_IP_METHOD_AUTO, - NM_MODEM_IP_METHOD_UNKNOWN, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_IP_TIMEOUT, - g_param_spec_uint (NM_MODEM_IP_TIMEOUT, "", "", - 0, 360, 20, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_STATE, - g_param_spec_enum (NM_MODEM_STATE, "", "", - NM_TYPE_MODEM_STATE, - NM_MODEM_STATE_UNKNOWN, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_DEVICE_ID, - g_param_spec_string (NM_MODEM_DEVICE_ID, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_SIM_ID, - g_param_spec_string (NM_MODEM_SIM_ID, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_IP_TYPES, - g_param_spec_uint (NM_MODEM_IP_TYPES, - "IP Types", - "Supported IP types", - 0, G_MAXUINT32, NM_MODEM_IP_TYPE_IPV4, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property - (object_class, PROP_SIM_OPERATOR_ID, - g_param_spec_string (NM_MODEM_SIM_OPERATOR_ID, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); - - /* Signals */ + obj_properties[PROP_UID] = + g_param_spec_string (NM_MODEM_UID, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_PATH] = + g_param_spec_string (NM_MODEM_PATH, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_DRIVER] = + g_param_spec_string (NM_MODEM_DRIVER, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CONTROL_PORT] = + g_param_spec_string (NM_MODEM_CONTROL_PORT, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_DATA_PORT] = + g_param_spec_string (NM_MODEM_DATA_PORT, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_IP4_METHOD] = + g_param_spec_uint (NM_MODEM_IP4_METHOD, "", "", + NM_MODEM_IP_METHOD_UNKNOWN, + NM_MODEM_IP_METHOD_AUTO, + NM_MODEM_IP_METHOD_UNKNOWN, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_IP6_METHOD] = + g_param_spec_uint (NM_MODEM_IP6_METHOD, "", "", + NM_MODEM_IP_METHOD_UNKNOWN, + NM_MODEM_IP_METHOD_AUTO, + NM_MODEM_IP_METHOD_UNKNOWN, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_IP_TIMEOUT] = + g_param_spec_uint (NM_MODEM_IP_TIMEOUT, "", "", + 0, 360, 20, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_STATE] = + g_param_spec_enum (NM_MODEM_STATE, "", "", + NM_TYPE_MODEM_STATE, + NM_MODEM_STATE_UNKNOWN, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_DEVICE_ID] = + g_param_spec_string (NM_MODEM_DEVICE_ID, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_SIM_ID] = + g_param_spec_string (NM_MODEM_SIM_ID, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_IP_TYPES] = + g_param_spec_uint (NM_MODEM_IP_TYPES, + "IP Types", + "Supported IP types", + 0, G_MAXUINT32, NM_MODEM_IP_TYPE_IPV4, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_SIM_OPERATOR_ID] = + g_param_spec_string (NM_MODEM_SIM_OPERATOR_ID, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); signals[PPP_STATS] = - g_signal_new ("ppp-stats", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, ppp_stats), - NULL, NULL, NULL, - G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); + g_signal_new ("ppp-stats", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 2, + G_TYPE_UINT, G_TYPE_UINT); signals[PPP_FAILED] = - g_signal_new ("ppp-failed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, ppp_failed), - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_UINT); + g_signal_new ("ppp-failed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_UINT); signals[IP4_CONFIG_RESULT] = - g_signal_new (NM_MODEM_IP4_CONFIG_RESULT, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, ip4_config_result), - NULL, NULL, NULL, - G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_POINTER); + g_signal_new (NM_MODEM_IP4_CONFIG_RESULT, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_POINTER); /** * NMModem::ip6-config-result: @@ -1646,50 +1634,44 @@ nm_modem_class_init (NMModemClass *klass) * should be started after applying @config to the data port. */ signals[IP6_CONFIG_RESULT] = - g_signal_new (NM_MODEM_IP6_CONFIG_RESULT, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, ip6_config_result), - NULL, NULL, NULL, - G_TYPE_NONE, 3, G_TYPE_OBJECT, G_TYPE_BOOLEAN, G_TYPE_POINTER); + g_signal_new (NM_MODEM_IP6_CONFIG_RESULT, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 3, G_TYPE_OBJECT, G_TYPE_BOOLEAN, G_TYPE_POINTER); signals[PREPARE_RESULT] = - g_signal_new (NM_MODEM_PREPARE_RESULT, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, prepare_result), - NULL, NULL, NULL, - G_TYPE_NONE, 2, G_TYPE_BOOLEAN, G_TYPE_UINT); + g_signal_new (NM_MODEM_PREPARE_RESULT, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 2, G_TYPE_BOOLEAN, G_TYPE_UINT); signals[AUTH_REQUESTED] = - g_signal_new (NM_MODEM_AUTH_REQUESTED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, auth_requested), - NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_MODEM_AUTH_REQUESTED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); signals[AUTH_RESULT] = - g_signal_new (NM_MODEM_AUTH_RESULT, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, auth_result), - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_POINTER); + g_signal_new (NM_MODEM_AUTH_RESULT, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_POINTER); signals[REMOVED] = - g_signal_new (NM_MODEM_REMOVED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, removed), - NULL, NULL, NULL, - G_TYPE_NONE, 0); + g_signal_new (NM_MODEM_REMOVED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 0); signals[STATE_CHANGED] = - g_signal_new (NM_MODEM_STATE_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMModemClass, state_changed), - NULL, NULL, NULL, - G_TYPE_NONE, 2, NM_TYPE_MODEM_STATE, NM_TYPE_MODEM_STATE); + g_signal_new (NM_MODEM_STATE_CHANGED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 2, NM_TYPE_MODEM_STATE, NM_TYPE_MODEM_STATE); } diff --git a/src/devices/wwan/nm-modem.h b/src/devices/wwan/nm-modem.h index 8f797d4400..bc866ca465 100644 --- a/src/devices/wwan/nm-modem.h +++ b/src/devices/wwan/nm-modem.h @@ -76,7 +76,7 @@ typedef enum { * combination of flags is possible. For example, (%NM_MODEM_IP_TYPE_IPV4 | * %NM_MODEM_IP_TYPE_IPV6) indicates that the modem supports IPv4 and IPv6 * but not simultaneously on the same bearer. - */ + */ typedef enum { NM_MODEM_IP_TYPE_UNKNOWN = 0x0, NM_MODEM_IP_TYPE_IPV4 = 0x1, @@ -100,9 +100,11 @@ typedef enum { /*< underscore_name=nm_modem_state >*/ NM_MODEM_STATE_CONNECTED = 12, } NMModemState; +struct _NMModemPrivate; typedef struct { GObject parent; + struct _NMModemPrivate *_priv; } NMModem; typedef struct { @@ -153,26 +155,6 @@ typedef struct { void (*deactivate_cleanup) (NMModem *self, NMDevice *device); gboolean (*owns_port) (NMModem *self, const char *iface); - - /* Signals */ - void (*ppp_stats) (NMModem *self, guint32 in_bytes, guint32 out_bytes); - void (*ppp_failed) (NMModem *self, NMDeviceStateReason reason); - - void (*prepare_result) (NMModem *self, gboolean success, NMDeviceStateReason reason); - void (*ip4_config_result) (NMModem *self, NMIP4Config *config, GError *error); - void (*ip6_config_result) (NMModem *self, - NMIP6Config *config, - gboolean do_slaac, - GError *error); - - void (*auth_requested) (NMModem *self); - void (*auth_result) (NMModem *self, GError *error); - - void (*state_changed) (NMModem *self, - NMModemState new_state, - NMModemState old_state); - - void (*removed) (NMModem *self); } NMModemClass; GType nm_modem_get_type (void); diff --git a/src/devices/wwan/nm-wwan-factory.c b/src/devices/wwan/nm-wwan-factory.c index 23c2c44b40..c9f6cc12fb 100644 --- a/src/devices/wwan/nm-wwan-factory.c +++ b/src/devices/wwan/nm-wwan-factory.c @@ -24,33 +24,47 @@ #include <gmodule.h> #include "nm-device-factory.h" -#include "nm-wwan-factory.h" #include "nm-setting-gsm.h" #include "nm-setting-cdma.h" #include "nm-modem-manager.h" #include "nm-device-modem.h" #include "nm-platform.h" -static GType nm_wwan_factory_get_type (void); +/*****************************************************************************/ -static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface); +#define NM_TYPE_WWAN_FACTORY (nm_wwan_factory_get_type ()) +#define NM_WWAN_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_WWAN_FACTORY, NMWwanFactory)) +#define NM_WWAN_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_WWAN_FACTORY, NMWwanFactoryClass)) +#define NM_IS_WWAN_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_WWAN_FACTORY)) +#define NM_IS_WWAN_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_WWAN_FACTORY)) +#define NM_WWAN_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_WWAN_FACTORY, NMWwanFactoryClass)) -G_DEFINE_TYPE_EXTENDED (NMWwanFactory, nm_wwan_factory, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_FACTORY, device_factory_interface_init)) +typedef struct _NMWwanFactory NMWwanFactory; +typedef struct _NMWwanFactoryClass NMWwanFactoryClass; + +static GType nm_wwan_factory_get_type (void); -#define NM_WWAN_FACTORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_WWAN_FACTORY, NMWwanFactoryPrivate)) +/*****************************************************************************/ typedef struct { NMModemManager *mm; } NMWwanFactoryPrivate; -/*****************************************************************************/ +struct _NMWwanFactory { + GObject parent; + NMWwanFactoryPrivate _priv; +}; -G_MODULE_EXPORT NMDeviceFactory * -nm_device_factory_create (GError **error) -{ - return (NMDeviceFactory *) g_object_new (NM_TYPE_WWAN_FACTORY, NULL); -} +struct _NMWwanFactoryClass { + GObjectClass parent; +}; + +static void device_factory_interface_init (NMDeviceFactoryInterface *factory_iface); + +G_DEFINE_TYPE_EXTENDED (NMWwanFactory, nm_wwan_factory, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_FACTORY, device_factory_interface_init)) + +#define NM_WWAN_FACTORY_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMWwanFactory, NM_IS_WWAN_FACTORY) /*****************************************************************************/ @@ -121,17 +135,11 @@ start (NMDeviceFactory *factory) self); } -static void -nm_wwan_factory_init (NMWwanFactory *self) -{ -} +/*****************************************************************************/ static void -device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) +nm_wwan_factory_init (NMWwanFactory *self) { - factory_iface->get_supported_types = get_supported_types; - factory_iface->create_device = create_device; - factory_iface->start = start; } static void @@ -153,7 +161,21 @@ nm_wwan_factory_class_init (NMWwanFactoryClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMWwanFactoryPrivate)); - object_class->dispose = dispose; } + +static void +device_factory_interface_init (NMDeviceFactoryInterface *factory_iface) +{ + factory_iface->get_supported_types = get_supported_types; + factory_iface->create_device = create_device; + factory_iface->start = start; +} + +/*****************************************************************************/ + +G_MODULE_EXPORT NMDeviceFactory * +nm_device_factory_create (GError **error) +{ + return (NMDeviceFactory *) g_object_new (NM_TYPE_WWAN_FACTORY, NULL); +} diff --git a/src/devices/wwan/nm-wwan-factory.h b/src/devices/wwan/nm-wwan-factory.h deleted file mode 100644 index 61bdcb1e4b..0000000000 --- a/src/devices/wwan/nm-wwan-factory.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager -- Network link manager - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2014 Red Hat, Inc. - */ - -#ifndef __NETWORKMANAGER_WWAN_FACTORY_H__ -#define __NETWORKMANAGER_WWAN_FACTORY_H__ - -#define NM_TYPE_WWAN_FACTORY (nm_wwan_factory_get_type ()) -#define NM_WWAN_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_WWAN_FACTORY, NMWwanFactory)) - -typedef struct { - GObject parent; -} NMWwanFactory; - -typedef struct { - GObjectClass parent; -} NMWwanFactoryClass; - -#endif /* __NETWORKMANAGER_WWAN_FACTORY_H__ */ diff --git a/src/dhcp-manager/nm-dhcp-listener.c b/src/dhcp-manager/nm-dhcp-listener.c index d0e7b8c2ee..5b2e618b2d 100644 --- a/src/dhcp-manager/nm-dhcp-listener.c +++ b/src/dhcp-manager/nm-dhcp-listener.c @@ -52,7 +52,7 @@ struct _NMDhcpListener { }; struct _NMDhcpListenerClass { - GObjectClass parent_class; + GObjectClass parent; }; enum { diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c index c6c4928fee..6f2ab3eba6 100644 --- a/src/dns-manager/nm-dns-dnsmasq.c +++ b/src/dns-manager/nm-dns-dnsmasq.c @@ -20,6 +20,8 @@ #include "nm-default.h" +#include "nm-dns-dnsmasq.h" + #include <stdlib.h> #include <unistd.h> #include <sys/types.h> @@ -28,7 +30,6 @@ #include <sys/stat.h> #include <linux/if.h> -#include "nm-dns-dnsmasq.h" #include "nm-core-internal.h" #include "nm-platform.h" #include "nm-utils.h" @@ -37,16 +38,14 @@ #include "nm-bus-manager.h" #include "NetworkManagerUtils.h" -G_DEFINE_TYPE (NMDnsDnsmasq, nm_dns_dnsmasq, NM_TYPE_DNS_PLUGIN) - -#define NM_DNS_DNSMASQ_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DNS_DNSMASQ, NMDnsDnsmasqPrivate)) - #define PIDFILE NMRUNDIR "/dnsmasq.pid" #define CONFDIR NMCONFDIR "/dnsmasq.d" #define DNSMASQ_DBUS_SERVICE "org.freedesktop.NetworkManager.dnsmasq" #define DNSMASQ_DBUS_PATH "/uk/org/thekelleys/dnsmasq" +/*****************************************************************************/ + typedef struct { GDBusProxy *dnsmasq; GCancellable *dnsmasq_cancellable; @@ -56,6 +55,19 @@ typedef struct { GVariant *set_server_ex_args; } NMDnsDnsmasqPrivate; +struct _NMDnsDnsmasq { + NMDnsPlugin parent; + NMDnsDnsmasqPrivate _priv; +}; + +struct _NMDnsDnsmasqClass { + NMDnsPluginClass parent; +}; + +G_DEFINE_TYPE (NMDnsDnsmasq, nm_dns_dnsmasq, NM_TYPE_DNS_PLUGIN) + +#define NM_DNS_DNSMASQ_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDnsDnsmasq, NM_IS_DNS_DNSMASQ) + /*****************************************************************************/ #define _NMLOG_DOMAIN LOGD_DNS @@ -653,21 +665,21 @@ get_name (NMDnsPlugin *plugin) /*****************************************************************************/ -NMDnsPlugin * -nm_dns_dnsmasq_new (void) +static void +nm_dns_dnsmasq_init (NMDnsDnsmasq *self) { - return g_object_new (NM_TYPE_DNS_DNSMASQ, NULL); } -static void -nm_dns_dnsmasq_init (NMDnsDnsmasq *self) +NMDnsPlugin * +nm_dns_dnsmasq_new (void) { + return g_object_new (NM_TYPE_DNS_DNSMASQ, NULL); } static void dispose (GObject *object) { - NMDnsDnsmasqPrivate *priv = NM_DNS_DNSMASQ_GET_PRIVATE (object); + NMDnsDnsmasqPrivate *priv = NM_DNS_DNSMASQ_GET_PRIVATE ((NMDnsDnsmasq *) object); nm_clear_g_cancellable (&priv->dnsmasq_cancellable); nm_clear_g_cancellable (&priv->update_cancellable); @@ -685,8 +697,6 @@ nm_dns_dnsmasq_class_init (NMDnsDnsmasqClass *dns_class) NMDnsPluginClass *plugin_class = NM_DNS_PLUGIN_CLASS (dns_class); GObjectClass *object_class = G_OBJECT_CLASS (dns_class); - g_type_class_add_private (dns_class, sizeof (NMDnsDnsmasqPrivate)); - object_class->dispose = dispose; plugin_class->child_quit = child_quit; @@ -694,4 +704,3 @@ nm_dns_dnsmasq_class_init (NMDnsDnsmasqClass *dns_class) plugin_class->update = update; plugin_class->get_name = get_name; } - diff --git a/src/dns-manager/nm-dns-dnsmasq.h b/src/dns-manager/nm-dns-dnsmasq.h index f0393c1222..cbba434bf3 100644 --- a/src/dns-manager/nm-dns-dnsmasq.h +++ b/src/dns-manager/nm-dns-dnsmasq.h @@ -28,17 +28,11 @@ #define NM_IS_DNS_DNSMASQ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DNS_DNSMASQ)) #define NM_DNS_DNSMASQ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DNS_DNSMASQ, NMDnsDnsmasqClass)) -typedef struct { - NMDnsPlugin parent; -} NMDnsDnsmasq; - -typedef struct { - NMDnsPluginClass parent; -} NMDnsDnsmasqClass; +typedef struct _NMDnsDnsmasq NMDnsDnsmasq; +typedef struct _NMDnsDnsmasqClass NMDnsDnsmasqClass; GType nm_dns_dnsmasq_get_type (void); NMDnsPlugin *nm_dns_dnsmasq_new (void); #endif /* __NETWORKMANAGER_DNS_DNSMASQ_H__ */ - diff --git a/src/dns-manager/nm-dns-plugin.c b/src/dns-manager/nm-dns-plugin.c index 53ca4d5ef6..3a3bc646f7 100644 --- a/src/dns-manager/nm-dns-plugin.c +++ b/src/dns-manager/nm-dns-plugin.c @@ -19,6 +19,8 @@ #include "nm-default.h" +#include "nm-dns-plugin.h" + #include <string.h> #include <stdlib.h> #include <unistd.h> @@ -26,27 +28,28 @@ #include <sys/wait.h> #include "nm-core-internal.h" - -#include "nm-dns-plugin.h" #include "NetworkManagerUtils.h" -typedef struct { +/*****************************************************************************/ + +enum { + FAILED, + CHILD_QUIT, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +typedef struct _NMDnsPluginPrivate { GPid pid; guint watch_id; char *progname; char *pidfile; } NMDnsPluginPrivate; -#define NM_DNS_PLUGIN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DNS_PLUGIN, NMDnsPluginPrivate)) - G_DEFINE_TYPE_EXTENDED (NMDnsPlugin, nm_dns_plugin, G_TYPE_OBJECT, G_TYPE_FLAG_ABSTRACT, {}) -enum { - FAILED, - CHILD_QUIT, - LAST_SIGNAL -}; -static guint signals[LAST_SIGNAL] = { 0 }; +#define NM_DNS_PLUGIN_GET_PRIVATE(self) _NM_GET_PRIVATE_PTR (self, NMDnsPlugin, NM_IS_DNS_PLUGIN) /*****************************************************************************/ @@ -265,6 +268,7 @@ nm_dns_plugin_stop (NMDnsPlugin *self) static void nm_dns_plugin_init (NMDnsPlugin *self) { + self->_priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_DNS_PLUGIN, NMDnsPluginPrivate); } static void @@ -284,17 +288,20 @@ nm_dns_plugin_class_init (NMDnsPluginClass *plugin_class) g_type_class_add_private (plugin_class, sizeof (NMDnsPluginPrivate)); - /* virtual methods */ object_class->dispose = dispose; + plugin_class->is_caching = is_caching; - /* signals */ + /* Emitted by the plugin and consumed by NMDnsManager when + * some error happens with the nameserver subprocess. Causes NM to fall + * back to writing out a non-local-caching resolv.conf until the next + * DNS update. + */ signals[FAILED] = g_signal_new (NM_DNS_PLUGIN_FAILED, G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMDnsPluginClass, failed), - NULL, NULL, + 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -307,4 +314,3 @@ nm_dns_plugin_class_init (NMDnsPluginClass *plugin_class) g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT); } - diff --git a/src/dns-manager/nm-dns-plugin.h b/src/dns-manager/nm-dns-plugin.h index e24bc1732a..12109441f9 100644 --- a/src/dns-manager/nm-dns-plugin.h +++ b/src/dns-manager/nm-dns-plugin.h @@ -32,8 +32,11 @@ #define NM_DNS_PLUGIN_FAILED "failed" #define NM_DNS_PLUGIN_CHILD_QUIT "child-quit" +struct _NMDnsPluginPrivate; + typedef struct { GObject parent; + struct _NMDnsPluginPrivate *_priv; } NMDnsPlugin; typedef struct { @@ -62,13 +65,6 @@ typedef struct { /* Signals */ - /* Emitted by the plugin and consumed by NMDnsManager when - * some error happens with the nameserver subprocess. Causes NM to fall - * back to writing out a non-local-caching resolv.conf until the next - * DNS update. - */ - void (*failed) (NMDnsPlugin *self); - /* Emitted by the plugin base class when the nameserver subprocess * quits. This signal is consumed by the plugin subclasses and not * by NMDnsManager. If the subclass decides the exit status (as returned @@ -108,4 +104,3 @@ GPid nm_dns_plugin_child_pid (NMDnsPlugin *self); gboolean nm_dns_plugin_child_kill (NMDnsPlugin *self); #endif /* __NETWORKMANAGER_DNS_PLUGIN_H__ */ - diff --git a/src/dns-manager/nm-dns-systemd-resolved.c b/src/dns-manager/nm-dns-systemd-resolved.c index 3655449cfb..0432f83eb1 100644 --- a/src/dns-manager/nm-dns-systemd-resolved.c +++ b/src/dns-manager/nm-dns-systemd-resolved.c @@ -41,20 +41,18 @@ #include "nm-device.h" #include "NetworkManagerUtils.h" -G_DEFINE_TYPE (NMDnsSystemdResolved, nm_dns_systemd_resolved, NM_TYPE_DNS_PLUGIN) - -#define NM_DNS_SYSTEMD_RESOLVED_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DNS_SYSTEMD_RESOLVED, \ - NMDnsSystemdResolvedPrivate)) - #define SYSTEMD_RESOLVED_DBUS_SERVICE "org.freedesktop.resolve1" #define SYSTEMD_RESOLVED_DBUS_PATH "/org/freedesktop/resolve1" +/*****************************************************************************/ + typedef struct { int ifindex; GList *configs; } InterfaceConfig; +/*****************************************************************************/ + typedef struct { GDBusProxy *resolve; GCancellable *init_cancellable; @@ -63,6 +61,19 @@ typedef struct { GQueue domain_updates; } NMDnsSystemdResolvedPrivate; +struct _NMDnsSystemdResolved { + NMDnsPlugin parent; + NMDnsSystemdResolvedPrivate _priv; +}; + +struct _NMDnsSystemdResolvedClass { + NMDnsPluginClass parent; +}; + +G_DEFINE_TYPE (NMDnsSystemdResolved, nm_dns_systemd_resolved, NM_TYPE_DNS_PLUGIN) + +#define NM_DNS_SYSTEMD_RESOLVED_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDnsSystemdResolved, NM_IS_DNS_SYSTEMD_RESOLVED) + /*****************************************************************************/ #define _NMLOG_DOMAIN LOGD_DNS @@ -319,12 +330,6 @@ get_name (NMDnsPlugin *plugin) /*****************************************************************************/ -NMDnsPlugin * -nm_dns_systemd_resolved_new (void) -{ - return g_object_new (NM_TYPE_DNS_SYSTEMD_RESOLVED, NULL); -} - static void resolved_proxy_created (GObject *source, GAsyncResult *r, gpointer user_data) { @@ -350,6 +355,7 @@ resolved_proxy_created (GObject *source, GAsyncResult *r, gpointer user_data) send_updates (self); } +/*****************************************************************************/ static void nm_dns_systemd_resolved_init (NMDnsSystemdResolved *self) @@ -380,6 +386,12 @@ nm_dns_systemd_resolved_init (NMDnsSystemdResolved *self) self); } +NMDnsPlugin * +nm_dns_systemd_resolved_new (void) +{ + return g_object_new (NM_TYPE_DNS_SYSTEMD_RESOLVED, NULL); +} + static void dispose (GObject *object) { @@ -400,12 +412,9 @@ nm_dns_systemd_resolved_class_init (NMDnsSystemdResolvedClass *dns_class) NMDnsPluginClass *plugin_class = NM_DNS_PLUGIN_CLASS (dns_class); GObjectClass *object_class = G_OBJECT_CLASS (dns_class); - g_type_class_add_private (dns_class, sizeof (NMDnsSystemdResolvedPrivate)); - object_class->dispose = dispose; plugin_class->is_caching = is_caching; plugin_class->update = update; plugin_class->get_name = get_name; } - diff --git a/src/dns-manager/nm-dns-systemd-resolved.h b/src/dns-manager/nm-dns-systemd-resolved.h index 45c64b39ad..800a60c154 100644 --- a/src/dns-manager/nm-dns-systemd-resolved.h +++ b/src/dns-manager/nm-dns-systemd-resolved.h @@ -29,17 +29,11 @@ #define NM_IS_DNS_SYSTEMD_RESOLVED_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DNS_SYSTEMD_RESOLVED)) #define NM_DNS_SYSTEMD_RESOLVED_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DNS_SYSTEMD_RESOLVED, NMDnsSystemdResolvedClass)) -typedef struct { - NMDnsPlugin parent; -} NMDnsSystemdResolved; - -typedef struct { - NMDnsPluginClass parent; -} NMDnsSystemdResolvedClass; +typedef struct _NMDnsSystemdResolved NMDnsSystemdResolved; +typedef struct _NMDnsSystemdResolvedClass NMDnsSystemdResolvedClass; GType nm_dns_systemd_resolved_get_type (void); NMDnsPlugin *nm_dns_systemd_resolved_new (void); #endif /* __NETWORKMANAGER_DNS_SYSTEMD_RESOLVED_H__ */ - diff --git a/src/dns-manager/nm-dns-unbound.c b/src/dns-manager/nm-dns-unbound.c index b9d5749d69..3659beacba 100644 --- a/src/dns-manager/nm-dns-unbound.c +++ b/src/dns-manager/nm-dns-unbound.c @@ -20,8 +20,19 @@ #include "nm-default.h" #include "nm-dns-unbound.h" + #include "NetworkManagerUtils.h" +/*****************************************************************************/ + +struct _NMDnsUnbound { + NMDnsPlugin parent; +}; + +struct _NMDnsUnboundClass { + NMDnsPluginClass parent; +}; + G_DEFINE_TYPE (NMDnsUnbound, nm_dns_unbound, NM_TYPE_DNS_PLUGIN) /*****************************************************************************/ @@ -58,15 +69,15 @@ get_name (NMDnsPlugin *plugin) /*****************************************************************************/ -NMDnsPlugin * -nm_dns_unbound_new (void) +static void +nm_dns_unbound_init (NMDnsUnbound *unbound) { - return g_object_new (NM_TYPE_DNS_UNBOUND, NULL); } -static void -nm_dns_unbound_init (NMDnsUnbound *unbound) +NMDnsPlugin * +nm_dns_unbound_new (void) { + return g_object_new (NM_TYPE_DNS_UNBOUND, NULL); } static void diff --git a/src/dns-manager/nm-dns-unbound.h b/src/dns-manager/nm-dns-unbound.h index abc056b926..100ff2c470 100644 --- a/src/dns-manager/nm-dns-unbound.h +++ b/src/dns-manager/nm-dns-unbound.h @@ -27,13 +27,8 @@ #define NM_IS_DNS_UNBOUND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DNS_UNBOUND)) #define NM_DNS_UNBOUND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DNS_UNBOUND, NMDnsUnboundClass)) -typedef struct { - NMDnsPlugin parent; -} NMDnsUnbound; - -typedef struct { - NMDnsPluginClass parent; -} NMDnsUnboundClass; +typedef struct _NMDnsUnbound NMDnsUnbound; +typedef struct _NMDnsUnboundClass NMDnsUnboundClass; GType nm_dns_unbound_get_type (void); diff --git a/src/dnsmasq-manager/nm-dnsmasq-manager.c b/src/dnsmasq-manager/nm-dnsmasq-manager.c index 9ce8d833d1..b4547cb417 100644 --- a/src/dnsmasq-manager/nm-dnsmasq-manager.c +++ b/src/dnsmasq-manager/nm-dnsmasq-manager.c @@ -20,6 +20,8 @@ #include "nm-default.h" +#include "nm-dnsmasq-manager.h" + #include <sys/types.h> #include <sys/wait.h> #include <signal.h> @@ -28,21 +30,21 @@ #include <arpa/inet.h> #include <stdlib.h> -#include "nm-dnsmasq-manager.h" #include "nm-dnsmasq-utils.h" #include "nm-utils.h" #include "NetworkManagerUtils.h" #include "nm-core-internal.h" -#define _NMLOG_DOMAIN LOGD_SHARING -#define _NMLOG_PREFIX_NAME "dnsmasq-manager" -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), _NMLOG_DOMAIN, \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END +#define CONFDIR NMCONFDIR "/dnsmasq-shared.d" + +/*****************************************************************************/ + +enum { + STATE_CHANGED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { char *iface; @@ -51,19 +53,32 @@ typedef struct { guint dm_watch_id; } NMDnsMasqManagerPrivate; -#define NM_DNSMASQ_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DNSMASQ_MANAGER, NMDnsMasqManagerPrivate)) +struct _NMDnsMasqManager { + GObject parent; + NMDnsMasqManagerPrivate _priv; +}; -#define CONFDIR NMCONFDIR "/dnsmasq-shared.d" +struct _NMDnsMasqManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMDnsMasqManager, nm_dnsmasq_manager, G_TYPE_OBJECT) -enum { - STATE_CHANGED, +#define NM_DNSMASQ_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDnsMasqManager, NM_IS_DNSMASQ_MANAGER) - LAST_SIGNAL -}; +/*****************************************************************************/ -static guint signals[LAST_SIGNAL] = { 0 }; +#define _NMLOG_DOMAIN LOGD_SHARING +#define _NMLOG_PREFIX_NAME "dnsmasq-manager" +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), _NMLOG_DOMAIN, \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ typedef struct { GPtrArray *array; @@ -334,6 +349,13 @@ nm_dnsmasq_manager_stop (NMDnsMasqManager *manager) unlink (priv->pidfile); } +/*****************************************************************************/ + +static void +nm_dnsmasq_manager_init (NMDnsMasqManager *manager) +{ +} + NMDnsMasqManager * nm_dnsmasq_manager_new (const char *iface) { @@ -350,14 +372,9 @@ nm_dnsmasq_manager_new (const char *iface) } static void -nm_dnsmasq_manager_init (NMDnsMasqManager *manager) -{ -} - -static void finalize (GObject *object) { - NMDnsMasqManagerPrivate *priv = NM_DNSMASQ_MANAGER_GET_PRIVATE (object); + NMDnsMasqManagerPrivate *priv = NM_DNSMASQ_MANAGER_GET_PRIVATE ((NMDnsMasqManager *) object); nm_dnsmasq_manager_stop (NM_DNSMASQ_MANAGER (object)); @@ -372,11 +389,8 @@ nm_dnsmasq_manager_class_init (NMDnsMasqManagerClass *manager_class) { GObjectClass *object_class = G_OBJECT_CLASS (manager_class); - g_type_class_add_private (manager_class, sizeof (NMDnsMasqManagerPrivate)); - object_class->finalize = finalize; - /* signals */ signals[STATE_CHANGED] = g_signal_new (NM_DNS_MASQ_MANAGER_STATE_CHANGED, G_OBJECT_CLASS_TYPE (object_class), diff --git a/src/dnsmasq-manager/nm-dnsmasq-manager.h b/src/dnsmasq-manager/nm-dnsmasq-manager.h index b610b4987b..a0ad295cd4 100644 --- a/src/dnsmasq-manager/nm-dnsmasq-manager.h +++ b/src/dnsmasq-manager/nm-dnsmasq-manager.h @@ -35,18 +35,12 @@ typedef enum { NM_DNSMASQ_STATUS_UNKNOWN, - NM_DNSMASQ_STATUS_DEAD, NM_DNSMASQ_STATUS_RUNNING, } NMDnsMasqStatus; -typedef struct { - GObject parent; -} NMDnsMasqManager; - -typedef struct { - GObjectClass parent; -} NMDnsMasqManagerClass; +typedef struct _NMDnsMasqManager NMDnsMasqManager; +typedef struct _NMDnsMasqManagerClass NMDnsMasqManagerClass; GType nm_dnsmasq_manager_get_type (void); diff --git a/src/nm-active-connection.c b/src/nm-active-connection.c index 1ecf2f9a91..1eba44959f 100644 --- a/src/nm-active-connection.c +++ b/src/nm-active-connection.c @@ -1170,7 +1170,6 @@ nm_active_connection_class_init (NMActiveConnectionClass *ac_class) exported_object_class->export_path = NM_DBUS_PATH "/ActiveConnection/%u"; - /* virtual methods */ object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; diff --git a/src/nm-audit-manager.c b/src/nm-audit-manager.c index 9e88409624..384a5c3fb5 100644 --- a/src/nm-audit-manager.c +++ b/src/nm-audit-manager.c @@ -32,44 +32,63 @@ #include "nm-config.h" #include "nm-settings-connection.h" -#define AUDIT_LOG_LEVEL LOGL_INFO - -#define _NMLOG_PREFIX_NAME "audit" -#define _NMLOG(level, domain, ...) \ - G_STMT_START { \ - nm_log ((level), (domain), \ - "%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ - } G_STMT_END +/*****************************************************************************/ typedef enum { - BACKEND_LOG = (1 << 0), - BACKEND_AUDITD = (1 << 1), - _BACKEND_LAST, - BACKEND_ALL = ((_BACKEND_LAST - 1) << 1) - 1, + BACKEND_LOG = (1 << 0), + BACKEND_AUDITD = (1 << 1), + _BACKEND_LAST, + BACKEND_ALL = ((_BACKEND_LAST - 1) << 1) - 1, } AuditBackend; typedef struct { - const char *name; - GValue value; - gboolean need_encoding; - AuditBackend backends; + const char *name; + GValue value; + gboolean need_encoding; + AuditBackend backends; } AuditField; -#if HAVE_LIBAUDIT +/*****************************************************************************/ + typedef struct { NMConfig *config; int auditd_fd; } NMAuditManagerPrivate; -#define NM_AUDIT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_AUDIT_MANAGER, NMAuditManagerPrivate)) +struct _NMAuditManager { + GObject parent; +#if HAVE_LIBAUDIT + NMAuditManagerPrivate _priv; #endif +}; + +struct _NMAuditManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMAuditManager, nm_audit_manager, G_TYPE_OBJECT) +#define NM_AUDIT_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMAuditManager, NM_IS_AUDIT_MANAGER) + +/*****************************************************************************/ + +#define AUDIT_LOG_LEVEL LOGL_INFO + +#define _NMLOG_PREFIX_NAME "audit" +#define _NMLOG(level, domain, ...) \ + G_STMT_START { \ + nm_log ((level), (domain), \ + "%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ + NM_DEFINE_SINGLETON_GETTER (NMAuditManager, nm_audit_manager_get, NM_TYPE_AUDIT_MANAGER); +/*****************************************************************************/ + static void _audit_field_init_string (AuditField *field, const char *name, const char *str, gboolean need_encoding, AuditBackend backends) @@ -346,6 +365,8 @@ config_changed_cb (NMConfig *config, } #endif +/*****************************************************************************/ + static void nm_audit_manager_init (NMAuditManager *self) { @@ -389,11 +410,5 @@ nm_audit_manager_class_init (NMAuditManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); -#if HAVE_LIBAUDIT - g_type_class_add_private (klass, sizeof (NMAuditManagerPrivate)); -#endif - - /* virtual methods */ object_class->dispose = dispose; } - diff --git a/src/nm-audit-manager.h b/src/nm-audit-manager.h index af8a2037c7..d157ff122a 100644 --- a/src/nm-audit-manager.h +++ b/src/nm-audit-manager.h @@ -32,13 +32,7 @@ #define NM_IS_AUDIT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AUDIT_MANAGER)) #define NM_AUDIT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AUDIT_MANAGER, NMAuditManagerClass)) -struct _NMAuditManager { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMAuditManagerClass; +typedef struct _NMAuditManagerClass NMAuditManagerClass; #define NM_AUDIT_OP_CONN_ADD "connection-add" #define NM_AUDIT_OP_CONN_DELETE "connection-delete" diff --git a/src/nm-auth-manager.c b/src/nm-auth-manager.c index 531e2c354b..73063b9b92 100644 --- a/src/nm-auth-manager.c +++ b/src/nm-auth-manager.c @@ -30,32 +30,14 @@ #define POLKIT_OBJECT_PATH "/org/freedesktop/PolicyKit1/Authority" #define POLKIT_INTERFACE "org.freedesktop.PolicyKit1.Authority" +/*****************************************************************************/ -#define _NMLOG_PREFIX_NAME "auth" -#define _NMLOG_DOMAIN LOGD_CORE -#define _NMLOG(level, ...) \ - G_STMT_START { \ - if (nm_logging_enabled ((level), (_NMLOG_DOMAIN))) { \ - char __prefix[30] = _NMLOG_PREFIX_NAME; \ - \ - if ((self) != singleton_instance) \ - g_snprintf (__prefix, sizeof (__prefix), ""_NMLOG_PREFIX_NAME"[%p]", (self)); \ - _nm_log ((level), (_NMLOG_DOMAIN), 0, \ - "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - __prefix _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } \ - } G_STMT_END - -enum { - PROP_0, +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( PROP_POLKIT_ENABLED, - - LAST_PROP -}; +); enum { CHANGED_SIGNAL, - LAST_SIGNAL, }; @@ -71,11 +53,37 @@ typedef struct { #endif } NMAuthManagerPrivate; -NM_DEFINE_SINGLETON_REGISTER (NMAuthManager); +struct _NMAuthManager { + GObject parent; + NMAuthManagerPrivate _priv; +}; + +struct _NMAuthManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMAuthManager, nm_auth_manager, G_TYPE_OBJECT) -#define NM_AUTH_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_AUTH_MANAGER, NMAuthManagerPrivate)) +#define NM_AUTH_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMAuthManager, NM_IS_AUTH_MANAGER) + +NM_DEFINE_SINGLETON_REGISTER (NMAuthManager); + +/*****************************************************************************/ + +#define _NMLOG_PREFIX_NAME "auth" +#define _NMLOG_DOMAIN LOGD_CORE +#define _NMLOG(level, ...) \ + G_STMT_START { \ + if (nm_logging_enabled ((level), (_NMLOG_DOMAIN))) { \ + char __prefix[30] = _NMLOG_PREFIX_NAME; \ + \ + if ((self) != singleton_instance) \ + g_snprintf (__prefix, sizeof (__prefix), ""_NMLOG_PREFIX_NAME"[%p]", (self)); \ + _nm_log ((level), (_NMLOG_DOMAIN), 0, \ + "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + __prefix _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } \ + } G_STMT_END /*****************************************************************************/ @@ -477,32 +485,12 @@ nm_auth_manager_get () return singleton_instance; } -NMAuthManager * -nm_auth_manager_setup (gboolean polkit_enabled) -{ - NMAuthManager *self; - - g_return_val_if_fail (!singleton_instance, singleton_instance); - - self = g_object_new (NM_TYPE_AUTH_MANAGER, - NM_AUTH_MANAGER_POLKIT_ENABLED, polkit_enabled, - NULL); - _LOGD ("set instance"); - - singleton_instance = self; - nm_singleton_instance_register (); - - nm_log_dbg (LOGD_CORE, "setup %s singleton (%p)", "NMAuthManager", singleton_instance); - - return self; -} - /*****************************************************************************/ static void get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { - NMAuthManagerPrivate *priv = NM_AUTH_MANAGER_GET_PRIVATE (object); + NMAuthManagerPrivate *priv = NM_AUTH_MANAGER_GET_PRIVATE ((NMAuthManager *) object); switch (prop_id) { case PROP_POLKIT_ENABLED: @@ -517,7 +505,7 @@ get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { - NMAuthManagerPrivate *priv = NM_AUTH_MANAGER_GET_PRIVATE (object); + NMAuthManagerPrivate *priv = NM_AUTH_MANAGER_GET_PRIVATE ((NMAuthManager *) object); switch (prop_id) { case PROP_POLKIT_ENABLED: @@ -530,6 +518,8 @@ set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *p } } +/*****************************************************************************/ + static void nm_auth_manager_init (NMAuthManager *self) { @@ -571,6 +561,25 @@ constructed (GObject *object) #endif } +NMAuthManager * +nm_auth_manager_setup (gboolean polkit_enabled) +{ + NMAuthManager *self; + + g_return_val_if_fail (!singleton_instance, singleton_instance); + + self = g_object_new (NM_TYPE_AUTH_MANAGER, + NM_AUTH_MANAGER_POLKIT_ENABLED, polkit_enabled, + NULL); + _LOGD ("set instance"); + + singleton_instance = self; + nm_singleton_instance_register (); + + nm_log_dbg (LOGD_CORE, "setup %s singleton (%p)", "NMAuthManager", singleton_instance); + + return self; +} static void dispose (GObject *object) @@ -605,20 +614,19 @@ nm_auth_manager_class_init (NMAuthManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMAuthManagerPrivate)); - object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; object_class->dispose = dispose; - g_object_class_install_property - (object_class, PROP_POLKIT_ENABLED, + obj_properties[PROP_POLKIT_ENABLED] = g_param_spec_boolean (NM_AUTH_MANAGER_POLKIT_ENABLED, "", "", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); signals[CHANGED_SIGNAL] = g_signal_new (NM_AUTH_MANAGER_SIGNAL_CHANGED, NM_TYPE_AUTH_MANAGER, @@ -629,6 +637,5 @@ nm_auth_manager_class_init (NMAuthManagerClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - } diff --git a/src/nm-auth-manager.h b/src/nm-auth-manager.h index 9251b3347c..e66ef78c1b 100644 --- a/src/nm-auth-manager.h +++ b/src/nm-auth-manager.h @@ -30,18 +30,12 @@ #define NM_IS_AUTH_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AUTH_MANAGER)) #define NM_AUTH_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AUTH_MANAGER, NMAuthManagerClass)) - #define NM_AUTH_MANAGER_POLKIT_ENABLED "polkit-enabled" #define NM_AUTH_MANAGER_SIGNAL_CHANGED "changed" -typedef struct { - GObject parent; -} NMAuthManager; - -typedef struct { - GObjectClass parent; -} NMAuthManagerClass; +typedef struct _NMAuthManager NMAuthManager; +typedef struct _NMAuthManagerClass NMAuthManagerClass; GType nm_auth_manager_get_type (void); @@ -68,4 +62,3 @@ gboolean nm_auth_manager_polkit_authority_check_authorization_finish (NMAuthMana #endif #endif /* NM_AUTH_MANAGER_H */ - diff --git a/src/nm-bus-manager.c b/src/nm-bus-manager.c index 0c1ad69e3b..94f4a6fa59 100644 --- a/src/nm-bus-manager.c +++ b/src/nm-bus-manager.c @@ -21,6 +21,8 @@ #include "nm-default.h" +#include "nm-bus-manager.h" + #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> @@ -28,39 +30,29 @@ #include <string.h> #include "nm-dbus-interface.h" -#include "nm-bus-manager.h" #include "nm-core-internal.h" #include "nm-dbus-compat.h" #include "nm-exported-object.h" #include "NetworkManagerUtils.h" -#define _NMLOG_DOMAIN LOGD_CORE -#define _NMLOG_PREFIX_NAME "bus-manager" -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), _NMLOG_DOMAIN, \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END +/* The base path for our GDBusObjectManagerServers. They do not contain + * "NetworkManager" because GDBusObjectManagerServer requires that all + * exported objects be *below* the base path, and eg the Manager object + * is the base path already. + */ +#define OBJECT_MANAGER_SERVER_BASE_PATH "/org/freedesktop" + +/*****************************************************************************/ enum { DBUS_CONNECTION_CHANGED = 0, PRIVATE_CONNECTION_NEW, PRIVATE_CONNECTION_DISCONNECTED, - NUMBER_OF_SIGNALS + NUMBER_OF_SIGNALS, }; static guint signals[NUMBER_OF_SIGNALS]; -G_DEFINE_TYPE(NMBusManager, nm_bus_manager, G_TYPE_OBJECT) - -#define NM_BUS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \ - NM_TYPE_BUS_MANAGER, \ - NMBusManagerPrivate)) - -typedef struct _PrivateServer PrivateServer; - typedef struct { GDBusConnection *connection; GDBusObjectManagerServer *obj_manager; @@ -74,16 +66,38 @@ typedef struct { guint reconnect_id; } NMBusManagerPrivate; +struct _NMBusManager { + GObject parent; + NMBusManagerPrivate _priv; +}; + +struct _NMBusManagerClass { + GObjectClass parent; +}; + +G_DEFINE_TYPE(NMBusManager, nm_bus_manager, G_TYPE_OBJECT) + +#define NM_BUS_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBusManager, NM_IS_BUS_MANAGER) + +/*****************************************************************************/ + +#define _NMLOG_DOMAIN LOGD_CORE +#define _NMLOG_PREFIX_NAME "bus-manager" +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), _NMLOG_DOMAIN, \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ + static gboolean nm_bus_manager_init_bus (NMBusManager *self); static void nm_bus_manager_cleanup (NMBusManager *self); static void start_reconnection_timeout (NMBusManager *self); -/* The base path for our GDBusObjectManagerServers. They do not contain - * "NetworkManager" because GDBusObjectManagerServer requires that all - * exported objects be *below* the base path, and eg the Manager object - * is the base path already. - */ -#define OBJECT_MANAGER_SERVER_BASE_PATH "/org/freedesktop" +/*****************************************************************************/ NM_DEFINE_SINGLETON_REGISTER (NMBusManager); @@ -115,7 +129,7 @@ nm_bus_manager_setup (NMBusManager *instance) /*****************************************************************************/ -struct _PrivateServer { +typedef struct { const char *tag; GQuark detail; char *address; @@ -133,7 +147,7 @@ struct _PrivateServer { GHashTable *obj_managers; NMBusManager *manager; -}; +} PrivateServer; typedef struct { GDBusConnection *connection; @@ -618,81 +632,6 @@ nm_bus_manager_get_unix_user (NMBusManager *self, /*****************************************************************************/ -static void -nm_bus_manager_init (NMBusManager *self) -{ - NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self); - - priv->obj_manager = g_dbus_object_manager_server_new (OBJECT_MANAGER_SERVER_BASE_PATH); -} - -static void -nm_bus_manager_dispose (GObject *object) -{ - NMBusManager *self = NM_BUS_MANAGER (object); - NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self); - GList *exported, *iter; - - g_slist_free_full (priv->private_servers, private_server_free); - priv->private_servers = NULL; - - nm_bus_manager_cleanup (self); - - if (priv->obj_manager) { - /* The ObjectManager owns the last reference to many exported - * objects, and when that reference is dropped the objects unregister - * themselves via nm_bus_manager_unregister_object(). By that time - * priv->obj_manager is already NULL and that prints warnings. Unregister - * them before clearing the ObjectManager instead. - */ - exported = g_dbus_object_manager_get_objects ((GDBusObjectManager *) priv->obj_manager); - for (iter = exported; iter; iter = iter->next) { - nm_bus_manager_unregister_object (self, iter->data); - g_object_unref (iter->data); - } - g_list_free (exported); - g_clear_object (&priv->obj_manager); - } - - nm_clear_g_source (&priv->reconnect_id); - - G_OBJECT_CLASS (nm_bus_manager_parent_class)->dispose (object); -} - -static void -nm_bus_manager_class_init (NMBusManagerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - g_type_class_add_private (klass, sizeof (NMBusManagerPrivate)); - - object_class->dispose = nm_bus_manager_dispose; - - signals[DBUS_CONNECTION_CHANGED] = - g_signal_new (NM_BUS_MANAGER_DBUS_CONNECTION_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMBusManagerClass, dbus_connection_changed), - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_POINTER); - - signals[PRIVATE_CONNECTION_NEW] = - g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_NEW, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - 0, NULL, NULL, NULL, - G_TYPE_NONE, 2, G_TYPE_DBUS_CONNECTION, G_TYPE_DBUS_OBJECT_MANAGER_SERVER); - - signals[PRIVATE_CONNECTION_DISCONNECTED] = - g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, - G_STRUCT_OFFSET (NMBusManagerClass, private_connection_disconnected), - NULL, NULL, NULL, - G_TYPE_NONE, 1, G_TYPE_POINTER); -} - - /* Only cleanup a specific dbus connection, not all our private data */ static void nm_bus_manager_cleanup (NMBusManager *self) @@ -1005,3 +944,78 @@ nm_bus_manager_new_proxy (NMBusManager *self, } return proxy; } + +/*****************************************************************************/ + +static void +nm_bus_manager_init (NMBusManager *self) +{ + NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self); + + priv->obj_manager = g_dbus_object_manager_server_new (OBJECT_MANAGER_SERVER_BASE_PATH); +} + +static void +dispose (GObject *object) +{ + NMBusManager *self = NM_BUS_MANAGER (object); + NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self); + GList *exported, *iter; + + g_slist_free_full (priv->private_servers, private_server_free); + priv->private_servers = NULL; + + nm_bus_manager_cleanup (self); + + if (priv->obj_manager) { + /* The ObjectManager owns the last reference to many exported + * objects, and when that reference is dropped the objects unregister + * themselves via nm_bus_manager_unregister_object(). By that time + * priv->obj_manager is already NULL and that prints warnings. Unregister + * them before clearing the ObjectManager instead. + */ + exported = g_dbus_object_manager_get_objects ((GDBusObjectManager *) priv->obj_manager); + for (iter = exported; iter; iter = iter->next) { + nm_bus_manager_unregister_object (self, iter->data); + g_object_unref (iter->data); + } + g_list_free (exported); + g_clear_object (&priv->obj_manager); + } + + nm_clear_g_source (&priv->reconnect_id); + + G_OBJECT_CLASS (nm_bus_manager_parent_class)->dispose (object); +} + +static void +nm_bus_manager_class_init (NMBusManagerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->dispose = dispose; + + signals[DBUS_CONNECTION_CHANGED] = + g_signal_new (NM_BUS_MANAGER_DBUS_CONNECTION_CHANGED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_POINTER); + + signals[PRIVATE_CONNECTION_NEW] = + g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_NEW, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 2, G_TYPE_DBUS_CONNECTION, G_TYPE_DBUS_OBJECT_MANAGER_SERVER); + + signals[PRIVATE_CONNECTION_DISCONNECTED] = + g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, NULL, NULL, NULL, + G_TYPE_NONE, 1, G_TYPE_POINTER); +} + + + diff --git a/src/nm-bus-manager.h b/src/nm-bus-manager.h index bc23d2ce38..153f7cdce2 100644 --- a/src/nm-bus-manager.h +++ b/src/nm-bus-manager.h @@ -33,23 +33,7 @@ #define NM_BUS_MANAGER_PRIVATE_CONNECTION_NEW "private-connection-new" #define NM_BUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED "private-connection-disconnected" -struct _NMBusManager { - GObject parent; -}; - -typedef struct { - GObjectClass parent; - - /* Signals */ - void (*dbus_connection_changed) (NMBusManager *mgr, - GDBusConnection *connection); - - void (*private_connection_new) (NMBusManager *mgr, - GDBusConnection *connection); - - void (*private_connection_disconnected) (NMBusManager *mgr, - GDBusConnection *connection); -} NMBusManagerClass; +typedef struct _NMBusManagerClass NMBusManagerClass; GType nm_bus_manager_get_type (void); diff --git a/src/nm-checkpoint-manager.c b/src/nm-checkpoint-manager.c index 49e8b89595..41b5670bd7 100644 --- a/src/nm-checkpoint-manager.c +++ b/src/nm-checkpoint-manager.c @@ -302,4 +302,3 @@ nm_checkpoint_manager_unref (NMCheckpointManager *self) g_slice_free (NMCheckpointManager, self); } - diff --git a/src/nm-checkpoint-manager.h b/src/nm-checkpoint-manager.h index 022b1a80e7..30e490417e 100644 --- a/src/nm-checkpoint-manager.h +++ b/src/nm-checkpoint-manager.h @@ -22,6 +22,7 @@ #define __NM_CHECKPOINT_MANAGER_H__ #include "nm-dbus-interface.h" + #include "nm-checkpoint.h" typedef struct _NMCheckpointManager NMCheckpointManager; @@ -47,4 +48,3 @@ gboolean nm_checkpoint_manager_rollback (NMCheckpointManager *self, GError **error); #endif /* __NM_CHECKPOINT_MANAGER_H__ */ - diff --git a/src/nm-checkpoint.c b/src/nm-checkpoint.c index 8869204d72..1ee8026842 100644 --- a/src/nm-checkpoint.c +++ b/src/nm-checkpoint.c @@ -19,6 +19,7 @@ */ #include "nm-default.h" + #include "nm-checkpoint.h" #include <string.h> @@ -34,23 +35,7 @@ #include "nm-utils.h" #include "nmdbus-checkpoint.h" -#define _NMLOG_PREFIX_NAME "checkpoint" -#define _NMLOG_DOMAIN LOGD_CORE - -#define _NMLOG(level, ...) \ - G_STMT_START { \ - if (nm_logging_enabled (level, _NMLOG_DOMAIN)) { \ - char __prefix[32]; \ - \ - if (self) \ - g_snprintf (__prefix, sizeof (__prefix), "%s[%p]", ""_NMLOG_PREFIX_NAME"", (self)); \ - else \ - g_strlcpy (__prefix, _NMLOG_PREFIX_NAME, sizeof (__prefix)); \ - _nm_log ((level), (_NMLOG_DOMAIN), 0, \ - "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - __prefix _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } \ - } G_STMT_END +/*****************************************************************************/ typedef struct { char *original_dev_path; @@ -62,6 +47,12 @@ typedef struct { bool unmanaged_explicit:1; } DeviceCheckpoint; +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_DEVICES, + PROP_CREATED, + PROP_ROLLBACK_TIMEOUT, +); + typedef struct { /* properties */ GHashTable *devices; @@ -77,19 +68,35 @@ struct _NMCheckpoint { NMCheckpointPrivate _priv; }; -typedef struct { +struct _NMCheckpointClass { NMExportedObjectClass parent; -} NMCheckpointClass; +}; G_DEFINE_TYPE (NMCheckpoint, nm_checkpoint, NM_TYPE_EXPORTED_OBJECT) -#define NM_CHECKPOINT_GET_PRIVATE(self) _NM_GET_PRIVATE(self, NMCheckpoint, NM_IS_CHECKPOINT) +#define NM_CHECKPOINT_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMCheckpoint, NM_IS_CHECKPOINT) -NM_GOBJECT_PROPERTIES_DEFINE_BASE ( - PROP_DEVICES, - PROP_CREATED, - PROP_ROLLBACK_TIMEOUT, -); +/*****************************************************************************/ + +#define _NMLOG_PREFIX_NAME "checkpoint" +#define _NMLOG_DOMAIN LOGD_CORE + +#define _NMLOG(level, ...) \ + G_STMT_START { \ + if (nm_logging_enabled (level, _NMLOG_DOMAIN)) { \ + char __prefix[32]; \ + \ + if (self) \ + g_snprintf (__prefix, sizeof (__prefix), "%s[%p]", ""_NMLOG_PREFIX_NAME"", (self)); \ + else \ + g_strlcpy (__prefix, _NMLOG_PREFIX_NAME, sizeof (__prefix)); \ + _nm_log ((level), (_NMLOG_DOMAIN), 0, \ + "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + __prefix _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } \ + } G_STMT_END + +/*****************************************************************************/ guint64 nm_checkpoint_get_rollback_ts (NMCheckpoint *self) @@ -289,6 +296,39 @@ device_checkpoint_destroy (gpointer data) g_slice_free (DeviceCheckpoint, dev_checkpoint); } +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMCheckpoint *self = NM_CHECKPOINT (object); + NMCheckpointPrivate *priv = NM_CHECKPOINT_GET_PRIVATE (self); + gs_free_slist GSList *devices = NULL; + GHashTableIter iter; + NMDevice *device; + + switch (prop_id) { + case PROP_DEVICES: + g_hash_table_iter_init (&iter, priv->devices); + while (g_hash_table_iter_next (&iter, (gpointer *) &device, NULL)) + devices = g_slist_append (devices, device); + nm_utils_g_value_set_object_path_array (value, devices, NULL, NULL); + break; + case PROP_CREATED: + g_value_set_int64 (value, priv->created); + break; + case PROP_ROLLBACK_TIMEOUT: + g_value_set_uint (value, priv->rollback_timeout); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + static void nm_checkpoint_init (NMCheckpoint *self) { @@ -356,50 +396,17 @@ dispose (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMCheckpoint *self = NM_CHECKPOINT (object); - NMCheckpointPrivate *priv = NM_CHECKPOINT_GET_PRIVATE (self); - gs_free_slist GSList *devices = NULL; - GHashTableIter iter; - NMDevice *device; - - switch (prop_id) { - case PROP_DEVICES: - g_hash_table_iter_init (&iter, priv->devices); - while (g_hash_table_iter_next (&iter, (gpointer *) &device, NULL)) - devices = g_slist_append (devices, device); - nm_utils_g_value_set_object_path_array (value, devices, NULL, NULL); - break; - case PROP_CREATED: - g_value_set_int64 (value, priv->created); - break; - case PROP_ROLLBACK_TIMEOUT: - g_value_set_uint (value, priv->rollback_timeout); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void nm_checkpoint_class_init (NMCheckpointClass *checkpoint_class) { GObjectClass *object_class = G_OBJECT_CLASS (checkpoint_class); NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (checkpoint_class); - g_type_class_add_private (checkpoint_class, sizeof (NMCheckpointPrivate)); - exported_object_class->export_path = NM_DBUS_PATH "/Checkpoint/%u"; exported_object_class->export_on_construction = FALSE; - /* virtual methods */ object_class->dispose = dispose; object_class->get_property = get_property; - /* properties */ obj_properties[PROP_DEVICES] = g_param_spec_boxed (NM_CHECKPOINT_DEVICES, "", "", G_TYPE_STRV, diff --git a/src/nm-checkpoint.h b/src/nm-checkpoint.h index c7d2d42f35..815ae7be10 100644 --- a/src/nm-checkpoint.h +++ b/src/nm-checkpoint.h @@ -31,12 +31,13 @@ #define NM_IS_CHECKPOINT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_CHECKPOINT)) #define NM_CHECKPOINT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_CHECKPOINT, NMCheckpointClass)) -typedef struct _NMCheckpoint NMCheckpoint; - #define NM_CHECKPOINT_DEVICES "devices" #define NM_CHECKPOINT_CREATED "created" #define NM_CHECKPOINT_ROLLBACK_TIMEOUT "rollback-timeout" +typedef struct _NMCheckpoint NMCheckpoint; +typedef struct _NMCheckpointClass NMCheckpointClass; + GType nm_checkpoint_get_type (void); NMCheckpoint *nm_checkpoint_new (NMManager *manager, GPtrArray *devices, guint32 rollback_timeout, diff --git a/src/nm-config-data.c b/src/nm-config-data.c index 3b021feab5..6f83e66566 100644 --- a/src/nm-config-data.c +++ b/src/nm-config-data.c @@ -30,6 +30,8 @@ #include "nm-core-internal.h" #include "nm-keyfile-internal.h" +/*****************************************************************************/ + typedef struct { char *group_name; gboolean stop_match; @@ -42,6 +44,33 @@ typedef struct { } match_device; } MatchSectionInfo; +struct _NMGlobalDnsDomain { + char *name; + char **servers; + char **options; +}; + +struct _NMGlobalDnsConfig { + char **searches; + char **options; + GHashTable *domains; + char **domain_list; + gboolean internal; +}; + +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_CONFIG_MAIN_FILE, + PROP_CONFIG_DESCRIPTION, + PROP_KEYFILE_USER, + PROP_KEYFILE_INTERN, + PROP_CONNECTIVITY_URI, + PROP_CONNECTIVITY_INTERVAL, + PROP_CONNECTIVITY_RESPONSE, + PROP_NO_AUTO_DEFAULT, +); + typedef struct { char *config_main_file; char *config_description; @@ -82,38 +111,18 @@ typedef struct { char *value_cached; } NMConfigDataPrivate; -struct _NMGlobalDnsDomain { - char *name; - char **servers; - char **options; -}; - -struct _NMGlobalDnsConfig { - char **searches; - char **options; - GHashTable *domains; - char **domain_list; - gboolean internal; +struct _NMConfigData { + GObject parent; + NMConfigDataPrivate _priv; }; -enum { - PROP_0, - PROP_CONFIG_MAIN_FILE, - PROP_CONFIG_DESCRIPTION, - PROP_KEYFILE_USER, - PROP_KEYFILE_INTERN, - PROP_CONNECTIVITY_URI, - PROP_CONNECTIVITY_INTERVAL, - PROP_CONNECTIVITY_RESPONSE, - PROP_NO_AUTO_DEFAULT, - - LAST_PROP +struct _NMConfigDataClass { + GObjectClass parent; }; - G_DEFINE_TYPE (NMConfigData, nm_config_data, G_TYPE_OBJECT) -#define NM_CONFIG_DATA_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CONFIG_DATA, NMConfigDataPrivate)) +#define NM_CONFIG_DATA_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMConfigData, NM_IS_CONFIG_DATA) /*****************************************************************************/ @@ -162,7 +171,7 @@ nm_config_data_get_value (const NMConfigData *self, const char *group, const cha const char *nm_config_data_get_value_cached (const NMConfigData *self, const char *group, const char *key, NMConfigGetValueFlags flags) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; g_return_val_if_fail (NM_IS_CONFIG_DATA (self), NULL); g_return_val_if_fail (group && *group, NULL); @@ -171,8 +180,8 @@ const char *nm_config_data_get_value_cached (const NMConfigData *self, const cha priv = NM_CONFIG_DATA_GET_PRIVATE (self); /* we modify @value_cached. In C++ jargon, the field is mutable. */ - g_free (priv->value_cached); - priv->value_cached = nm_config_keyfile_get_value (priv->keyfile, group, key, flags); + g_free (((NMConfigDataPrivate *) priv)->value_cached); + ((NMConfigDataPrivate *) priv)->value_cached = nm_config_keyfile_get_value (priv->keyfile, group, key, flags); return priv->value_cached; } @@ -243,7 +252,7 @@ nm_config_data_get_no_auto_default (const NMConfigData *self) gboolean nm_config_data_get_no_auto_default_for_device (const NMConfigData *self, NMDevice *device) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; g_return_val_if_fail (NM_IS_CONFIG_DATA (self), FALSE); g_return_val_if_fail (NM_IS_DEVICE (device), FALSE); @@ -297,7 +306,7 @@ nm_config_data_get_assume_ipv6ll_only (const NMConfigData *self, NMDevice *devic GKeyFile * nm_config_data_clone_keyfile_intern (const NMConfigData *self) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; GKeyFile *keyfile; g_return_val_if_fail (NM_IS_CONFIG_DATA (self), FALSE); @@ -373,7 +382,7 @@ nm_config_data_get_keys (const NMConfigData *self, const char *group) gboolean nm_config_data_is_intern_atomic_group (const NMConfigData *self, const char *group) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; g_return_val_if_fail (NM_IS_CONFIG_DATA (self), FALSE); g_return_val_if_fail (group && *group, FALSE); @@ -532,7 +541,7 @@ nm_config_data_log (const NMConfigData *self, const char *key_prefix, /* FILE* */ gpointer print_stream) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; gs_strfreev char **groups = NULL; gsize ngroups; guint g, k; @@ -1127,7 +1136,7 @@ nm_config_data_get_device_config (const NMConfigData *self, NMDevice *device, gboolean *has_match) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; const MatchSectionInfo *connection_info; char *value = NULL; @@ -1166,7 +1175,7 @@ nm_config_data_get_connection_default (const NMConfigData *self, const char *property, NMDevice *device) { - NMConfigDataPrivate *priv; + const NMConfigDataPrivate *priv; char *value = NULL; g_return_val_if_fail (self, NULL); @@ -1409,47 +1418,7 @@ set_property (GObject *object, } } -static void -dispose (GObject *object) -{ -} - -static void -finalize (GObject *gobject) -{ - NMConfigDataPrivate *priv = NM_CONFIG_DATA_GET_PRIVATE (gobject); - - g_free (priv->config_main_file); - g_free (priv->config_description); - - g_free (priv->connectivity.uri); - g_free (priv->connectivity.response); - - g_slist_free_full (priv->no_auto_default.specs, g_free); - g_slist_free_full (priv->no_auto_default.specs_config, g_free); - g_strfreev (priv->no_auto_default.arr); - - g_free (priv->dns_mode); - g_free (priv->rc_manager); - - g_slist_free_full (priv->ignore_carrier, g_free); - g_slist_free_full (priv->assume_ipv6ll_only, g_free); - - nm_global_dns_config_free (priv->global_dns); - - _match_section_infos_free (priv->connection_infos); - _match_section_infos_free (priv->device_infos); - - g_key_file_unref (priv->keyfile); - if (priv->keyfile_user) - g_key_file_unref (priv->keyfile_user); - if (priv->keyfile_intern) - g_key_file_unref (priv->keyfile_intern); - - G_OBJECT_CLASS (nm_config_data_parent_class)->finalize (gobject); - - g_free (priv->value_cached); -} +/*****************************************************************************/ static void nm_config_data_init (NMConfigData *self) @@ -1513,7 +1482,7 @@ nm_config_data_new (const char *config_main_file, NMConfigData * nm_config_data_new_update_keyfile_intern (const NMConfigData *base, GKeyFile *keyfile_intern) { - NMConfigDataPrivate *priv = NM_CONFIG_DATA_GET_PRIVATE (base); + const NMConfigDataPrivate *priv = NM_CONFIG_DATA_GET_PRIVATE (base); return g_object_new (NM_TYPE_CONFIG_DATA, NM_CONFIG_DATA_CONFIG_MAIN_FILE, priv->config_main_file, @@ -1528,7 +1497,7 @@ NMConfigData * nm_config_data_new_update_no_auto_default (const NMConfigData *base, const char *const*no_auto_default) { - NMConfigDataPrivate *priv = NM_CONFIG_DATA_GET_PRIVATE (base); + const NMConfigDataPrivate *priv = NM_CONFIG_DATA_GET_PRIVATE (base); return g_object_new (NM_TYPE_CONFIG_DATA, NM_CONFIG_DATA_CONFIG_MAIN_FILE, priv->config_main_file, @@ -1540,78 +1509,104 @@ nm_config_data_new_update_no_auto_default (const NMConfigData *base, } static void +finalize (GObject *gobject) +{ + NMConfigDataPrivate *priv = NM_CONFIG_DATA_GET_PRIVATE ((NMConfigData *) gobject); + + g_free (priv->config_main_file); + g_free (priv->config_description); + + g_free (priv->connectivity.uri); + g_free (priv->connectivity.response); + + g_slist_free_full (priv->no_auto_default.specs, g_free); + g_slist_free_full (priv->no_auto_default.specs_config, g_free); + g_strfreev (priv->no_auto_default.arr); + + g_free (priv->dns_mode); + g_free (priv->rc_manager); + + g_slist_free_full (priv->ignore_carrier, g_free); + g_slist_free_full (priv->assume_ipv6ll_only, g_free); + + nm_global_dns_config_free (priv->global_dns); + + _match_section_infos_free (priv->connection_infos); + _match_section_infos_free (priv->device_infos); + + g_key_file_unref (priv->keyfile); + if (priv->keyfile_user) + g_key_file_unref (priv->keyfile_user); + if (priv->keyfile_intern) + g_key_file_unref (priv->keyfile_intern); + + G_OBJECT_CLASS (nm_config_data_parent_class)->finalize (gobject); + + g_free (priv->value_cached); +} + +static void nm_config_data_class_init (NMConfigDataClass *config_class) { GObjectClass *object_class = G_OBJECT_CLASS (config_class); - g_type_class_add_private (config_class, sizeof (NMConfigDataPrivate)); - object_class->constructed = constructed; - object_class->dispose = dispose; object_class->finalize = finalize; object_class->get_property = get_property; object_class->set_property = set_property; - g_object_class_install_property - (object_class, PROP_CONFIG_MAIN_FILE, + obj_properties[PROP_CONFIG_MAIN_FILE] = g_param_spec_string (NM_CONFIG_DATA_CONFIG_MAIN_FILE, "", "", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_CONFIG_DESCRIPTION, + obj_properties[PROP_CONFIG_DESCRIPTION] = g_param_spec_string (NM_CONFIG_DATA_CONFIG_DESCRIPTION, "", "", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_KEYFILE_USER, - g_param_spec_boxed (NM_CONFIG_DATA_KEYFILE_USER, "", "", - G_TYPE_KEY_FILE, - G_PARAM_WRITABLE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_KEYFILE_INTERN, - g_param_spec_boxed (NM_CONFIG_DATA_KEYFILE_INTERN, "", "", - G_TYPE_KEY_FILE, - G_PARAM_WRITABLE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property - (object_class, PROP_CONNECTIVITY_URI, + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_KEYFILE_USER] = + g_param_spec_boxed (NM_CONFIG_DATA_KEYFILE_USER, "", "", + G_TYPE_KEY_FILE, + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_KEYFILE_INTERN] = + g_param_spec_boxed (NM_CONFIG_DATA_KEYFILE_INTERN, "", "", + G_TYPE_KEY_FILE, + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_CONNECTIVITY_URI] = g_param_spec_string (NM_CONFIG_DATA_CONNECTIVITY_URI, "", "", NULL, G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_CONNECTIVITY_INTERVAL, + obj_properties[PROP_CONNECTIVITY_INTERVAL] = g_param_spec_uint (NM_CONFIG_DATA_CONNECTIVITY_INTERVAL, "", "", 0, G_MAXUINT, 0, G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_CONNECTIVITY_RESPONSE, + obj_properties[PROP_CONNECTIVITY_RESPONSE] = g_param_spec_string (NM_CONFIG_DATA_CONNECTIVITY_RESPONSE, "", "", NULL, G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_NO_AUTO_DEFAULT, + obj_properties[PROP_NO_AUTO_DEFAULT] = g_param_spec_boxed (NM_CONFIG_DATA_NO_AUTO_DEFAULT, "", "", G_TYPE_STRV, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); } - diff --git a/src/nm-config-data.h b/src/nm-config-data.h index e63b45904e..712b32555d 100644 --- a/src/nm-config-data.h +++ b/src/nm-config-data.h @@ -28,7 +28,6 @@ #define NM_IS_CONFIG_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_CONFIG_DATA)) #define NM_CONFIG_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_CONFIG_DATA, NMConfigDataClass)) - #define NM_CONFIG_DATA_CONFIG_MAIN_FILE "config-main-file" #define NM_CONFIG_DATA_CONFIG_DESCRIPTION "config-description" #define NM_CONFIG_DATA_KEYFILE_USER "keyfile-user" @@ -128,13 +127,7 @@ typedef enum { /*< flags >*/ } NMConfigChangeFlags; -struct _NMConfigData { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMConfigDataClass; +typedef struct _NMConfigDataClass NMConfigDataClass; typedef struct _NMGlobalDnsConfig NMGlobalDnsConfig; typedef struct _NMGlobalDnsDomain NMGlobalDnsDomain; diff --git a/src/nm-config.c b/src/nm-config.c index e1066b9e0f..0ef7fc2090 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -43,17 +43,6 @@ /*****************************************************************************/ -#define _NMLOG_PREFIX_NAME "config" -#define _NMLOG_DOMAIN LOGD_CORE - -#define _NMLOG(level, ...) \ - nm_log (level, _NMLOG_DOMAIN, \ - "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)) - -/*****************************************************************************/ - struct NMConfigCmdLineOptions { char *config_main_file; char *intern_config_file; @@ -77,6 +66,20 @@ typedef struct { NMConfigState p; } State; +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_CMD_LINE_OPTIONS, + PROP_ATOMIC_SECTION_PREFIXES, +); + +enum { + SIGNAL_CONFIG_CHANGED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + typedef struct { NMConfigCmdLineOptions cli; @@ -116,29 +119,33 @@ typedef struct { State *state; } NMConfigPrivate; -enum { - PROP_0, - PROP_CMD_LINE_OPTIONS, - PROP_ATOMIC_SECTION_PREFIXES, - LAST_PROP, +struct _NMConfig { + GObject parent; + NMConfigPrivate _priv; }; -enum { - SIGNAL_CONFIG_CHANGED, - - LAST_SIGNAL +struct _NMConfigClass { + GObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; - static void nm_config_initable_iface_init (GInitableIface *iface); G_DEFINE_TYPE_WITH_CODE (NMConfig, nm_config, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, nm_config_initable_iface_init); ) +#define NM_CONFIG_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMConfig, NM_IS_CONFIG) + +/*****************************************************************************/ -#define NM_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CONFIG, NMConfigPrivate)) +#define _NMLOG_PREFIX_NAME "config" +#define _NMLOG_DOMAIN LOGD_CORE + +#define _NMLOG(level, ...) \ + nm_log (level, _NMLOG_DOMAIN, \ + "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + _NMLOG_PREFIX_NAME \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)) /*****************************************************************************/ @@ -162,7 +169,7 @@ nm_config_parse_boolean (const char *str, } gint -nm_config_keyfile_get_boolean (GKeyFile *keyfile, +nm_config_keyfile_get_boolean (const GKeyFile *keyfile, const char *section, const char *key, gint default_value) @@ -173,12 +180,12 @@ nm_config_keyfile_get_boolean (GKeyFile *keyfile, g_return_val_if_fail (section != NULL, default_value); g_return_val_if_fail (key != NULL, default_value); - str = g_key_file_get_value (keyfile, section, key, NULL); + str = g_key_file_get_value ((GKeyFile *) keyfile, section, key, NULL); return nm_config_parse_boolean (str, default_value); } char * -nm_config_keyfile_get_value (GKeyFile *keyfile, +nm_config_keyfile_get_value (const GKeyFile *keyfile, const char *section, const char *key, NMConfigGetValueFlags flags) @@ -186,9 +193,9 @@ nm_config_keyfile_get_value (GKeyFile *keyfile, char *value; if (NM_FLAGS_HAS (flags, NM_CONFIG_GET_VALUE_RAW)) - value = g_key_file_get_value (keyfile, section, key, NULL); + value = g_key_file_get_value ((GKeyFile *) keyfile, section, key, NULL); else - value = g_key_file_get_string (keyfile, section, key, NULL); + value = g_key_file_get_string ((GKeyFile *) keyfile, section, key, NULL); if (!value) return NULL; @@ -2208,6 +2215,37 @@ nm_config_setup (const NMConfigCmdLineOptions *cli, char **atomic_section_prefix return singleton_instance; } +/*****************************************************************************/ + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMConfig *self = NM_CONFIG (object); + NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (self); + NMConfigCmdLineOptions *cli; + + switch (prop_id) { + case PROP_CMD_LINE_OPTIONS: + /* construct only */ + cli = g_value_get_pointer (value); + if (!cli) + _nm_config_cmd_line_options_clear (&priv->cli); + else + _nm_config_cmd_line_options_copy (cli, &priv->cli); + break; + case PROP_ATOMIC_SECTION_PREFIXES: + /* construct only */ + priv->atomic_section_prefixes = g_strdupv (g_value_get_boxed (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + static gboolean init_sync (GInitable *initable, GCancellable *cancellable, GError **error) { @@ -2306,6 +2344,16 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) return TRUE; } +/*****************************************************************************/ + +static void +nm_config_init (NMConfig *config) +{ + NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (config); + + priv->auth_polkit = NM_CONFIG_DEFAULT_AUTH_POLKIT; +} + NMConfig * nm_config_new (const NMConfigCmdLineOptions *cli, char **atomic_section_prefixes, GError **error) { @@ -2318,17 +2366,9 @@ nm_config_new (const NMConfigCmdLineOptions *cli, char **atomic_section_prefixes } static void -nm_config_init (NMConfig *config) -{ - NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (config); - - priv->auth_polkit = NM_CONFIG_DEFAULT_AUTH_POLKIT; -} - -static void finalize (GObject *gobject) { - NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (gobject); + NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE ((NMConfig *) gobject); state_free (priv->state); @@ -2352,55 +2392,27 @@ finalize (GObject *gobject) } static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMConfig *self = NM_CONFIG (object); - NMConfigPrivate *priv = NM_CONFIG_GET_PRIVATE (self); - NMConfigCmdLineOptions *cli; - - switch (prop_id) { - case PROP_CMD_LINE_OPTIONS: - /* construct only */ - cli = g_value_get_pointer (value); - if (!cli) - _nm_config_cmd_line_options_clear (&priv->cli); - else - _nm_config_cmd_line_options_copy (cli, &priv->cli); - break; - case PROP_ATOMIC_SECTION_PREFIXES: - /* construct only */ - priv->atomic_section_prefixes = g_strdupv (g_value_get_boxed (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void nm_config_class_init (NMConfigClass *config_class) { GObjectClass *object_class = G_OBJECT_CLASS (config_class); - g_type_class_add_private (config_class, sizeof (NMConfigPrivate)); object_class->finalize = finalize; object_class->set_property = set_property; - g_object_class_install_property - (object_class, PROP_CMD_LINE_OPTIONS, + obj_properties[PROP_CMD_LINE_OPTIONS] = g_param_spec_pointer (NM_CONFIG_CMD_LINE_OPTIONS, "", "", G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_ATOMIC_SECTION_PREFIXES, + obj_properties[PROP_ATOMIC_SECTION_PREFIXES] = g_param_spec_boxed (NM_CONFIG_ATOMIC_SECTION_PREFIXES, "", "", G_TYPE_STRV, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); signals[SIGNAL_CONFIG_CHANGED] = g_signal_new (NM_CONFIG_SIGNAL_CONFIG_CHANGED, @@ -2426,4 +2438,3 @@ nm_config_initable_iface_init (GInitableIface *iface) { iface->init = init_sync; } - diff --git a/src/nm-config.h b/src/nm-config.h index 07deeadbf3..1b80e96da8 100644 --- a/src/nm-config.h +++ b/src/nm-config.h @@ -100,13 +100,7 @@ typedef struct { bool dirty; } NMConfigState; -struct _NMConfig { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMConfigClass; +typedef struct _NMConfigClass NMConfigClass; GType nm_config_get_type (void); @@ -160,11 +154,11 @@ void _nm_config_state_set (NMConfig *config, gint nm_config_parse_boolean (const char *str, gint default_value); GKeyFile *nm_config_create_keyfile (void); -gint nm_config_keyfile_get_boolean (GKeyFile *keyfile, +gint nm_config_keyfile_get_boolean (const GKeyFile *keyfile, const char *section, const char *key, gint default_value); -char *nm_config_keyfile_get_value (GKeyFile *keyfile, +char *nm_config_keyfile_get_value (const GKeyFile *keyfile, const char *section, const char *key, NMConfigGetValueFlags flags); @@ -215,4 +209,3 @@ void nm_config_device_state_prune_unseen (NMConfig *self, GHashTable *seen_ifind /*****************************************************************************/ #endif /* __NETWORKMANAGER_CONFIG_H__ */ - diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c index 4d87359ff2..5d87621013 100644 --- a/src/nm-connectivity.c +++ b/src/nm-connectivity.c @@ -21,28 +21,25 @@ #include "nm-default.h" +#include "nm-connectivity.h" + #include <string.h> #if WITH_CONCHECK #include <libsoup/soup.h> #endif -#include "nm-connectivity.h" #include "nm-config.h" #include "nm-dispatcher.h" #include "NetworkManagerUtils.h" -G_DEFINE_TYPE (NMConnectivity, nm_connectivity, G_TYPE_OBJECT) - -#define NM_CONNECTIVITY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CONNECTIVITY, NMConnectivityPrivate)) +/*****************************************************************************/ -#define _NMLOG_DOMAIN LOGD_CONCHECK -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), (_NMLOG_DOMAIN), \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - "connectivity: " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END +NM_GOBJECT_PROPERTIES_DEFINE (NMConnectivity, + PROP_URI, + PROP_INTERVAL, + PROP_RESPONSE, + PROP_STATE, +); typedef struct { char *uri; @@ -59,15 +56,31 @@ typedef struct { NMConnectivityState state; } NMConnectivityPrivate; -enum { - PROP_0, - PROP_URI, - PROP_INTERVAL, - PROP_RESPONSE, - PROP_STATE, - LAST_PROP +struct _NMConnectivity { + GObject parent; + NMConnectivityPrivate _priv; }; +struct _NMConnectivityClass { + GObjectClass parent; +}; + +G_DEFINE_TYPE (NMConnectivity, nm_connectivity, G_TYPE_OBJECT) + +#define NM_CONNECTIVITY_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMConnectivity, NM_IS_CONNECTIVITY) + +/*****************************************************************************/ + +#define _NMLOG_DOMAIN LOGD_CONCHECK +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), (_NMLOG_DOMAIN), \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + "connectivity: " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ NMConnectivityState nm_connectivity_get_state (NMConnectivity *connectivity) @@ -96,7 +109,7 @@ update_state (NMConnectivity *self, NMConnectivityState state) nm_connectivity_state_to_string (priv->state), nm_connectivity_state_to_string (state)); priv->state = state; - g_object_notify (G_OBJECT (self), NM_CONNECTIVITY_STATE); + _notify (self, PROP_STATE); /* Notify dispatcher scripts of a connectivity state change */ nm_dispatcher_call_connectivity (DISPATCHER_ACTION_CONNECTIVITY_CHANGE, state); @@ -331,16 +344,33 @@ nm_connectivity_check_finish (NMConnectivity *self, /*****************************************************************************/ -NMConnectivity * -nm_connectivity_new (const char *uri, - guint interval, - const char *response) +static void +get_property (GObject *object, guint property_id, + GValue *value, GParamSpec *pspec) { - return g_object_new (NM_TYPE_CONNECTIVITY, - NM_CONNECTIVITY_URI, uri, - NM_CONNECTIVITY_INTERVAL, interval, - NM_CONNECTIVITY_RESPONSE, response, - NULL); + NMConnectivity *self = NM_CONNECTIVITY (object); + NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); + + switch (property_id) { + case PROP_URI: + g_value_set_string (value, priv->uri); + break; + case PROP_INTERVAL: + g_value_set_uint (value, priv->interval); + break; + case PROP_RESPONSE: + if (priv->response) + g_value_set_string (value, priv->response); + else + g_value_set_static_string (value, NM_CONFIG_DEFAULT_CONNECTIVITY_RESPONSE); + break; + case PROP_STATE: + g_value_set_uint (value, priv->state); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } } static void @@ -403,35 +433,7 @@ set_property (GObject *object, guint property_id, } } -static void -get_property (GObject *object, guint property_id, - GValue *value, GParamSpec *pspec) -{ - NMConnectivity *self = NM_CONNECTIVITY (object); - NMConnectivityPrivate *priv = NM_CONNECTIVITY_GET_PRIVATE (self); - - switch (property_id) { - case PROP_URI: - g_value_set_string (value, priv->uri); - break; - case PROP_INTERVAL: - g_value_set_uint (value, priv->interval); - break; - case PROP_RESPONSE: - if (priv->response) - g_value_set_string (value, priv->response); - else - g_value_set_static_string (value, NM_CONFIG_DEFAULT_CONNECTIVITY_RESPONSE); - break; - case PROP_STATE: - g_value_set_uint (value, priv->state); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - +/*****************************************************************************/ static void nm_connectivity_init (NMConnectivity *self) @@ -444,6 +446,17 @@ nm_connectivity_init (NMConnectivity *self) priv->state = NM_CONNECTIVITY_NONE; } +NMConnectivity * +nm_connectivity_new (const char *uri, + guint interval, + const char *response) +{ + return g_object_new (NM_TYPE_CONNECTIVITY, + NM_CONNECTIVITY_URI, uri, + NM_CONNECTIVITY_INTERVAL, interval, + NM_CONNECTIVITY_RESPONSE, response, + NULL); +} static void dispose (GObject *object) @@ -466,48 +479,42 @@ dispose (GObject *object) G_OBJECT_CLASS (nm_connectivity_parent_class)->dispose (object); } - static void nm_connectivity_class_init (NMConnectivityClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMConnectivityPrivate)); - /* virtual methods */ object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; - /* properties */ - g_object_class_install_property - (object_class, PROP_URI, + obj_properties[PROP_URI] = g_param_spec_string (NM_CONNECTIVITY_URI, "", "", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_INTERVAL, + obj_properties[PROP_INTERVAL] = g_param_spec_uint (NM_CONNECTIVITY_INTERVAL, "", "", 0, G_MAXUINT, NM_CONFIG_DEFAULT_CONNECTIVITY_INTERVAL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_RESPONSE, + obj_properties[PROP_RESPONSE] = g_param_spec_string (NM_CONNECTIVITY_RESPONSE, "", "", NM_CONFIG_DEFAULT_CONNECTIVITY_RESPONSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); - g_object_class_install_property - (object_class, PROP_STATE, + obj_properties[PROP_STATE] = g_param_spec_uint (NM_CONNECTIVITY_STATE, "", "", NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_UNKNOWN, G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); } diff --git a/src/nm-connectivity.h b/src/nm-connectivity.h index 10fcef97af..6900bd0fa8 100644 --- a/src/nm-connectivity.h +++ b/src/nm-connectivity.h @@ -30,19 +30,12 @@ #define NM_IS_CONNECTIVITY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_CONNECTIVITY)) #define NM_CONNECTIVITY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_CONNECTIVITY, NMConnectivityClass)) -/* Properties */ #define NM_CONNECTIVITY_URI "uri" #define NM_CONNECTIVITY_INTERVAL "interval" #define NM_CONNECTIVITY_RESPONSE "response" #define NM_CONNECTIVITY_STATE "state" -struct _NMConnectivity { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMConnectivityClass; +typedef struct _NMConnectivityClass NMConnectivityClass; GType nm_connectivity_get_type (void); diff --git a/src/nm-default-route-manager.c b/src/nm-default-route-manager.c index 2db305c984..c93e46fca2 100644 --- a/src/nm-default-route-manager.c +++ b/src/nm-default-route-manager.c @@ -21,9 +21,10 @@ #include "nm-default.h" +#include "nm-default-route-manager.h" + #include <string.h> -#include "nm-default-route-manager.h" #include "nm-device.h" #include "nm-vpn-connection.h" #include "nm-platform.h" @@ -32,6 +33,12 @@ #include "nm-ip6-config.h" #include "nm-act-request.h" +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_PLATFORM, +); + typedef struct { GPtrArray *entries_ip4; GPtrArray *entries_ip6; @@ -54,16 +61,23 @@ typedef struct { NMPlatform *platform; } NMDefaultRouteManagerPrivate; -#define NM_DEFAULT_ROUTE_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEFAULT_ROUTE_MANAGER, NMDefaultRouteManagerPrivate)) +struct _NMDefaultRouteManager { + GObject parent; + NMDefaultRouteManagerPrivate _priv; +}; + +struct _NMDefaultRouteManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMDefaultRouteManager, nm_default_route_manager, G_TYPE_OBJECT) -NM_GOBJECT_PROPERTIES_DEFINE_BASE ( - PROP_PLATFORM, -); +#define NM_DEFAULT_ROUTE_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDefaultRouteManager, NM_IS_DEFAULT_ROUTE_MANAGER) NM_DEFINE_SINGLETON_GETTER (NMDefaultRouteManager, nm_default_route_manager_get, NM_TYPE_DEFAULT_ROUTE_MANAGER); +/*****************************************************************************/ + #define _NMLOG_PREFIX_NAME "default-route" #undef _NMLOG_ENABLED #define _NMLOG_ENABLED(level, addr_family) \ @@ -1397,6 +1411,8 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + static void nm_default_route_manager_init (NMDefaultRouteManager *self) { @@ -1464,9 +1480,6 @@ nm_default_route_manager_class_init (NMDefaultRouteManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMDefaultRouteManagerPrivate)); - - /* virtual methods */ object_class->constructed = constructed; object_class->dispose = dispose; object_class->set_property = set_property; @@ -1477,7 +1490,6 @@ nm_default_route_manager_class_init (NMDefaultRouteManagerClass *klass) G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); - g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); } - diff --git a/src/nm-default-route-manager.h b/src/nm-default-route-manager.h index 30f130a476..bd5e873295 100644 --- a/src/nm-default-route-manager.h +++ b/src/nm-default-route-manager.h @@ -32,13 +32,7 @@ #define NM_DEFAULT_ROUTE_MANAGER_PLATFORM "platform" -struct _NMDefaultRouteManager { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMDefaultRouteManagerClass; +typedef struct _NMDefaultRouteManagerClass NMDefaultRouteManagerClass; GType nm_default_route_manager_get_type (void); @@ -68,4 +62,3 @@ NMIP6Config *nm_default_route_manager_ip6_get_best_config (NMDefaultRouteManager NMVpnConnection **out_vpn); #endif /* NM_DEFAULT_ROUTE_MANAGER_H */ - diff --git a/src/nm-dhcp4-config.c b/src/nm-dhcp4-config.c index 26c6ab0b43..00aee8fafb 100644 --- a/src/nm-dhcp4-config.c +++ b/src/nm-dhcp4-config.c @@ -20,36 +20,40 @@ #include "nm-default.h" +#include "nm-dhcp4-config.h" + #include <string.h> #include "nm-dbus-interface.h" -#include "nm-dhcp4-config.h" #include "nm-utils.h" +#include "nm-exported-object.h" #include "nmdbus-dhcp4-config.h" -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)) +NM_GOBJECT_PROPERTIES_DEFINE (NMDhcp4Config, + PROP_OPTIONS, +); typedef struct { GVariant *options; } NMDhcp4ConfigPrivate; +struct _NMDhcp4Config { + NMExportedObject parent; + NMDhcp4ConfigPrivate _priv; +}; -enum { - PROP_0, - PROP_OPTIONS, - - LAST_PROP +struct _NMDhcp4ConfigClass { + NMExportedObjectClass parent; }; +G_DEFINE_TYPE (NMDhcp4Config, nm_dhcp4_config, NM_TYPE_EXPORTED_OBJECT) -NMDhcp4Config * -nm_dhcp4_config_new (void) -{ - return NM_DHCP4_CONFIG (g_object_new (NM_TYPE_DHCP4_CONFIG, NULL)); -} +#define NM_DHCP4_CONFIG_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDhcp4Config, NM_IS_DHCP4_CONFIG) + +/*****************************************************************************/ void nm_dhcp4_config_set_options (NMDhcp4Config *self, @@ -72,7 +76,7 @@ nm_dhcp4_config_set_options (NMDhcp4Config *self, priv->options = g_variant_builder_end (&builder); g_variant_ref_sink (priv->options); - g_object_notify (G_OBJECT (self), NM_DHCP4_CONFIG_OPTIONS); + _notify (self, PROP_OPTIONS); } const char * @@ -98,6 +102,26 @@ nm_dhcp4_config_get_options (NMDhcp4Config *self) return g_variant_ref (NM_DHCP4_CONFIG_GET_PRIVATE (self)->options); } +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMDhcp4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE ((NMDhcp4Config *) object); + + switch (prop_id) { + case PROP_OPTIONS: + g_value_set_variant (value, priv->options); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + static void nm_dhcp4_config_init (NMDhcp4Config *self) { @@ -107,10 +131,16 @@ nm_dhcp4_config_init (NMDhcp4Config *self) g_variant_ref_sink (priv->options); } +NMDhcp4Config * +nm_dhcp4_config_new (void) +{ + return NM_DHCP4_CONFIG (g_object_new (NM_TYPE_DHCP4_CONFIG, NULL)); +} + static void finalize (GObject *object) { - NMDhcp4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE (object); + NMDhcp4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE ((NMDhcp4Config *) object); g_variant_unref (priv->options); @@ -118,44 +148,25 @@ finalize (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMDhcp4ConfigPrivate *priv = NM_DHCP4_CONFIG_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_OPTIONS: - g_value_set_variant (value, priv->options); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -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)); + object_class->get_property = get_property; + object_class->finalize = finalize; exported_object_class->export_path = NM_DBUS_PATH "/DHCP4Config/%u"; exported_object_class->export_on_construction = TRUE; - /* virtual methods */ - object_class->get_property = get_property; - object_class->finalize = finalize; + obj_properties[PROP_OPTIONS] = + g_param_spec_variant (NM_DHCP4_CONFIG_OPTIONS, "", "", + G_VARIANT_TYPE ("a{sv}"), + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); - /* properties */ - g_object_class_install_property - (object_class, PROP_OPTIONS, - g_param_spec_variant (NM_DHCP4_CONFIG_OPTIONS, "", "", - G_VARIANT_TYPE ("a{sv}"), - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (config_class), NMDBUS_TYPE_DHCP4_CONFIG_SKELETON, diff --git a/src/nm-dhcp4-config.h b/src/nm-dhcp4-config.h index 080e28deff..7fdf0653e3 100644 --- a/src/nm-dhcp4-config.h +++ b/src/nm-dhcp4-config.h @@ -21,8 +21,6 @@ #ifndef __NETWORKMANAGER_DHCP4_CONFIG_H__ #define __NETWORKMANAGER_DHCP4_CONFIG_H__ -#include "nm-exported-object.h" - #define NM_TYPE_DHCP4_CONFIG (nm_dhcp4_config_get_type ()) #define NM_DHCP4_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DHCP4_CONFIG, NMDhcp4Config)) #define NM_DHCP4_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DHCP4_CONFIG, NMDhcp4ConfigClass)) @@ -30,17 +28,10 @@ #define NM_IS_DHCP4_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DHCP4_CONFIG)) #define NM_DHCP4_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DHCP4_CONFIG, NMDhcp4ConfigClass)) -struct _NMDhcp4Config { - NMExportedObject parent; -}; - -typedef struct { - NMExportedObjectClass parent; - -} NMDhcp4ConfigClass; - #define NM_DHCP4_CONFIG_OPTIONS "options" +typedef struct _NMDhcp4ConfigClass NMDhcp4ConfigClass; + GType nm_dhcp4_config_get_type (void); NMDhcp4Config *nm_dhcp4_config_new (void); diff --git a/src/nm-dhcp6-config.c b/src/nm-dhcp6-config.c index 4311ee985e..2d878cde5b 100644 --- a/src/nm-dhcp6-config.c +++ b/src/nm-dhcp6-config.c @@ -20,36 +20,40 @@ #include "nm-default.h" +#include "nm-dhcp6-config.h" + #include <string.h> #include "nm-dbus-interface.h" -#include "nm-dhcp6-config.h" #include "nm-utils.h" +#include "nm-exported-object.h" #include "nmdbus-dhcp6-config.h" -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)) +NM_GOBJECT_PROPERTIES_DEFINE (NMDhcp6Config, + PROP_OPTIONS, +); typedef struct { GVariant *options; } NMDhcp6ConfigPrivate; +struct _NMDhcp6Config { + NMExportedObject parent; + NMDhcp6ConfigPrivate _priv; +}; -enum { - PROP_0, - PROP_OPTIONS, - - LAST_PROP +struct _NMDhcp6ConfigClass { + NMExportedObjectClass parent; }; +G_DEFINE_TYPE (NMDhcp6Config, nm_dhcp6_config, NM_TYPE_EXPORTED_OBJECT) -NMDhcp6Config * -nm_dhcp6_config_new (void) -{ - return NM_DHCP6_CONFIG (g_object_new (NM_TYPE_DHCP6_CONFIG, NULL)); -} +#define NM_DHCP6_CONFIG_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMDhcp6Config, NM_IS_DHCP6_CONFIG) + +/*****************************************************************************/ void nm_dhcp6_config_set_options (NMDhcp6Config *self, @@ -72,7 +76,7 @@ nm_dhcp6_config_set_options (NMDhcp6Config *self, priv->options = g_variant_builder_end (&builder); g_variant_ref_sink (priv->options); - g_object_notify (G_OBJECT (self), NM_DHCP6_CONFIG_OPTIONS); + _notify (self, PROP_OPTIONS); } const char * @@ -98,6 +102,24 @@ nm_dhcp6_config_get_options (NMDhcp6Config *self) return g_variant_ref (NM_DHCP6_CONFIG_GET_PRIVATE (self)->options); } +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMDhcp6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE ((NMDhcp6Config *) object); + + switch (prop_id) { + case PROP_OPTIONS: + g_value_set_variant (value, priv->options); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + static void nm_dhcp6_config_init (NMDhcp6Config *self) { @@ -107,10 +129,16 @@ nm_dhcp6_config_init (NMDhcp6Config *self) g_variant_ref_sink (priv->options); } +NMDhcp6Config * +nm_dhcp6_config_new (void) +{ + return NM_DHCP6_CONFIG (g_object_new (NM_TYPE_DHCP6_CONFIG, NULL)); +} + static void finalize (GObject *object) { - NMDhcp6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE (object); + NMDhcp6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE ((NMDhcp6Config *) object); g_variant_unref (priv->options); @@ -118,44 +146,25 @@ finalize (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMDhcp6ConfigPrivate *priv = NM_DHCP6_CONFIG_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_OPTIONS: - g_value_set_variant (value, priv->options); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -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)); + object_class->get_property = get_property; + object_class->finalize = finalize; exported_object_class->export_path = NM_DBUS_PATH "/DHCP6Config/%u"; exported_object_class->export_on_construction = TRUE; - /* virtual methods */ - object_class->get_property = get_property; - object_class->finalize = finalize; + obj_properties[PROP_OPTIONS] = + g_param_spec_variant (NM_DHCP6_CONFIG_OPTIONS, "", "", + G_VARIANT_TYPE ("a{sv}"), + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); - /* properties */ - g_object_class_install_property - (object_class, PROP_OPTIONS, - g_param_spec_variant (NM_DHCP6_CONFIG_OPTIONS, "", "", - G_VARIANT_TYPE ("a{sv}"), - NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (config_class), NMDBUS_TYPE_DHCP6_CONFIG_SKELETON, diff --git a/src/nm-dhcp6-config.h b/src/nm-dhcp6-config.h index c018d97f0c..6241845afa 100644 --- a/src/nm-dhcp6-config.h +++ b/src/nm-dhcp6-config.h @@ -21,8 +21,6 @@ #ifndef __NETWORKMANAGER_DHCP6_CONFIG_H__ #define __NETWORKMANAGER_DHCP6_CONFIG_H__ -#include "nm-exported-object.h" - #define NM_TYPE_DHCP6_CONFIG (nm_dhcp6_config_get_type ()) #define NM_DHCP6_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DHCP6_CONFIG, NMDhcp6Config)) #define NM_DHCP6_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DHCP6_CONFIG, NMDhcp6ConfigClass)) @@ -30,17 +28,10 @@ #define NM_IS_DHCP6_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DHCP6_CONFIG)) #define NM_DHCP6_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DHCP6_CONFIG, NMDhcp6ConfigClass)) -struct _NMDhcp6Config { - NMExportedObject parent; -}; - -typedef struct { - NMExportedObjectClass parent; - -} NMDhcp6ConfigClass; - #define NM_DHCP6_CONFIG_OPTIONS "options" +typedef struct _NMDhcp6ConfigClass NMDhcp6ConfigClass; + GType nm_dhcp6_config_get_type (void); NMDhcp6Config *nm_dhcp6_config_new (void); diff --git a/src/nm-exported-object.c b/src/nm-exported-object.c index fa3bb2b5d3..d3c3d1fdc3 100644 --- a/src/nm-exported-object.c +++ b/src/nm-exported-object.c @@ -995,7 +995,7 @@ constructed (GObject *object) } static void -nm_exported_object_dispose (GObject *object) +dispose (GObject *object) { NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (NM_EXPORTED_OBJECT (object)); @@ -1024,7 +1024,5 @@ nm_exported_object_class_init (NMExportedObjectClass *klass) object_class->constructed = constructed; object_class->notify = nm_exported_object_notify; - object_class->dispose = nm_exported_object_dispose; + object_class->dispose = dispose; } - - diff --git a/src/nm-firewall-manager.c b/src/nm-firewall-manager.c index 2fcafae6c8..5ba3d23e34 100644 --- a/src/nm-firewall-manager.c +++ b/src/nm-firewall-manager.c @@ -26,19 +26,19 @@ #include "NetworkManagerUtils.h" -#define NM_FIREWALL_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \ - NM_TYPE_FIREWALL_MANAGER, \ - NMFirewallManagerPrivate)) +/*****************************************************************************/ -G_DEFINE_TYPE (NMFirewallManager, nm_firewall_manager, G_TYPE_OBJECT) +NM_GOBJECT_PROPERTIES_DEFINE (NMFirewallManager, + PROP_AVAILABLE, +); -/* Properties */ enum { - PROP_0 = 0, - PROP_AVAILABLE, - LAST_PROP + STARTED, + LAST_SIGNAL }; +static guint signals[LAST_SIGNAL] = { 0 }; + typedef struct { GDBusProxy * proxy; gboolean running; @@ -46,13 +46,20 @@ typedef struct { GHashTable *pending_calls; } NMFirewallManagerPrivate; -enum { - STARTED, +struct _NMFirewallManager { + GObject parent; + NMFirewallManagerPrivate _priv; +}; - LAST_SIGNAL +struct _NMFirewallManagerClass { + GObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; +G_DEFINE_TYPE (NMFirewallManager, nm_firewall_manager, G_TYPE_OBJECT) + +#define NM_FIREWALL_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMFirewallManager, NM_IS_FIREWALL_MANAGER) + +/*****************************************************************************/ NM_DEFINE_SINGLETON_GETTER (NMFirewallManager, nm_firewall_manager_get, NM_TYPE_FIREWALL_MANAGER); @@ -406,7 +413,7 @@ set_running (NMFirewallManager *self, gboolean now_running) priv->running = now_running; if (old_running != priv->running) - g_object_notify (G_OBJECT (self), NM_FIREWALL_MANAGER_AVAILABLE); + _notify (self, PROP_AVAILABLE); } static void @@ -431,6 +438,21 @@ name_owner_changed (GObject *object, /*****************************************************************************/ static void +get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_AVAILABLE: + g_value_set_boolean (value, NM_FIREWALL_MANAGER_GET_PRIVATE ((NMFirewallManager *) object)->running); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + +static void nm_firewall_manager_init (NMFirewallManager * self) { NMFirewallManagerPrivate *priv = NM_FIREWALL_MANAGER_GET_PRIVATE (self); @@ -456,32 +478,18 @@ constructed (GObject *object) FIREWALL_DBUS_PATH, FIREWALL_DBUS_INTERFACE_ZONE, NULL, &error); - if (priv->proxy) { + if (priv->proxy) { g_signal_connect (priv->proxy, "notify::g-name-owner", - G_CALLBACK (name_owner_changed), self); + G_CALLBACK (name_owner_changed), self); owner = g_dbus_proxy_get_name_owner (priv->proxy); priv->running = (owner != NULL); - } else { - _LOGW (NULL, "could not connect to system D-Bus (%s)", error->message); - } + } else + _LOGW (NULL, "could not connect to system D-Bus (%s)", error->message); _LOGD (NULL, "firewall constructed (%srunning)", priv->running ? "" : "not"); } static void -get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { - case PROP_AVAILABLE: - g_value_set_boolean (value, NM_FIREWALL_MANAGER_GET_PRIVATE (object)->running); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void dispose (GObject *object) { NMFirewallManager *self = NM_FIREWALL_MANAGER (object); @@ -497,7 +505,6 @@ dispose (GObject *object) g_clear_object (&priv->proxy); - /* Chain up to the parent class */ G_OBJECT_CLASS (nm_firewall_manager_parent_class)->dispose (object); } @@ -506,27 +513,24 @@ nm_firewall_manager_class_init (NMFirewallManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (object_class, sizeof (NMFirewallManagerPrivate)); - object_class->constructed = constructed; object_class->get_property = get_property; object_class->dispose = dispose; - g_object_class_install_property - (object_class, PROP_AVAILABLE, + obj_properties[PROP_AVAILABLE] = g_param_spec_boolean (NM_FIREWALL_MANAGER_AVAILABLE, "", "", FALSE, G_PARAM_READABLE | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); signals[STARTED] = g_signal_new (NM_FIREWALL_MANAGER_STARTED, G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMFirewallManagerClass, started), + 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - } - diff --git a/src/nm-firewall-manager.h b/src/nm-firewall-manager.h index 92fac8e2fc..a00ee451e7 100644 --- a/src/nm-firewall-manager.h +++ b/src/nm-firewall-manager.h @@ -26,30 +26,21 @@ #define FIREWALL_DBUS_INTERFACE "org.fedoraproject.FirewallD1" #define FIREWALL_DBUS_INTERFACE_ZONE "org.fedoraproject.FirewallD1.zone" -#define NM_TYPE_FIREWALL_MANAGER (nm_firewall_manager_get_type ()) -#define NM_FIREWALL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_FIREWALL_MANAGER, NMFirewallManager)) -#define NM_FIREWALL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_FIREWALL_MANAGER, NMFirewallManagerClass)) -#define NM_IS_FIREWALL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_FIREWALL_MANAGER)) -#define NM_IS_FIREWALL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_FIREWALL_MANAGER)) -#define NM_FIREWALL_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_FIREWALL_MANAGER, NMFirewallManagerClass)) +#define NM_TYPE_FIREWALL_MANAGER (nm_firewall_manager_get_type ()) +#define NM_FIREWALL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_FIREWALL_MANAGER, NMFirewallManager)) +#define NM_FIREWALL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_FIREWALL_MANAGER, NMFirewallManagerClass)) +#define NM_IS_FIREWALL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_FIREWALL_MANAGER)) +#define NM_IS_FIREWALL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_FIREWALL_MANAGER)) +#define NM_FIREWALL_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_FIREWALL_MANAGER, NMFirewallManagerClass)) #define NM_FIREWALL_MANAGER_AVAILABLE "available" #define NM_FIREWALL_MANAGER_STARTED "started" -struct _NMFirewallManagerCallId; typedef struct _NMFirewallManagerCallId *NMFirewallManagerCallId; -typedef struct { - GObject parent; -} NMFirewallManager; - -typedef struct { - GObjectClass parent; - - /* Signals */ - void (*started) (NMFirewallManager *manager); -} NMFirewallManagerClass; +typedef struct _NMFirewallManager NMFirewallManager; +typedef struct _NMFirewallManagerClass NMFirewallManagerClass; GType nm_firewall_manager_get_type (void); diff --git a/src/nm-manager.c b/src/nm-manager.c index ef2b3a3abc..4c542a53d6 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -5613,6 +5613,9 @@ constructed (GObject *object) _set_prop_filter (self, nm_bus_manager_get_connection (priv->dbus_mgr)); priv->settings = nm_settings_new (); + + nm_exported_object_export (NM_EXPORTED_OBJECT (priv->settings)); + g_signal_connect (priv->settings, "notify::" NM_SETTINGS_STARTUP_COMPLETE, G_CALLBACK (settings_startup_complete_changed), self); g_signal_connect (priv->settings, "notify::" NM_SETTINGS_UNMANAGED_SPECS, diff --git a/src/nm-policy.c b/src/nm-policy.c index 5df3a8865d..ffe9203e7b 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -21,12 +21,13 @@ #include "nm-default.h" +#include "nm-policy.h" + #include <string.h> #include <unistd.h> #include <errno.h> #include <netdb.h> -#include "nm-policy.h" #include "NetworkManagerUtils.h" #include "nm-act-request.h" #include "nm-device.h" @@ -47,19 +48,18 @@ #include "nm-dhcp4-config.h" #include "nm-dhcp6-config.h" -#define _NMLOG_PREFIX_NAME "policy" -#define _NMLOG(level, domain, ...) \ - G_STMT_START { \ - nm_log ((level), (domain), \ - "%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ - } G_STMT_END +/*****************************************************************************/ -typedef struct _NMPolicyPrivate NMPolicyPrivate; +NM_GOBJECT_PROPERTIES_DEFINE (NMPolicy, + PROP_MANAGER, + PROP_SETTINGS, + PROP_DEFAULT_IP4_DEVICE, + PROP_DEFAULT_IP6_DEVICE, + PROP_ACTIVATING_IP4_DEVICE, + PROP_ACTIVATING_IP6_DEVICE, +); -struct _NMPolicyPrivate { - NMPolicy *self; +typedef struct { NMManager *manager; NMFirewallManager *firewall_manager; GSList *pending_activation_checks; @@ -88,28 +88,50 @@ struct _NMPolicyPrivate { char *orig_hostname; /* hostname at NM start time */ char *cur_hostname; /* hostname we want to assign */ gboolean hostname_changed; /* TRUE if NM ever set the hostname */ +} NMPolicyPrivate; + +struct _NMPolicy { + GObject parent; + NMPolicyPrivate _priv; +}; + +struct _NMPolicyClass { + GObjectClass parent; }; -static NMPolicyPrivate * -NM_POLICY_GET_PRIVATE(NMPolicy *self) +G_DEFINE_TYPE (NMPolicy, nm_policy, G_TYPE_OBJECT) + +#define NM_POLICY_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMPolicy, NM_IS_POLICY) + +static NMPolicy * +_PRIV_TO_SELF (NMPolicyPrivate *priv) { + NMPolicy *self; + + nm_assert (priv); + + self = (NMPolicy *) (((char *) priv) - G_STRUCT_OFFSET (NMPolicy, _priv)); + nm_assert (NM_IS_POLICY (self)); - return self->priv; + return self; } -G_DEFINE_TYPE (NMPolicy, nm_policy, G_TYPE_OBJECT) +/*****************************************************************************/ -NM_GOBJECT_PROPERTIES_DEFINE (NMPolicy, - PROP_MANAGER, - PROP_SETTINGS, - PROP_DEFAULT_IP4_DEVICE, - PROP_DEFAULT_IP6_DEVICE, - PROP_ACTIVATING_IP4_DEVICE, - PROP_ACTIVATING_IP6_DEVICE, -); +#define _NMLOG_PREFIX_NAME "policy" +#define _NMLOG(level, domain, ...) \ + G_STMT_START { \ + nm_log ((level), (domain), \ + "%s" _NM_UTILS_MACRO_FIRST (__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST (__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ static void schedule_activate_all (NMPolicy *self); +/*****************************************************************************/ static NMDevice * get_best_ip4_device (NMPolicy *self, gboolean fully_activated) @@ -852,7 +874,7 @@ static void hostname_changed (NMManager *manager, GParamSpec *pspec, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); update_system_hostname (self, NULL, NULL); } @@ -929,7 +951,7 @@ static void sleeping_changed (NMManager *manager, GParamSpec *pspec, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); gboolean sleeping = FALSE, enabled = FALSE; g_object_get (G_OBJECT (manager), NM_MANAGER_SLEEPING, &sleeping, NULL); @@ -1162,7 +1184,7 @@ device_state_changed (NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); NMSettingsConnection *connection = nm_device_get_settings_connection (device); @@ -1308,7 +1330,7 @@ device_ip4_config_changed (NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); const char *ip_iface = nm_device_get_ip_iface (device); nm_dns_manager_begin_updates (priv->dns_manager, __func__); @@ -1343,7 +1365,7 @@ device_ip6_config_changed (NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); const char *ip_iface = nm_device_get_ip_iface (device); nm_dns_manager_begin_updates (priv->dns_manager, __func__); @@ -1377,7 +1399,7 @@ device_autoconnect_changed (NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); if (nm_device_autoconnect_allowed (device)) schedule_activate_check (self, device); @@ -1387,7 +1409,7 @@ static void device_recheck_auto_activate (NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); schedule_activate_check (self, device); } @@ -1417,7 +1439,7 @@ static void device_added (NMManager *manager, NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); g_return_if_fail (NM_IS_POLICY (self)); @@ -1433,7 +1455,7 @@ static void device_removed (NMManager *manager, NMDevice *device, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); /* Clear any idle callbacks for this device */ clear_pending_activate_check (self, device); @@ -1560,7 +1582,7 @@ active_connection_added (NMManager *manager, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); if (NM_IS_VPN_CONNECTION (active)) { g_signal_connect (active, NM_VPN_CONNECTION_INTERNAL_STATE_CHANGED, @@ -1582,7 +1604,7 @@ active_connection_removed (NMManager *manager, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); g_signal_handlers_disconnect_by_func (active, vpn_connection_state_changed, @@ -1629,7 +1651,7 @@ connection_added (NMSettings *settings, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); schedule_activate_all (self); } @@ -1687,7 +1709,7 @@ connection_updated (NMSettings *settings, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); const GSList *iter; NMDevice *device = NULL; @@ -1755,7 +1777,7 @@ connection_visibility_changed (NMSettings *settings, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); if (nm_settings_connection_is_visible (connection)) schedule_activate_all (self); @@ -1769,7 +1791,7 @@ secret_agent_registered (NMSettings *settings, gpointer user_data) { NMPolicyPrivate *priv = user_data; - NMPolicy *self = priv->self; + NMPolicy *self = _PRIV_TO_SELF (priv); /* The registered secret agent may provide some missing secrets. Thus we * reset retries count here and schedule activation, so that the @@ -1860,10 +1882,7 @@ set_property (GObject *object, guint prop_id, static void nm_policy_init (NMPolicy *self) { - NMPolicyPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_POLICY, NMPolicyPrivate); - - self->priv = priv; - priv->self = self; + NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE (self); priv->devices = g_hash_table_new (NULL, NULL); } @@ -2000,8 +2019,6 @@ finalize (GObject *object) g_hash_table_unref (priv->devices); G_OBJECT_CLASS (nm_policy_parent_class)->finalize (object); - - priv->self = NULL; } static void @@ -2009,8 +2026,6 @@ nm_policy_class_init (NMPolicyClass *policy_class) { GObjectClass *object_class = G_OBJECT_CLASS (policy_class); - g_type_class_add_private (policy_class, sizeof (NMPolicyPrivate)); - object_class->get_property = get_property; object_class->set_property = set_property; object_class->constructed = constructed; @@ -2049,5 +2064,6 @@ nm_policy_class_init (NMPolicyClass *policy_class) NM_TYPE_DEVICE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); } diff --git a/src/nm-policy.h b/src/nm-policy.h index ce900ba641..64cac4fe70 100644 --- a/src/nm-policy.h +++ b/src/nm-policy.h @@ -36,17 +36,7 @@ #define NM_POLICY_ACTIVATING_IP4_DEVICE "activating-ip4-device" #define NM_POLICY_ACTIVATING_IP6_DEVICE "activating-ip6-device" -struct _NMPolicyPrivate; - -struct _NMPolicy { - GObject parent; - struct _NMPolicyPrivate *priv; -}; - -typedef struct { - GObjectClass parent; - -} NMPolicyClass; +typedef struct _NMPolicyClass NMPolicyClass; GType nm_policy_get_type (void); diff --git a/src/nm-rfkill-manager.c b/src/nm-rfkill-manager.c index 453a3b9bbb..14346c32a2 100644 --- a/src/nm-rfkill-manager.c +++ b/src/nm-rfkill-manager.c @@ -20,10 +20,19 @@ #include "nm-default.h" +#include "nm-rfkill-manager.h" + #include <string.h> #include <gudev/gudev.h> -#include "nm-rfkill-manager.h" +/*****************************************************************************/ + +enum { + RFKILL_CHANGED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { GUdevClient *client; @@ -31,21 +40,22 @@ typedef struct { /* Authoritative rfkill state (RFKILL_* enum) */ RfKillState rfkill_states[RFKILL_TYPE_MAX]; GSList *killswitches; - } NMRfkillManagerPrivate; -#define NM_RFKILL_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_RFKILL_MANAGER, NMRfkillManagerPrivate)) - -G_DEFINE_TYPE (NMRfkillManager, nm_rfkill_manager, G_TYPE_OBJECT) - -enum { - RFKILL_CHANGED, +struct _NMRfkillManager { + GObject parent; + NMRfkillManagerPrivate _priv; +}; - LAST_SIGNAL +struct _NMRfkillManagerClass { + GObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; +G_DEFINE_TYPE (NMRfkillManager, nm_rfkill_manager, G_TYPE_OBJECT) + +#define NM_RFKILL_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMRfkillManager, NM_IS_RFKILL_MANAGER) +/*****************************************************************************/ typedef struct { char *name; @@ -149,12 +159,6 @@ killswitch_destroy (Killswitch *ks) g_free (ks); } -NMRfkillManager * -nm_rfkill_manager_new (void) -{ - return NM_RFKILL_MANAGER (g_object_new (NM_TYPE_RFKILL_MANAGER, NULL)); -} - static RfKillState sysfs_state_to_nm_state (gint sysfs_state) { @@ -358,6 +362,8 @@ handle_uevent (GUdevClient *client, recheck_killswitches (self); } +/*****************************************************************************/ + static void nm_rfkill_manager_init (NMRfkillManager *self) { @@ -382,6 +388,12 @@ nm_rfkill_manager_init (NMRfkillManager *self) recheck_killswitches (self); } +NMRfkillManager * +nm_rfkill_manager_new (void) +{ + return NM_RFKILL_MANAGER (g_object_new (NM_TYPE_RFKILL_MANAGER, NULL)); +} + static void dispose (GObject *object) { @@ -403,17 +415,13 @@ nm_rfkill_manager_class_init (NMRfkillManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMRfkillManagerPrivate)); - - /* virtual methods */ object_class->dispose = dispose; - /* Signals */ signals[RFKILL_CHANGED] = - g_signal_new (NM_RFKILL_MANAGER_SIGNAL_RFKILL_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMRfkillManagerClass, rfkill_changed), - NULL, NULL, NULL, - G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); + g_signal_new (NM_RFKILL_MANAGER_SIGNAL_RFKILL_CHANGED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); } diff --git a/src/nm-rfkill-manager.h b/src/nm-rfkill-manager.h index 3aca8f50b9..490c1ca28f 100644 --- a/src/nm-rfkill-manager.h +++ b/src/nm-rfkill-manager.h @@ -19,10 +19,8 @@ * Copyright (C) 2007 - 2013 Red Hat, Inc. */ -#ifndef __NETWORKMANAGER_RFKILL_MANAGER_H__ -#define __NETWORKMANAGER_RFKILL_MANAGER_H__ - -#define NM_RFKILL_MANAGER_SIGNAL_RFKILL_CHANGED "rfkill-changed" +#ifndef __NM_RFKILL_MANAGER_H__ +#define __NM_RFKILL_MANAGER_H__ typedef enum { /*< skip >*/ RFKILL_UNBLOCKED = 0, @@ -42,7 +40,6 @@ typedef enum { /*< skip >*/ RFKILL_TYPE_MAX = RFKILL_TYPE_UNKNOWN } RfKillType; - #define NM_TYPE_RFKILL_MANAGER (nm_rfkill_manager_get_type ()) #define NM_RFKILL_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_RFKILL_MANAGER, NMRfkillManager)) #define NM_RFKILL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_RFKILL_MANAGER, NMRfkillManagerClass)) @@ -50,16 +47,9 @@ typedef enum { /*< skip >*/ #define NM_IS_RFKILL_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_RFKILL_MANAGER)) #define NM_RFKILL_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_RFKILL_MANAGER, NMRfkillManagerClass)) -struct _NMRfkillManager { - GObject parent; -}; - -typedef struct { - GObjectClass parent; +#define NM_RFKILL_MANAGER_SIGNAL_RFKILL_CHANGED "rfkill-changed" - /* signals */ - void (*rfkill_changed) (NMRfkillManager *manager, RfKillType rtype, RfKillState state); -} NMRfkillManagerClass; +typedef struct _NMRfkillManagerClass NMRfkillManagerClass; GType nm_rfkill_manager_get_type (void); @@ -67,5 +57,4 @@ NMRfkillManager *nm_rfkill_manager_new (void); RfKillState nm_rfkill_manager_get_rfkill_state (NMRfkillManager *manager, RfKillType rtype); -#endif /* NM_RFKILL_MANAGER_H */ - +#endif /* __NM_RFKILL_MANAGER_H__ */ diff --git a/src/nm-route-manager.c b/src/nm-route-manager.c index d2d376f953..8c97f911d0 100644 --- a/src/nm-route-manager.c +++ b/src/nm-route-manager.c @@ -20,9 +20,10 @@ #include "nm-default.h" +#include "nm-route-manager.h" + #include <string.h> -#include "nm-route-manager.h" #include "nm-platform.h" #include "nmp-object.h" #include "nm-core-internal.h" @@ -34,6 +35,8 @@ #define IP4_DEVICE_ROUTES_GC_INTERVAL_SEC (IP4_DEVICE_ROUTES_WAIT_TIME_NS * 2) +/*****************************************************************************/ + typedef struct { guint len; NMPlatformIPXRoute *entries[1]; @@ -58,6 +61,12 @@ typedef struct { NMPObject *obj; } IP4DeviceRoutePurgeEntry; +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_PLATFORM, +); + typedef struct { NMPlatform *platform; @@ -69,13 +78,20 @@ typedef struct { } ip4_device_routes; } NMRouteManagerPrivate; -#define NM_ROUTE_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ROUTE_MANAGER, NMRouteManagerPrivate)) +struct _NMRouteManager { + GObject parent; + NMRouteManagerPrivate _priv; +}; + +struct _NMRouteManagerClass { + GObjectClass parent; +}; G_DEFINE_TYPE (NMRouteManager, nm_route_manager, G_TYPE_OBJECT); -NM_GOBJECT_PROPERTIES_DEFINE_BASE ( - PROP_PLATFORM, -); +#define NM_ROUTE_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMRouteManager, NM_IS_ROUTE_MANAGER) + +/*****************************************************************************/ NM_DEFINE_SINGLETON_GETTER (NMRouteManager, nm_route_manager_get, NM_TYPE_ROUTE_MANAGER); @@ -1163,6 +1179,8 @@ set_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + static void nm_route_manager_init (NMRouteManager *self) { @@ -1194,7 +1212,7 @@ static void dispose (GObject *object) { NMRouteManager *self = NM_ROUTE_MANAGER (object); - NMRouteManagerPrivate *priv = NM_ROUTE_MANAGER_GET_PRIVATE (object); + NMRouteManagerPrivate *priv = NM_ROUTE_MANAGER_GET_PRIVATE (self); g_hash_table_remove_all (priv->ip4_device_routes.entries); _ip4_device_routes_cancel (self); @@ -1205,7 +1223,7 @@ dispose (GObject *object) static void finalize (GObject *object) { - NMRouteManagerPrivate *priv = NM_ROUTE_MANAGER_GET_PRIVATE (object); + NMRouteManagerPrivate *priv = NM_ROUTE_MANAGER_GET_PRIVATE ((NMRouteManager *) object); g_array_free (priv->ip4_routes.entries, TRUE); g_array_free (priv->ip6_routes.entries, TRUE); @@ -1228,9 +1246,6 @@ nm_route_manager_class_init (NMRouteManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMRouteManagerPrivate)); - - /* virtual methods */ object_class->set_property = set_property; object_class->dispose = dispose; object_class->finalize = finalize; diff --git a/src/nm-route-manager.h b/src/nm-route-manager.h index 8e2746d93e..d12f025603 100644 --- a/src/nm-route-manager.h +++ b/src/nm-route-manager.h @@ -18,8 +18,8 @@ * Copyright (C) 2015 Red Hat, Inc. */ -#ifndef __NETWORKMANAGER_ROUTE_MANAGER_H__ -#define __NETWORKMANAGER_ROUTE_MANAGER_H__ +#ifndef __NM_ROUTE_MANAGER_H__ +#define __NM_ROUTE_MANAGER_H__ #define NM_TYPE_ROUTE_MANAGER (nm_route_manager_get_type ()) #define NM_ROUTE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_ROUTE_MANAGER, NMRouteManager)) @@ -30,13 +30,7 @@ #define NM_ROUTE_MANAGER_PLATFORM "platform" -struct _NMRouteManager { - GObject parent; -}; - -typedef struct { - GObjectClass parent; -} NMRouteManagerClass; +typedef struct _NMRouteManagerClass NMRouteManagerClass; GType nm_route_manager_get_type (void); @@ -49,4 +43,4 @@ void nm_route_manager_ip4_route_register_device_route_purge_list (NMRouteManager NMRouteManager *nm_route_manager_get (void); NMRouteManager *nm_route_manager_new (NMPlatform *platform); -#endif /* NM_ROUTE_MANAGER_H */ +#endif /* __NM_ROUTE_MANAGER_H__ */ diff --git a/src/nm-session-monitor.c b/src/nm-session-monitor.c index 19d4688bb4..8f2955daa0 100644 --- a/src/nm-session-monitor.c +++ b/src/nm-session-monitor.c @@ -21,29 +21,30 @@ */ #include "nm-default.h" +#include "nm-session-monitor.h" + #include <pwd.h> #include <errno.h> #include <string.h> #include <sys/stat.h> -#include "nm-session-monitor.h" -#include "NetworkManagerUtils.h" - #ifdef SESSION_TRACKING_SYSTEMD #include <systemd/sd-login.h> #endif +#include "NetworkManagerUtils.h" + /*****************************************************************************/ -/* <internal> - * SECTION:nm-session-monitor - * @title: NMSessionMonitor - * @short_description: Monitor sessions - * - * The #NMSessionMonitor class is a utility class to track and monitor sessions. - */ +enum { + CHANGED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + struct _NMSessionMonitor { - GObject parent_instance; + GObject parent; #ifdef SESSION_TRACKING_SYSTEMD struct { @@ -62,20 +63,11 @@ struct _NMSessionMonitor { }; struct _NMSessionMonitorClass { - GObjectClass parent_class; - - void (*changed) (NMSessionMonitor *monitor); + GObjectClass parent; }; G_DEFINE_TYPE (NMSessionMonitor, nm_session_monitor, G_TYPE_OBJECT); -enum { - CHANGED, - LAST_SIGNAL, -}; - -static guint signals[LAST_SIGNAL] = { 0 }; - /*****************************************************************************/ #ifdef SESSION_TRACKING_SYSTEMD @@ -371,7 +363,7 @@ nm_session_monitor_init (NMSessionMonitor *monitor) } static void -nm_session_monitor_finalize (GObject *object) +finalize (GObject *object) { #ifdef SESSION_TRACKING_SYSTEMD st_sd_finalize (NM_SESSION_MONITOR (object)); @@ -381,8 +373,7 @@ nm_session_monitor_finalize (GObject *object) ck_finalize (NM_SESSION_MONITOR (object)); #endif - if (G_OBJECT_CLASS (nm_session_monitor_parent_class)->finalize != NULL) - G_OBJECT_CLASS (nm_session_monitor_parent_class)->finalize (object); + G_OBJECT_CLASS (nm_session_monitor_parent_class)->finalize (object); } static void @@ -390,7 +381,7 @@ nm_session_monitor_class_init (NMSessionMonitorClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - gobject_class->finalize = nm_session_monitor_finalize; + gobject_class->finalize = finalize; /** * NMSessionMonitor::changed: @@ -399,12 +390,10 @@ nm_session_monitor_class_init (NMSessionMonitorClass *klass) * Emitted when something changes. */ signals[CHANGED] = g_signal_new (NM_SESSION_MONITOR_CHANGED, - NM_TYPE_SESSION_MONITOR, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSessionMonitorClass, changed), - NULL, /* accumulator */ - NULL, /* accumulator data */ - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); + NM_TYPE_SESSION_MONITOR, + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); } diff --git a/src/nm-session-monitor.h b/src/nm-session-monitor.h index 3751d7db4c..d3d10e98b2 100644 --- a/src/nm-session-monitor.h +++ b/src/nm-session-monitor.h @@ -30,19 +30,16 @@ #define NM_SESSION_MONITOR_CHANGED "changed" -typedef struct _NMSessionMonitorClass NMSessionMonitorClass; +typedef struct _NMSessionMonitorClass NMSessionMonitorClass; -typedef void (*NMSessionCallback) (NMSessionMonitor *monitor, gpointer user_data); - -GType nm_session_monitor_get_type (void) G_GNUC_CONST; +GType nm_session_monitor_get_type (void) G_GNUC_CONST; NMSessionMonitor *nm_session_monitor_get (void); -gboolean nm_session_monitor_uid_to_user (uid_t uid, const char **out_user); -gboolean nm_session_monitor_user_to_uid (const char *user, uid_t *out_uid); -gboolean nm_session_monitor_session_exists (NMSessionMonitor *self, - uid_t uid, - gboolean active); +gboolean nm_session_monitor_uid_to_user (uid_t uid, const char **out_user); +gboolean nm_session_monitor_user_to_uid (const char *user, uid_t *out_uid); +gboolean nm_session_monitor_session_exists (NMSessionMonitor *self, + uid_t uid, + gboolean active); #endif /* __NETWORKMANAGER_SESSION_MONITOR_H__ */ - diff --git a/src/nm-sleep-monitor.c b/src/nm-sleep-monitor.c index 13ce1be000..ccb99e76ed 100644 --- a/src/nm-sleep-monitor.c +++ b/src/nm-sleep-monitor.c @@ -64,8 +64,17 @@ #endif +/*****************************************************************************/ + +enum { + SLEEPING, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = {0}; + struct _NMSleepMonitor { - GObject parent_instance; + GObject parent; GDBusProxy *proxy; @@ -81,19 +90,11 @@ struct _NMSleepMonitor { }; struct _NMSleepMonitorClass { - GObjectClass parent_class; + GObjectClass parent; }; -enum { - SLEEPING, - LAST_SIGNAL, -}; -static guint signals[LAST_SIGNAL] = {0}; - G_DEFINE_TYPE (NMSleepMonitor, nm_sleep_monitor, G_TYPE_OBJECT); -static void sleep_signal (NMSleepMonitor *self, gboolean is_about_to_suspend); - /*****************************************************************************/ #define _NMLOG_DOMAIN LOGD_SUSPEND @@ -107,6 +108,10 @@ static void sleep_signal (NMSleepMonitor *self, gboolean is_about_to_suspend); /*****************************************************************************/ +static void sleep_signal (NMSleepMonitor *self, gboolean is_about_to_suspend); + +/*****************************************************************************/ + #if USE_UPOWER static void @@ -337,6 +342,8 @@ on_proxy_acquired (GObject *object, #endif } +/*****************************************************************************/ + static void nm_sleep_monitor_init (NMSleepMonitor *self) { diff --git a/src/nm-sleep-monitor.h b/src/nm-sleep-monitor.h index d54aebbcf1..350f1eec76 100644 --- a/src/nm-sleep-monitor.h +++ b/src/nm-sleep-monitor.h @@ -29,10 +29,11 @@ #define NM_SLEEP_MONITOR_SLEEPING "sleeping" -typedef struct _NMSleepMonitorClass NMSleepMonitorClass; +typedef struct _NMSleepMonitorClass NMSleepMonitorClass; -GType nm_sleep_monitor_get_type (void) G_GNUC_CONST; -NMSleepMonitor *nm_sleep_monitor_new (void); +GType nm_sleep_monitor_get_type (void) G_GNUC_CONST; + +NMSleepMonitor *nm_sleep_monitor_new (void); typedef struct _NMSleepMonitorInhibitorHandle NMSleepMonitorInhibitorHandle; diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c index 4af847221a..3726518bf5 100644 --- a/src/platform/nm-fake-platform.c +++ b/src/platform/nm-fake-platform.c @@ -38,6 +38,38 @@ /*****************************************************************************/ +typedef struct { + NMPlatformLink link; + + char *udi; + NMPObject *lnk; + struct in6_addr ip6_lladdr; +} NMFakePlatformLink; + +typedef struct { + GHashTable *options; + GArray *links; + GArray *ip4_addresses; + GArray *ip6_addresses; + GArray *ip4_routes; + GArray *ip6_routes; +} NMFakePlatformPrivate; + +struct _NMFakePlatform { + NMPlatform parent; + NMFakePlatformPrivate _priv; +}; + +struct _NMFakePlatformClass { + NMPlatformClass parent; +}; + +G_DEFINE_TYPE (NMFakePlatform, nm_fake_platform, NM_TYPE_PLATFORM) + +#define NM_FAKE_PLATFORM_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMFakePlatform, NM_IS_FAKE_PLATFORM) + +/*****************************************************************************/ + #define _NMLOG_PREFIX_NAME "platform-fake" #define _NMLOG_DOMAIN LOGD_PLATFORM #define _NMLOG(level, ...) _LOG(level, _NMLOG_DOMAIN, platform, __VA_ARGS__) @@ -64,29 +96,6 @@ /*****************************************************************************/ -typedef struct { - GHashTable *options; - GArray *links; - GArray *ip4_addresses; - GArray *ip6_addresses; - GArray *ip4_routes; - GArray *ip6_routes; -} NMFakePlatformPrivate; - -typedef struct { - NMPlatformLink link; - - char *udi; - NMPObject *lnk; - struct in6_addr ip6_lladdr; -} NMFakePlatformLink; - -#define NM_FAKE_PLATFORM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_FAKE_PLATFORM, NMFakePlatformPrivate)) - -G_DEFINE_TYPE (NMFakePlatform, nm_fake_platform, NM_TYPE_PLATFORM) - -/*****************************************************************************/ - static void link_changed (NMPlatform *platform, NMFakePlatformLink *device, gboolean raise_signal); static gboolean ip6_address_add (NMPlatform *platform, @@ -112,7 +121,7 @@ _ip4_address_equal_peer_net (in_addr_t peer1, in_addr_t peer2, guint8 plen) static gboolean sysctl_set (NMPlatform *platform, const char *path, const char *value) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); g_hash_table_insert (priv->options, g_strdup (path), g_strdup (value)); @@ -122,7 +131,7 @@ sysctl_set (NMPlatform *platform, const char *path, const char *value) static char * sysctl_get (NMPlatform *platform, const char *path) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); return g_strdup (g_hash_table_lookup (priv->options, path)); } @@ -186,7 +195,7 @@ link_init (NMFakePlatformLink *device, int ifindex, int type, const char *name) static NMFakePlatformLink * link_get (NMPlatform *platform, int ifindex) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMFakePlatformLink *device; if (ifindex >= priv->links->len) @@ -204,7 +213,7 @@ not_found: static GArray * link_get_all (NMPlatform *platform) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); GArray *links = g_array_sized_new (TRUE, TRUE, sizeof (NMPlatformLink), priv->links->len); int i; @@ -226,7 +235,7 @@ _nm_platform_link_get (NMPlatform *platform, int ifindex) static const NMPlatformLink * _nm_platform_link_get_by_ifname (NMPlatform *platform, const char *ifname) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); guint i; for (i = 0; i < priv->links->len; i++) { @@ -243,7 +252,7 @@ _nm_platform_link_get_by_address (NMPlatform *platform, gconstpointer address, size_t length) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); guint i; if ( length == 0 @@ -296,7 +305,7 @@ link_add (NMPlatform *platform, size_t address_len, const NMPlatformLink **out_link) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMFakePlatformLink device; NMFakePlatformLink *new_device; @@ -325,7 +334,7 @@ link_add (NMPlatform *platform, static gboolean link_delete (NMPlatform *platform, int ifindex) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMFakePlatformLink *device = link_get (platform, ifindex); NMPlatformLink deleted_device; int i; @@ -378,7 +387,7 @@ link_get_type_name (NMPlatform *platform, int ifindex) static void link_changed (NMPlatform *platform, NMFakePlatformLink *device, gboolean raise_signal) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; if (raise_signal) @@ -844,7 +853,7 @@ mesh_set_ssid (NMPlatform *platform, int ifindex, const guint8 *ssid, gsize len) static GArray * ip4_address_get_all (NMPlatform *platform, int ifindex) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); GArray *addresses; NMPlatformIP4Address *address; int count = 0, i; @@ -871,7 +880,7 @@ ip4_address_get_all (NMPlatform *platform, int ifindex) static GArray * ip6_address_get_all (NMPlatform *platform, int ifindex) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); GArray *addresses; NMPlatformIP6Address *address; int count = 0, i; @@ -907,7 +916,7 @@ ip4_address_add (NMPlatform *platform, guint32 flags, const char *label) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMPlatformIP4Address address; int i; @@ -958,7 +967,7 @@ ip6_address_add (NMPlatform *platform, guint32 preferred, guint32 flags) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMPlatformIP6Address address; int i; @@ -998,7 +1007,7 @@ ip6_address_add (NMPlatform *platform, static gboolean ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; for (i = 0; i < priv->ip4_addresses->len; i++) { @@ -1023,7 +1032,7 @@ ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 pl static gboolean ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; for (i = 0; i < priv->ip6_addresses->len; i++) { @@ -1047,7 +1056,7 @@ ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, gui static const NMPlatformIP4Address * ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; for (i = 0; i < priv->ip4_addresses->len; i++) { @@ -1066,7 +1075,7 @@ ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, static const NMPlatformIP6Address * ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; for (i = 0; i < priv->ip6_addresses->len; i++) { @@ -1086,7 +1095,7 @@ ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 static GArray * ip4_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags flags) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); GArray *routes; NMPlatformIP4Route *route; guint i; @@ -1116,7 +1125,7 @@ ip4_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags fl static GArray * ip6_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags flags) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); GArray *routes; NMPlatformIP6Route *route; guint i; @@ -1146,7 +1155,7 @@ ip6_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags fl static gboolean ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; for (i = 0; i < priv->ip4_routes->len; i++) { @@ -1170,7 +1179,7 @@ ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, guint8 p static gboolean ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; metric = nm_utils_ip6_route_metric_normalize (metric); @@ -1198,7 +1207,7 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, in_addr_t network, guint8 plen, in_addr_t gateway, in_addr_t pref_src, guint32 metric, guint32 mss) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMPlatformIP4Route route; guint i; guint8 scope; @@ -1266,7 +1275,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, struct in6_addr network, guint8 plen, struct in6_addr gateway, guint32 metric, guint32 mss) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); NMPlatformIP6Route route; guint i; @@ -1330,7 +1339,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source, static const NMPlatformIP4Route * ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; for (i = 0; i < priv->ip4_routes->len; i++) { @@ -1349,7 +1358,7 @@ ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen static const NMPlatformIP6Route * ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) platform); int i; metric = nm_utils_ip6_route_metric_normalize (metric); @@ -1404,9 +1413,9 @@ nm_fake_platform_setup (void) } static void -nm_fake_platform_finalize (GObject *object) +finalize (GObject *object) { - NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (object); + NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE ((NMFakePlatform *) object); int i; g_hash_table_unref (priv->options); @@ -1431,10 +1440,7 @@ nm_fake_platform_class_init (NMFakePlatformClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMPlatformClass *platform_class = NM_PLATFORM_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMFakePlatformPrivate)); - - /* virtual methods */ - object_class->finalize = nm_fake_platform_finalize; + object_class->finalize = finalize; platform_class->sysctl_set = sysctl_set; platform_class->sysctl_get = sysctl_get; diff --git a/src/platform/nm-fake-platform.h b/src/platform/nm-fake-platform.h index 044ee72c1a..8f42d11a40 100644 --- a/src/platform/nm-fake-platform.h +++ b/src/platform/nm-fake-platform.h @@ -30,17 +30,8 @@ #define NM_IS_FAKE_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_FAKE_PLATFORM)) #define NM_FAKE_PLATFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_FAKE_PLATFORM, NMFakePlatformClass)) -/*****************************************************************************/ - -typedef struct { - NMPlatform parent; -} NMFakePlatform; - -typedef struct { - NMPlatformClass parent; -} NMFakePlatformClass; - -/*****************************************************************************/ +typedef struct _NMFakePlatform NMFakePlatform; +typedef struct _NMFakePlatformClass NMFakePlatformClass; GType nm_fake_platform_get_type (void); diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index ec9aa38aaa..9a22f02910 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -2404,9 +2404,7 @@ typedef struct { gint *out_refresh_all_in_progess; } DelayedActionWaitForNlResponseData; -typedef struct _NMLinuxPlatformPrivate NMLinuxPlatformPrivate; - -struct _NMLinuxPlatformPrivate { +typedef struct { struct nl_sock *nlh; guint32 nlh_seq_next; #ifdef NM_MORE_LOGGING @@ -2441,18 +2439,27 @@ struct _NMLinuxPlatformPrivate { GHashTable *prune_candidates; GHashTable *wifi_data; +} NMLinuxPlatformPrivate; + +struct _NMLinuxPlatform { + NMPlatform parent; + NMLinuxPlatformPrivate _priv; }; +struct _NMLinuxPlatformClass { + NMPlatformClass parent; +}; + +G_DEFINE_TYPE (NMLinuxPlatform, nm_linux_platform, NM_TYPE_PLATFORM) + static inline NMLinuxPlatformPrivate * NM_LINUX_PLATFORM_GET_PRIVATE (const void *self) { nm_assert (NM_IS_LINUX_PLATFORM (self)); - return ((NMLinuxPlatform *) self)->priv; + return &(((NMLinuxPlatform *) self)->_priv); } -G_DEFINE_TYPE (NMLinuxPlatform, nm_linux_platform, NM_TYPE_PLATFORM) - NMPlatform * nm_linux_platform_new (gboolean netns_support) { @@ -6357,14 +6364,12 @@ handle_udev_event (GUdevClient *client, static void nm_linux_platform_init (NMLinuxPlatform *self) { - NMLinuxPlatformPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_LINUX_PLATFORM, NMLinuxPlatformPrivate); + NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (self); gboolean use_udev; use_udev = nmp_netns_is_initial () && access ("/sys", W_OK) == 0; - self->priv = priv; - priv->nlh_seq_next = 1; priv->cache = nmp_cache_new (use_udev); priv->delayed_action.list_master_connected = g_ptr_array_new (); @@ -6496,7 +6501,7 @@ dispose (GObject *object) } static void -nm_linux_platform_finalize (GObject *object) +finalize (GObject *object) { NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (object); @@ -6506,7 +6511,6 @@ nm_linux_platform_finalize (GObject *object) g_ptr_array_unref (priv->delayed_action.list_refresh_link); g_array_unref (priv->delayed_action.list_wait_for_nl_response); - /* Free netlink resources */ g_source_remove (priv->event_id); g_io_channel_unref (priv->event_channel); nl_socket_free (priv->nlh); @@ -6521,20 +6525,15 @@ nm_linux_platform_finalize (GObject *object) G_OBJECT_CLASS (nm_linux_platform_parent_class)->finalize (object); } -#define OVERRIDE(function) platform_class->function = function - static void nm_linux_platform_class_init (NMLinuxPlatformClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); NMPlatformClass *platform_class = NM_PLATFORM_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMLinuxPlatformPrivate)); - - /* virtual methods */ object_class->constructed = constructed; object_class->dispose = dispose; - object_class->finalize = nm_linux_platform_finalize; + object_class->finalize = finalize; platform_class->sysctl_set = sysctl_set; platform_class->sysctl_get = sysctl_get; diff --git a/src/platform/nm-linux-platform.h b/src/platform/nm-linux-platform.h index becdb2db2a..b3272aae68 100644 --- a/src/platform/nm-linux-platform.h +++ b/src/platform/nm-linux-platform.h @@ -30,21 +30,8 @@ #define NM_IS_LINUX_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_LINUX_PLATFORM)) #define NM_LINUX_PLATFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_LINUX_PLATFORM, NMLinuxPlatformClass)) -/*****************************************************************************/ - -struct _NMLinuxPlatformPrivate; - -typedef struct { - NMPlatform parent; - - struct _NMLinuxPlatformPrivate *priv; -} NMLinuxPlatform; - -typedef struct { - NMPlatformClass parent; -} NMLinuxPlatformClass; - -/*****************************************************************************/ +typedef struct _NMLinuxPlatform NMLinuxPlatform; +typedef struct _NMLinuxPlatformClass NMLinuxPlatformClass; GType nm_linux_platform_get_type (void); diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index a53891c4d7..0f0b9a5939 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -21,6 +21,8 @@ #include "nm-default.h" +#include "nm-ppp-manager.h" + #include <sys/types.h> #include <sys/wait.h> #include <signal.h> @@ -28,7 +30,6 @@ #include <unistd.h> #include <arpa/inet.h> #include <stdlib.h> - #include <errno.h> #include <sys/socket.h> #include <sys/ioctl.h> @@ -43,28 +44,36 @@ #include <linux/if_ppp.h> #include "NetworkManagerUtils.h" -#include "nm-ppp-manager.h" #include "nm-platform.h" #include "nm-core-internal.h" +#include "nm-act-request.h" +#include "nm-ip4-config.h" +#include "nm-ip6-config.h" +#include "nm-pppd-plugin.h" +#include "nm-ppp-status.h" #include "nmdbus-ppp-manager.h" -#define _NMLOG_DOMAIN LOGD_PPP -#define _NMLOG_PREFIX_NAME "ppp-manager" -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), _NMLOG_DOMAIN, \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END - -static void _ppp_cleanup (NMPPPManager *manager); -static void _ppp_kill (NMPPPManager *manager); - #define NM_PPPD_PLUGIN PPPD_PLUGIN_DIR "/nm-pppd-plugin.so" #define PPP_MANAGER_SECRET_TRIES "ppp-manager-secret-tries" +/*****************************************************************************/ + +enum { + STATE_CHANGED, + IP4_CONFIG, + IP6_CONFIG, + STATS, + + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_PARENT_IFACE, +); + typedef struct { GPid pid; @@ -84,99 +93,35 @@ typedef struct { guint monitor_id; } NMPPPManagerPrivate; -#define NM_PPP_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_PPP_MANAGER, NMPPPManagerPrivate)) - -G_DEFINE_TYPE (NMPPPManager, nm_ppp_manager, NM_TYPE_EXPORTED_OBJECT) - -enum { - STATE_CHANGED, - IP4_CONFIG, - IP6_CONFIG, - STATS, - - LAST_SIGNAL +struct _NMPPPManager { + NMExportedObject parent; + NMPPPManagerPrivate _priv; }; -static guint signals[LAST_SIGNAL] = { 0 }; - -enum { - PROP_0, - PROP_PARENT_IFACE, - LAST_PROP +struct _NMPPPManagerClass { + NMExportedObjectClass parent; }; -static void -nm_ppp_manager_init (NMPPPManager *manager) -{ - NM_PPP_MANAGER_GET_PRIVATE (manager)->monitor_fd = -1; -} - -static void -dispose (GObject *object) -{ - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (object); - - _ppp_cleanup (NM_PPP_MANAGER (object)); - _ppp_kill (NM_PPP_MANAGER (object)); - - g_clear_object (&priv->act_req); - - G_OBJECT_CLASS (nm_ppp_manager_parent_class)->dispose (object); -} - -static void -finalize (GObject *object) -{ - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (object); - - g_free (priv->ip_iface); - g_free (priv->parent_iface); +G_DEFINE_TYPE (NMPPPManager, nm_ppp_manager, NM_TYPE_EXPORTED_OBJECT) - G_OBJECT_CLASS (nm_ppp_manager_parent_class)->finalize (object); -} +#define NM_PPP_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMPPPManager, NM_IS_PPP_MANAGER) -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_PARENT_IFACE: - g_free (priv->parent_iface); - priv->parent_iface = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (object); +/*****************************************************************************/ - switch (prop_id) { - case PROP_PARENT_IFACE: - g_value_set_string (value, priv->parent_iface); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} +#define _NMLOG_DOMAIN LOGD_PPP +#define _NMLOG_PREFIX_NAME "ppp-manager" +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), _NMLOG_DOMAIN, \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END -NMPPPManager * -nm_ppp_manager_new (const char *iface) -{ - g_return_val_if_fail (iface != NULL, NULL); +/*****************************************************************************/ - return (NMPPPManager *) g_object_new (NM_TYPE_PPP_MANAGER, - NM_PPP_MANAGER_PARENT_IFACE, iface, - NULL); -} +static void _ppp_cleanup (NMPPPManager *manager); +static void _ppp_kill (NMPPPManager *manager); /*****************************************************************************/ @@ -587,80 +532,8 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager, g_dbus_method_invocation_return_value (context, NULL); } -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"; - exported_object_class->export_on_construction = TRUE; - - object_class->dispose = dispose; - object_class->finalize = finalize; - object_class->get_property = get_property; - object_class->set_property = set_property; - - /* Properties */ - g_object_class_install_property - (object_class, PROP_PARENT_IFACE, - g_param_spec_string (NM_PPP_MANAGER_PARENT_IFACE, "", "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); - - /* signals */ - signals[STATE_CHANGED] = - g_signal_new (NM_PPP_MANAGER_STATE_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMPPPManagerClass, state_changed), - NULL, NULL, NULL, - G_TYPE_NONE, 1, - G_TYPE_UINT); - - signals[IP4_CONFIG] = - g_signal_new ("ip4-config", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMPPPManagerClass, ip4_config), - NULL, NULL, NULL, - G_TYPE_NONE, 2, - G_TYPE_STRING, - G_TYPE_OBJECT); - - signals[IP6_CONFIG] = - g_signal_new ("ip6-config", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMPPPManagerClass, ip6_config), - NULL, NULL, NULL, - G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_OBJECT); - - signals[STATS] = - g_signal_new ("stats", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMPPPManagerClass, stats), - NULL, NULL, NULL, - G_TYPE_NONE, 2, - G_TYPE_UINT, G_TYPE_UINT); - - nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (manager_class), - NMDBUS_TYPE_PPP_MANAGER_SKELETON, - "NeedSecrets", impl_ppp_manager_need_secrets, - "SetIp4Config", impl_ppp_manager_set_ip4_config, - "SetIp6Config", impl_ppp_manager_set_ip6_config, - "SetState", impl_ppp_manager_set_state, - NULL); -} - /*****************************************************************************/ - - typedef struct { GPtrArray *array; GStringChunk *chunk; @@ -1239,3 +1112,149 @@ nm_ppp_manager_stop (NMPPPManager *manager, ctx); priv->pid = 0; } + +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE ((NMPPPManager *) object); + + switch (prop_id) { + case PROP_PARENT_IFACE: + g_value_set_string (value, priv->parent_iface); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE ((NMPPPManager *) object); + + switch (prop_id) { + case PROP_PARENT_IFACE: + g_free (priv->parent_iface); + priv->parent_iface = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + +static void +nm_ppp_manager_init (NMPPPManager *manager) +{ + NM_PPP_MANAGER_GET_PRIVATE (manager)->monitor_fd = -1; +} + +NMPPPManager * +nm_ppp_manager_new (const char *iface) +{ + g_return_val_if_fail (iface != NULL, NULL); + + return (NMPPPManager *) g_object_new (NM_TYPE_PPP_MANAGER, + NM_PPP_MANAGER_PARENT_IFACE, iface, + NULL); +} + +static void +dispose (GObject *object) +{ + NMPPPManager *self = (NMPPPManager *) object; + NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self); + + _ppp_cleanup (self); + _ppp_kill (self); + + g_clear_object (&priv->act_req); + + G_OBJECT_CLASS (nm_ppp_manager_parent_class)->dispose (object); +} + +static void +finalize (GObject *object) +{ + NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE ((NMPPPManager *) object); + + g_free (priv->ip_iface); + g_free (priv->parent_iface); + + G_OBJECT_CLASS (nm_ppp_manager_parent_class)->finalize (object); +} + +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); + + object_class->dispose = dispose; + object_class->finalize = finalize; + object_class->get_property = get_property; + object_class->set_property = set_property; + + exported_object_class->export_path = NM_DBUS_PATH "/PPP"; + exported_object_class->export_on_construction = TRUE; + + obj_properties[PROP_PARENT_IFACE] = + g_param_spec_string (NM_PPP_MANAGER_PARENT_IFACE, "", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); + + signals[STATE_CHANGED] = + g_signal_new (NM_PPP_MANAGER_STATE_CHANGED, + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 1, + G_TYPE_UINT); + + signals[IP4_CONFIG] = + g_signal_new ("ip4-config", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 2, + G_TYPE_STRING, + G_TYPE_OBJECT); + + signals[IP6_CONFIG] = + g_signal_new ("ip6-config", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_OBJECT); + + signals[STATS] = + g_signal_new ("stats", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 2, + G_TYPE_UINT, G_TYPE_UINT); + + nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (manager_class), + NMDBUS_TYPE_PPP_MANAGER_SKELETON, + "NeedSecrets", impl_ppp_manager_need_secrets, + "SetIp4Config", impl_ppp_manager_set_ip4_config, + "SetIp6Config", impl_ppp_manager_set_ip6_config, + "SetState", impl_ppp_manager_set_state, + NULL); +} + diff --git a/src/ppp-manager/nm-ppp-manager.h b/src/ppp-manager/nm-ppp-manager.h index 796620754d..da1fdb5539 100644 --- a/src/ppp-manager/nm-ppp-manager.h +++ b/src/ppp-manager/nm-ppp-manager.h @@ -22,16 +22,6 @@ #ifndef __NETWORKMANAGER_PPP_MANAGER_H__ #define __NETWORKMANAGER_PPP_MANAGER_H__ - -#include "nm-exported-object.h" -#include "nm-ppp-status.h" -#include "nm-act-request.h" -#include "nm-connection.h" -#include "nm-ip4-config.h" -#include "nm-ip6-config.h" -#include "nm-pppd-plugin.h" -#include "NetworkManagerUtils.h" - #define NM_TYPE_PPP_MANAGER (nm_ppp_manager_get_type ()) #define NM_PPP_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_PPP_MANAGER, NMPPPManager)) #define NM_PPP_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_PPP_MANAGER, NMPPPManagerClass)) @@ -41,25 +31,10 @@ #define NM_PPP_MANAGER_PARENT_IFACE "parent-iface" -/* signals */ #define NM_PPP_MANAGER_STATE_CHANGED "state-changed" -typedef struct { - NMExportedObject parent; -} NMPPPManager; - -typedef struct { - NMExportedObjectClass parent; - - /* Signals */ - void (*state_changed) (NMPPPManager *manager, NMPPPStatus status); - void (*ip4_config) (NMPPPManager *manager, const char *iface, NMIP4Config *config); - void (*ip6_config) (NMPPPManager *manager, - const char *iface, - const NMUtilsIPv6IfaceId *iid, - NMIP6Config *config); - void (*stats) (NMPPPManager *manager, guint32 in_bytes, guint32 out_bytes); -} NMPPPManagerClass; +typedef struct _NMPPPManager NMPPPManager; +typedef struct _NMPPPManagerClass NMPPPManagerClass; GType nm_ppp_manager_get_type (void); diff --git a/src/rdisc/nm-fake-rdisc.c b/src/rdisc/nm-fake-rdisc.c index 6d8c696224..aee94a39be 100644 --- a/src/rdisc/nm-fake-rdisc.c +++ b/src/rdisc/nm-fake-rdisc.c @@ -20,14 +20,17 @@ #include "nm-default.h" +#include "nm-fake-rdisc.h" + #include <string.h> #include <arpa/inet.h> -#include "nm-fake-rdisc.h" #include "nm-rdisc-private.h" #define _NMLOG_PREFIX_NAME "rdisc-fake" +/*****************************************************************************/ + typedef struct { guint id; guint when; @@ -51,20 +54,31 @@ typedef struct { NMRDiscPreference preference; } FakePrefix; +/*****************************************************************************/ + +enum { + RS_SENT, + LAST_SIGNAL, +}; +static guint signals[LAST_SIGNAL] = { 0 }; + typedef struct { guint receive_ra_id; GSList *ras; } NMFakeRDiscPrivate; -#define NM_FAKE_RDISC_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_FAKE_RDISC, NMFakeRDiscPrivate)) +struct _NMFakeRRDisc { + NMRDisc parent; + NMFakeRDiscPrivate _priv; +}; + +struct _NMFakeRRDiscClass { + NMRDiscClass parent; +}; G_DEFINE_TYPE (NMFakeRDisc, nm_fake_rdisc, NM_TYPE_RDISC) -enum { - RS_SENT, - LAST_SIGNAL -}; -static guint signals[LAST_SIGNAL] = { 0 }; +#define NM_FAKE_RDISC_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMFakeRDisc, NM_IS_FAKE_RDISC) /*****************************************************************************/ @@ -328,12 +342,12 @@ receive_ra (gpointer user_data) static void start (NMRDisc *rdisc) { - NMFakeRDiscPrivate *priv = NM_FAKE_RDISC_GET_PRIVATE (rdisc); + NMFakeRDiscPrivate *priv = NM_FAKE_RDISC_GET_PRIVATE ((NMFakeRDisc *) rdisc); FakeRa *ra; /* Queue up the first fake RA */ g_assert (priv->ras); - ra = NM_FAKE_RDISC_GET_PRIVATE (rdisc)->ras->data; + ra = priv->ras->data; g_assert (!priv->receive_ra_id); priv->receive_ra_id = g_timeout_add_seconds (ra->when, receive_ra, rdisc); @@ -348,6 +362,11 @@ nm_fake_rdisc_emit_new_ras (NMFakeRDisc *self) /*****************************************************************************/ +static void +nm_fake_rdisc_init (NMFakeRDisc *fake_rdisc) +{ +} + NMRDisc * nm_fake_rdisc_new (int ifindex, const char *ifname) { @@ -358,14 +377,9 @@ nm_fake_rdisc_new (int ifindex, const char *ifname) } static void -nm_fake_rdisc_init (NMFakeRDisc *fake_rdisc) -{ -} - -static void dispose (GObject *object) { - NMFakeRDiscPrivate *priv = NM_FAKE_RDISC_GET_PRIVATE (object); + NMFakeRDiscPrivate *priv = NM_FAKE_RDISC_GET_PRIVATE ((NMFakeRDisc *) object); nm_clear_g_source (&priv->receive_ra_id); @@ -381,9 +395,8 @@ nm_fake_rdisc_class_init (NMFakeRDiscClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); NMRDiscClass *rdisc_class = NM_RDISC_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMFakeRDiscPrivate)); - object_class->dispose = dispose; + rdisc_class->start = start; rdisc_class->send_rs = send_rs; diff --git a/src/rdisc/nm-fake-rdisc.h b/src/rdisc/nm-fake-rdisc.h index 27557e9d72..5f6509568d 100644 --- a/src/rdisc/nm-fake-rdisc.h +++ b/src/rdisc/nm-fake-rdisc.h @@ -32,15 +32,8 @@ #define NM_FAKE_RDISC_RS_SENT "rs-sent" -typedef struct { - NMRDisc parent; -} NMFakeRDisc; - -typedef struct { - NMRDiscClass parent; -} NMFakeRDiscClass; - -/*****************************************************************************/ +typedef struct _NMFakeRRDisc NMFakeRDisc; +typedef struct _NMFakeRRDiscClass NMFakeRDiscClass; GType nm_fake_rdisc_get_type (void); diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index 46378ffeca..fa5c59d54a 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -40,7 +40,47 @@ #include "nmdbus-agent-manager.h" -NM_DEFINE_SINGLETON_INSTANCE (NMAgentManager); +/*****************************************************************************/ + +enum { + AGENT_REGISTERED, + LAST_SIGNAL, +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +typedef struct { + NMAuthManager *auth_mgr; + + /* Auth chains for checking agent permissions */ + GSList *chains; + + /* Hashed by owner name, not identifier, since two agents in different + * sessions can use the same identifier. + */ + GHashTable *agents; + + GHashTable *requests; +} NMAgentManagerPrivate; + +struct _NMAgentManager { + NMExportedObject parent; + NMAgentManagerPrivate _priv; +}; + +struct _NMAgentManagerClass { + NMExportedObjectClass parent; +}; + +G_DEFINE_TYPE (NMAgentManager, nm_agent_manager, NM_TYPE_EXPORTED_OBJECT) + +#define NM_AGENT_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMAgentManager, NM_IS_AGENT_MANAGER) + +/*****************************************************************************/ + +NM_DEFINE_SINGLETON_GETTER (NMAgentManager, nm_agent_manager_get, NM_TYPE_AGENT_MANAGER); + +/*****************************************************************************/ #define _NMLOG_PREFIX_NAME "agent-manager" #define _NMLOG_DOMAIN LOGD_AGENTS @@ -78,6 +118,24 @@ NM_DEFINE_SINGLETON_INSTANCE (NMAgentManager); "/\"", (req)->con.get.setting_name, "\"", \ ((req)->request_type == REQUEST_TYPE_CON_GET ? "/(none)" : _request_type_to_string ((req)->request_type, FALSE))) +/*****************************************************************************/ + +typedef struct _NMAgentManagerCallId Request; + +static void request_add_agent (Request *req, NMSecretAgent *agent); + +static void request_remove_agent (Request *req, NMSecretAgent *agent, GSList **pending_reqs); + +static void request_next_agent (Request *req); + +static void _con_get_request_start (Request *req); +static void _con_save_request_start (Request *req); +static void _con_del_request_start (Request *req); + +static gboolean _con_get_try_complete_early (Request *req); + +/*****************************************************************************/ + typedef enum { REQUEST_TYPE_INVALID, REQUEST_TYPE_CON_GET, @@ -96,48 +154,6 @@ _request_type_to_string (RequestType request_type, gboolean verbose) } } -G_DEFINE_TYPE (NMAgentManager, nm_agent_manager, NM_TYPE_EXPORTED_OBJECT) - -#define NM_AGENT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \ - NM_TYPE_AGENT_MANAGER, \ - NMAgentManagerPrivate)) - -typedef struct { - NMAuthManager *auth_mgr; - - /* Auth chains for checking agent permissions */ - GSList *chains; - - /* Hashed by owner name, not identifier, since two agents in different - * sessions can use the same identifier. - */ - GHashTable *agents; - - GHashTable *requests; -} NMAgentManagerPrivate; - -enum { - AGENT_REGISTERED, - - LAST_SIGNAL -}; -static guint signals[LAST_SIGNAL] = { 0 }; - - -typedef struct _NMAgentManagerCallId Request; - -static void request_add_agent (Request *req, NMSecretAgent *agent); - -static void request_remove_agent (Request *req, NMSecretAgent *agent, GSList **pending_reqs); - -static void request_next_agent (Request *req); - -static void _con_get_request_start (Request *req); -static void _con_save_request_start (Request *req); -static void _con_del_request_start (Request *req); - -static gboolean _con_get_try_complete_early (Request *req); - /*****************************************************************************/ static gboolean @@ -582,7 +598,7 @@ req_complete_cancel (Request *req, gboolean is_disposing) gs_free_error GError *error = NULL; nm_assert (req && req->self); - nm_assert (!g_hash_table_contains (NM_AGENT_MANAGER_GET_PRIVATE (req->self)->requests, req)); + nm_assert (!g_hash_table_contains (req->self->_priv.requests, req)); nm_utils_error_set_cancelled (&error, is_disposing, "NMAgentManager"); req_complete_release (req, NULL, NULL, NULL, error); @@ -1550,8 +1566,6 @@ authority_changed_cb (NMAuthManager *auth_manager, NMAgentManager *self) /*****************************************************************************/ -NM_DEFINE_SINGLETON_GETTER (NMAgentManager, nm_agent_manager_get, NM_TYPE_AGENT_MANAGER); - static void nm_agent_manager_init (NMAgentManager *self) { @@ -1564,7 +1578,7 @@ nm_agent_manager_init (NMAgentManager *self) static void constructed (GObject *object) { - NMAgentManagerPrivate *priv = NM_AGENT_MANAGER_GET_PRIVATE (object); + NMAgentManagerPrivate *priv = NM_AGENT_MANAGER_GET_PRIVATE ((NMAgentManager *) object); G_OBJECT_CLASS (nm_agent_manager_parent_class)->constructed (object); @@ -1583,7 +1597,7 @@ constructed (GObject *object) static void dispose (GObject *object) { - NMAgentManagerPrivate *priv = NM_AGENT_MANAGER_GET_PRIVATE (object); + NMAgentManagerPrivate *priv = NM_AGENT_MANAGER_GET_PRIVATE ((NMAgentManager *) object); if (priv->requests) { GHashTableIter iter; @@ -1626,24 +1640,20 @@ 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; - /* Signals */ signals[AGENT_REGISTERED] = - g_signal_new ("agent-registered", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (NMAgentManagerClass, agent_registered), - NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, - G_TYPE_OBJECT); + g_signal_new ("agent-registered", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + G_TYPE_OBJECT); nm_exported_object_class_add_interface (NM_EXPORTED_OBJECT_CLASS (agent_manager_class), NMDBUS_TYPE_AGENT_MANAGER_SKELETON, diff --git a/src/settings/nm-agent-manager.h b/src/settings/nm-agent-manager.h index 8240a2b513..7f8126935f 100644 --- a/src/settings/nm-agent-manager.h +++ b/src/settings/nm-agent-manager.h @@ -33,19 +33,9 @@ #define NM_IS_AGENT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AGENT_MANAGER)) #define NM_AGENT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AGENT_MANAGER, NMAgentManagerClass)) -struct _NMAgentManagerCallId; typedef struct _NMAgentManagerCallId *NMAgentManagerCallId; -struct _NMAgentManager { - NMExportedObject parent; -}; - -typedef struct { - NMExportedObjectClass parent; - - /* Signals */ - void (*agent_registered) (NMAgentManager *agent_mgr, NMSecretAgent *agent); -} NMAgentManagerClass; +typedef struct _NMAgentManagerClass NMAgentManagerClass; GType nm_agent_manager_get_type (void); diff --git a/src/settings/nm-inotify-helper.c b/src/settings/nm-inotify-helper.c index ce15246c5a..44a102b059 100644 --- a/src/settings/nm-inotify-helper.c +++ b/src/settings/nm-inotify-helper.c @@ -20,35 +20,51 @@ #include "nm-default.h" +#include "nm-inotify-helper.h" + #include <unistd.h> #include <string.h> #include <sys/inotify.h> #include <errno.h> -#include "nm-inotify-helper.h" #include "NetworkManagerUtils.h" /* NOTE: this code should be killed once we depend on a new enough glib to * include the patches from https://bugzilla.gnome.org/show_bug.cgi?id=532815 */ -G_DEFINE_TYPE (NMInotifyHelper, nm_inotify_helper, G_TYPE_OBJECT) +/*****************************************************************************/ -#define NM_INOTIFY_HELPER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_INOTIFY_HELPER, NMInotifyHelperPrivate)) +enum { + EVENT, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { int ifd; - GHashTable *wd_refs; } NMInotifyHelperPrivate; -/* Signals */ -enum { - EVENT, - LAST_SIGNAL +struct _NMInotifyHelper { + GObject parent; + NMInotifyHelperPrivate _priv; }; -static guint signals[LAST_SIGNAL] = { 0 }; +struct _NMInotifyHelperClass { + GObjectClass parent; +}; + +G_DEFINE_TYPE (NMInotifyHelper, nm_inotify_helper, G_TYPE_OBJECT) + +#define NM_INOTIFY_HELPER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMInotifyHelper, NM_IS_INOTIFY_HELPER) + +/*****************************************************************************/ + +NM_DEFINE_SINGLETON_GETTER (NMInotifyHelper, nm_inotify_helper_get, NM_TYPE_INOTIFY_HELPER); + +/*****************************************************************************/ int nm_inotify_helper_add_watch (NMInotifyHelper *self, const char *path) @@ -139,7 +155,7 @@ init_inotify (NMInotifyHelper *self) /* Watch the inotify descriptor for file/directory change events */ channel = g_io_channel_unix_new (priv->ifd); g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL); - g_io_channel_set_encoding (channel, NULL, NULL); + g_io_channel_set_encoding (channel, NULL, NULL); source_id = g_io_add_watch (channel, G_IO_IN | G_IO_ERR, @@ -149,7 +165,7 @@ init_inotify (NMInotifyHelper *self) return TRUE; } -NM_DEFINE_SINGLETON_GETTER (NMInotifyHelper, nm_inotify_helper_get, NM_TYPE_INOTIFY_HELPER); +/*****************************************************************************/ static void nm_inotify_helper_init (NMInotifyHelper *self) @@ -170,7 +186,7 @@ constructed (GObject *object) static void finalize (GObject *object) { - NMInotifyHelperPrivate *priv = NM_INOTIFY_HELPER_GET_PRIVATE (object); + NMInotifyHelperPrivate *priv = NM_INOTIFY_HELPER_GET_PRIVATE ((NMInotifyHelper *) object); if (priv->ifd >= 0) close (priv->ifd); @@ -185,19 +201,15 @@ nm_inotify_helper_class_init (NMInotifyHelperClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (NMInotifyHelperPrivate)); - - /* Virtual methods */ object_class->constructed = constructed; object_class->finalize = finalize; - /* Signals */ signals[EVENT] = - g_signal_new ("event", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMInotifyHelperClass, event), - NULL, NULL, NULL, - G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_STRING); + g_signal_new ("event", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_STRING); } diff --git a/src/settings/nm-inotify-helper.h b/src/settings/nm-inotify-helper.h index 2ac9376cd8..2715f3eec5 100644 --- a/src/settings/nm-inotify-helper.h +++ b/src/settings/nm-inotify-helper.h @@ -18,10 +18,8 @@ * (C) Copyright 2008 Red Hat, Inc. */ -#ifndef __INOTIFY_HELPER_H__ -#define __INOTIFY_HELPER_H__ - -#include <sys/inotify.h> +#ifndef __NM_INOTIFY_HELPER_H__ +#define __NM_INOTIFY_HELPER_H__ /* NOTE: this code should be killed once we depend on a new enough glib to * include the patches from https://bugzilla.gnome.org/show_bug.cgi?id=532815 @@ -34,16 +32,8 @@ #define NM_IS_INOTIFY_HELPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_INOTIFY_HELPER)) #define NM_INOTIFY_HELPER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_INOTIFY_HELPER, NMInotifyHelperClass)) -typedef struct { - GObject parent; -} NMInotifyHelper; - -typedef struct { - GObjectClass parent; - - /* signals */ - void (* event) (NMInotifyHelper *helper, struct inotify_event *evt, const char *filename); -} NMInotifyHelperClass; +typedef struct _NMInotifyHelper NMInotifyHelper; +typedef struct _NMInotifyHelperClass NMInotifyHelperClass; GType nm_inotify_helper_get_type (void); @@ -53,4 +43,4 @@ int nm_inotify_helper_add_watch (NMInotifyHelper *helper, const char *path); void nm_inotify_helper_remove_watch (NMInotifyHelper *helper, int wd); -#endif /* __INOTIFY_HELPER_H__ */ +#endif /* __NM_INOTIFY_HELPER_H__ */ diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index cb58c2b044..06d261af86 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -74,23 +74,14 @@ #include "nm-audit-manager.h" #include "NetworkManagerUtils.h" #include "nm-dispatcher.h" +#include "nm-inotify-helper.h" #include "nmdbus-settings.h" -#define _NMLOG_DOMAIN LOGD_SETTINGS -#define _NMLOG_PREFIX_NAME "settings" -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), _NMLOG_DOMAIN, \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME": " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END +/*****************************************************************************/ -/* LINKER CRACKROCK */ #define EXPORT(sym) void * __export_##sym = &sym; -#include "nm-inotify-helper.h" EXPORT(nm_inotify_helper_get_type) EXPORT(nm_inotify_helper_get) EXPORT(nm_inotify_helper_add_watch) @@ -99,7 +90,8 @@ EXPORT(nm_inotify_helper_remove_watch) EXPORT(nm_settings_connection_get_type) EXPORT(nm_settings_connection_replace_settings) EXPORT(nm_settings_connection_replace_and_commit) -/* END LINKER CRACKROCK */ + +/*****************************************************************************/ #define HOSTNAMED_SERVICE_NAME "org.freedesktop.hostname1" #define HOSTNAMED_SERVICE_PATH "/org/freedesktop/hostname1" @@ -127,17 +119,27 @@ EXPORT(nm_settings_connection_replace_and_commit) #define HOSTNAME_FILE HOSTNAME_FILE_DEFAULT #endif -static void claim_connection (NMSettings *self, - NMSettingsConnection *connection); +/*****************************************************************************/ -static void unmanaged_specs_changed (NMSettingsPlugin *config, gpointer user_data); -static void unrecognized_specs_changed (NMSettingsPlugin *config, gpointer user_data); +NM_GOBJECT_PROPERTIES_DEFINE (NMSettings, + PROP_UNMANAGED_SPECS, + PROP_HOSTNAME, + PROP_CAN_MODIFY, + PROP_CONNECTIONS, + PROP_STARTUP_COMPLETE, +); -static void connection_ready_changed (NMSettingsConnection *conn, - GParamSpec *pspec, - gpointer user_data); +enum { + CONNECTION_ADDED, + CONNECTION_UPDATED, + CONNECTION_REMOVED, + CONNECTION_VISIBILITY_CHANGED, + AGENT_REGISTERED, + NEW_CONNECTION, /* exported, not used internally */ + LAST_SIGNAL +}; -G_DEFINE_TYPE (NMSettings, nm_settings, NM_TYPE_EXPORTED_OBJECT); +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { NMAgentManager *agent_mgr; @@ -166,27 +168,44 @@ typedef struct { } hostname; } NMSettingsPrivate; -#define NM_SETTINGS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTINGS, NMSettingsPrivate)) - -enum { - CONNECTION_ADDED, - CONNECTION_UPDATED, - CONNECTION_REMOVED, - CONNECTION_VISIBILITY_CHANGED, - AGENT_REGISTERED, +struct _NMSettings { + NMExportedObject parent; + NMSettingsPrivate _priv; +}; - NEW_CONNECTION, /* exported, not used internally */ - LAST_SIGNAL +struct _NMSettingsClass { + NMExportedObjectClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; -NM_GOBJECT_PROPERTIES_DEFINE (NMSettings, - PROP_UNMANAGED_SPECS, - PROP_HOSTNAME, - PROP_CAN_MODIFY, - PROP_CONNECTIONS, - PROP_STARTUP_COMPLETE, -); +G_DEFINE_TYPE (NMSettings, nm_settings, NM_TYPE_EXPORTED_OBJECT); + +#define NM_SETTINGS_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMSettings, NM_IS_SETTINGS) + +/*****************************************************************************/ + +#define _NMLOG_DOMAIN LOGD_SETTINGS +#define _NMLOG_PREFIX_NAME "settings" +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), _NMLOG_DOMAIN, \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + _NMLOG_PREFIX_NAME": " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ + +static void claim_connection (NMSettings *self, + NMSettingsConnection *connection); + +static void unmanaged_specs_changed (NMSettingsPlugin *config, gpointer user_data); +static void unrecognized_specs_changed (NMSettingsPlugin *config, gpointer user_data); + +static void connection_ready_changed (NMSettingsConnection *conn, + GParamSpec *pspec, + gpointer user_data); + +/*****************************************************************************/ static void check_startup_complete (NMSettings *self) @@ -2265,22 +2284,6 @@ setup_hostname_file_monitors (NMSettings *self) hostname_maybe_changed (self); } -NMSettings * -nm_settings_new (void) -{ - NMSettings *self; - NMSettingsPrivate *priv; - - self = g_object_new (NM_TYPE_SETTINGS, NULL); - - priv = NM_SETTINGS_GET_PRIVATE (self); - - priv->config = nm_config_get (); - - nm_exported_object_export (NM_EXPORTED_OBJECT (self)); - return self; -} - gboolean nm_settings_start (NMSettings *self, GError **error) { @@ -2330,6 +2333,57 @@ nm_settings_start (NMSettings *self, GError **error) return TRUE; } +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + NMSettings *self = NM_SETTINGS (object); + NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self); + const GSList *specs, *iter; + GHashTableIter citer; + GPtrArray *array; + const char *path; + + switch (prop_id) { + case PROP_UNMANAGED_SPECS: + array = g_ptr_array_new (); + specs = nm_settings_get_unmanaged_specs (self); + for (iter = specs; iter; iter = g_slist_next (iter)) + g_ptr_array_add (array, g_strdup (iter->data)); + g_ptr_array_add (array, NULL); + g_value_take_boxed (value, (char **) g_ptr_array_free (array, FALSE)); + break; + case PROP_HOSTNAME: + g_value_take_string (value, nm_settings_get_hostname (self)); + + /* Don't ever pass NULL through D-Bus */ + if (!g_value_get_string (value)) + g_value_set_static_string (value, ""); + break; + case PROP_CAN_MODIFY: + g_value_set_boolean (value, !!get_plugin (self, NM_SETTINGS_PLUGIN_CAP_MODIFY_CONNECTIONS)); + break; + case PROP_CONNECTIONS: + array = g_ptr_array_sized_new (g_hash_table_size (priv->connections) + 1); + g_hash_table_iter_init (&citer, priv->connections); + while (g_hash_table_iter_next (&citer, (gpointer) &path, NULL)) + g_ptr_array_add (array, g_strdup (path)); + g_ptr_array_add (array, NULL); + g_value_take_boxed (value, (char **) g_ptr_array_free (array, FALSE)); + break; + case PROP_STARTUP_COMPLETE: + g_value_set_boolean (value, nm_settings_get_startup_complete (self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + static void nm_settings_init (NMSettings *self) { @@ -2344,9 +2398,17 @@ nm_settings_init (NMSettings *self) */ priv->agent_mgr = g_object_ref (nm_agent_manager_get ()); + priv->config = g_object_ref (nm_config_get ()); + g_signal_connect (priv->agent_mgr, "agent-registered", G_CALLBACK (secret_agent_registered), self); } +NMSettings * +nm_settings_new (void) +{ + return g_object_new (NM_TYPE_SETTINGS, NULL); +} + static void dispose (GObject *object) { @@ -2401,54 +2463,9 @@ finalize (GObject *object) g_slist_free_full (priv->plugins, g_object_unref); - G_OBJECT_CLASS (nm_settings_parent_class)->finalize (object); -} - -static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - NMSettings *self = NM_SETTINGS (object); - NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self); - const GSList *specs, *iter; - GHashTableIter citer; - GPtrArray *array; - const char *path; - - switch (prop_id) { - case PROP_UNMANAGED_SPECS: - array = g_ptr_array_new (); - specs = nm_settings_get_unmanaged_specs (self); - for (iter = specs; iter; iter = g_slist_next (iter)) - g_ptr_array_add (array, g_strdup (iter->data)); - g_ptr_array_add (array, NULL); - g_value_take_boxed (value, (char **) g_ptr_array_free (array, FALSE)); - break; - case PROP_HOSTNAME: - g_value_take_string (value, nm_settings_get_hostname (self)); + g_clear_object (&priv->config); - /* Don't ever pass NULL through D-Bus */ - if (!g_value_get_string (value)) - g_value_set_static_string (value, ""); - break; - case PROP_CAN_MODIFY: - g_value_set_boolean (value, !!get_plugin (self, NM_SETTINGS_PLUGIN_CAP_MODIFY_CONNECTIONS)); - break; - case PROP_CONNECTIONS: - array = g_ptr_array_sized_new (g_hash_table_size (priv->connections) + 1); - g_hash_table_iter_init (&citer, priv->connections); - while (g_hash_table_iter_next (&citer, (gpointer) &path, NULL)) - g_ptr_array_add (array, g_strdup (path)); - g_ptr_array_add (array, NULL); - g_value_take_boxed (value, (char **) g_ptr_array_free (array, FALSE)); - break; - case PROP_STARTUP_COMPLETE: - g_value_set_boolean (value, nm_settings_get_startup_complete (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + G_OBJECT_CLASS (nm_settings_parent_class)->finalize (object); } static void @@ -2457,17 +2474,12 @@ 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; object_class->finalize = finalize; - /* properties */ - obj_properties[PROP_UNMANAGED_SPECS] = g_param_spec_boxed (NM_SETTINGS_UNMANAGED_SPECS, "", "", G_TYPE_STRV, @@ -2500,7 +2512,6 @@ nm_settings_class_init (NMSettingsClass *class) g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); - /* signals */ signals[CONNECTION_ADDED] = g_signal_new (NM_SETTINGS_SIGNAL_CONNECTION_ADDED, G_OBJECT_CLASS_TYPE (object_class), diff --git a/src/settings/nm-settings.h b/src/settings/nm-settings.h index a0be42eef3..c8a7ebae0c 100644 --- a/src/settings/nm-settings.h +++ b/src/settings/nm-settings.h @@ -61,13 +61,7 @@ typedef gboolean (*NMConnectionFilterFunc) (NMSettings *settings, NMConnection *connection, gpointer func_data); -struct _NMSettings { - NMExportedObject parent_instance; -}; - -typedef struct { - NMExportedObjectClass parent_class; -} NMSettingsClass; +typedef struct _NMSettingsClass NMSettingsClass; typedef void (*NMSettingsSetHostnameCb) (const char *name, gboolean result, gpointer user_data); diff --git a/src/settings/plugins/ibft/nm-ibft-connection.c b/src/settings/plugins/ibft/nm-ibft-connection.c index 95495b5cab..24cfdc19ad 100644 --- a/src/settings/plugins/ibft/nm-ibft-connection.c +++ b/src/settings/plugins/ibft/nm-ibft-connection.c @@ -20,17 +20,34 @@ #include "nm-default.h" +#include "nm-ibft-connection.h" + #include <string.h> #include <net/ethernet.h> #include <netinet/ether.h> - #include <glib/gstdio.h> -#include "nm-ibft-connection.h" #include "reader.h" +/*****************************************************************************/ + +struct _NMIbftConnection { + NMSettingsConnection parent; +}; + +struct _NMIbftConnectionClass { + NMSettingsConnectionClass parent; +}; + G_DEFINE_TYPE (NMIbftConnection, nm_ibft_connection, NM_TYPE_SETTINGS_CONNECTION) +/*****************************************************************************/ + +static void +nm_ibft_connection_init (NMIbftConnection *connection) +{ +} + NMIbftConnection * nm_ibft_connection_new (const GPtrArray *block, GError **error) { @@ -53,13 +70,6 @@ nm_ibft_connection_new (const GPtrArray *block, GError **error) return (NMIbftConnection *) object; } -/* GObject */ - -static void -nm_ibft_connection_init (NMIbftConnection *connection) -{ -} - static void nm_ibft_connection_class_init (NMIbftConnectionClass *ibft_connection_class) { diff --git a/src/settings/plugins/ibft/nm-ibft-connection.h b/src/settings/plugins/ibft/nm-ibft-connection.h index a4ee17ac7c..95494095be 100644 --- a/src/settings/plugins/ibft/nm-ibft-connection.h +++ b/src/settings/plugins/ibft/nm-ibft-connection.h @@ -30,13 +30,8 @@ #define NM_IS_IBFT_CONNECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_IBFT_CONNECTION)) #define NM_IBFT_CONNECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IBFT_CONNECTION, NMIbftConnectionClass)) -typedef struct { - NMSettingsConnection parent; -} NMIbftConnection; - -typedef struct { - NMSettingsConnectionClass parent; -} NMIbftConnectionClass; +typedef struct _NMIbftConnection NMIbftConnection; +typedef struct _NMIbftConnectionClass NMIbftConnectionClass; GType nm_ibft_connection_get_type (void); diff --git a/src/settings/plugins/ibft/plugin.c b/src/settings/plugins/ibft/plugin.c index 6f9b8c82c9..c663e36110 100644 --- a/src/settings/plugins/ibft/plugin.c +++ b/src/settings/plugins/ibft/plugin.c @@ -20,38 +20,52 @@ #include "nm-default.h" +#include "plugin.h" + #include <string.h> #include <unistd.h> #include <errno.h> - #include <gmodule.h> #include "nm-setting-connection.h" - #include "nm-settings-plugin.h" #include "NetworkManagerUtils.h" -#include "plugin.h" #include "reader.h" #include "nm-ibft-connection.h" +/*****************************************************************************/ + +typedef struct { + GHashTable *connections; /* uuid::connection */ + gboolean initialized; +} SettingsPluginIbftPrivate; + +struct _SettingsPluginIbft { + GObject parent; + SettingsPluginIbftPrivate _priv; +}; + +struct _SettingsPluginIbftClass { + GObjectClass parent; +}; + static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); G_DEFINE_TYPE_EXTENDED (SettingsPluginIbft, settings_plugin_ibft, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, settings_plugin_interface_init)) -#define SETTINGS_PLUGIN_IBFT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SETTINGS_TYPE_PLUGIN_IBFT, SettingsPluginIbftPrivate)) +#define SETTINGS_PLUGIN_IBFT_GET_PRIVATE(self) _NM_GET_PRIVATE (self, SettingsPluginIbft, SETTINGS_IS_PLUGIN_IBFT) - -typedef struct { - GHashTable *connections; /* uuid::connection */ - gboolean initialized; -} SettingsPluginIbftPrivate; +/*****************************************************************************/ static SettingsPluginIbft *settings_plugin_ibft_get (void); + NM_DEFINE_SINGLETON_GETTER (SettingsPluginIbft, settings_plugin_ibft_get, SETTINGS_TYPE_PLUGIN_IBFT); +/*****************************************************************************/ + static void read_connections (SettingsPluginIbft *self) { @@ -104,6 +118,30 @@ get_connections (NMSettingsPlugin *config) return list; } +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + switch (prop_id) { + case NM_SETTINGS_PLUGIN_PROP_NAME: + g_value_set_string (value, "iBFT"); + break; + case NM_SETTINGS_PLUGIN_PROP_INFO: + g_value_set_string (value, "(c) 2014 Red Hat, Inc. To report bugs please use the NetworkManager mailing list."); + break; + case NM_SETTINGS_PLUGIN_PROP_CAPABILITIES: + g_value_set_uint (value, NM_SETTINGS_PLUGIN_CAP_NONE); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + static void init (NMSettingsPlugin *config) { @@ -132,42 +170,12 @@ dispose (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { - case NM_SETTINGS_PLUGIN_PROP_NAME: - g_value_set_string (value, "iBFT"); - break; - case NM_SETTINGS_PLUGIN_PROP_INFO: - g_value_set_string (value, "(c) 2014 Red Hat, Inc. To report bugs please use the NetworkManager mailing list."); - break; - case NM_SETTINGS_PLUGIN_PROP_CAPABILITIES: - g_value_set_uint (value, NM_SETTINGS_PLUGIN_CAP_NONE); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); -} - -static void settings_plugin_ibft_class_init (SettingsPluginIbftClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (SettingsPluginIbftPrivate)); - object_class->dispose = dispose; object_class->get_property = get_property; - object_class->set_property = set_property; g_object_class_override_property (object_class, NM_SETTINGS_PLUGIN_PROP_NAME, @@ -185,11 +193,12 @@ settings_plugin_ibft_class_init (SettingsPluginIbftClass *req_class) static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) { - /* interface implementation */ plugin_iface->get_connections = get_connections; plugin_iface->init = init; } +/*****************************************************************************/ + G_MODULE_EXPORT GObject * nm_settings_plugin_factory (void) { diff --git a/src/settings/plugins/ibft/plugin.h b/src/settings/plugins/ibft/plugin.h index 4867e07daa..5c44a1c950 100644 --- a/src/settings/plugins/ibft/plugin.h +++ b/src/settings/plugins/ibft/plugin.h @@ -31,15 +31,7 @@ typedef struct _SettingsPluginIbft SettingsPluginIbft; typedef struct _SettingsPluginIbftClass SettingsPluginIbftClass; -struct _SettingsPluginIbft { - GObject parent; -}; - -struct _SettingsPluginIbftClass { - GObjectClass parent; -}; - GType settings_plugin_ibft_get_type (void); -#endif /* _PLUGIN_H_ */ +#endif /* _PLUGIN_H_ */ diff --git a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c index 184e95b2aa..09c585a9da 100644 --- a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c +++ b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.c @@ -23,7 +23,7 @@ #include "nm-ifcfg-connection.h" #include <string.h> - +#include <sys/inotify.h> #include <glib/gstdio.h> #include "nm-dbus-interface.h" @@ -44,9 +44,19 @@ #include "nm-inotify-helper.h" #include "utils.h" -G_DEFINE_TYPE (NMIfcfgConnection, nm_ifcfg_connection, NM_TYPE_SETTINGS_CONNECTION) +/*****************************************************************************/ + +NM_GOBJECT_PROPERTIES_DEFINE_BASE ( + PROP_UNMANAGED_SPEC, + PROP_UNRECOGNIZED_SPEC, +); -#define NM_IFCFG_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_IFCFG_CONNECTION, NMIfcfgConnectionPrivate)) +enum { + IFCFG_CHANGED, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { gulong ih_event_id; @@ -71,20 +81,20 @@ typedef struct { NMInotifyHelper *inotify_helper; } NMIfcfgConnectionPrivate; -enum { - PROP_0, - PROP_UNMANAGED_SPEC, - PROP_UNRECOGNIZED_SPEC, - LAST_PROP +struct _NMIfcfgConnection { + NMSettingsConnection parent; + NMIfcfgConnectionPrivate _priv; }; -/* Signals */ -enum { - IFCFG_CHANGED, - LAST_SIGNAL +struct _NMIfcfgConnectionClass { + NMSettingsConnectionClass parent; }; -static guint signals[LAST_SIGNAL] = { 0 }; +G_DEFINE_TYPE (NMIfcfgConnection, nm_ifcfg_connection, NM_TYPE_SETTINGS_CONNECTION) + +#define NM_IFCFG_CONNECTION_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMIfcfgConnection, NM_IS_IFCFG_CONNECTION) + +/*****************************************************************************/ static NMInotifyHelper * _get_inotify_helper (NMIfcfgConnectionPrivate *priv) @@ -110,7 +120,7 @@ link_changed (NMPlatform *platform, NMPObjectType *obj_type, int ifindex, const NMPlatformSignalChangeType change_type, NMConnection *self) { - NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (self); + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE ((NMIfcfgConnection *) self); const char *ifname; ifname = nm_connection_get_interface_name (self); @@ -211,63 +221,6 @@ files_changed_cb (NMInotifyHelper *ih, g_signal_emit (self, signals[IFCFG_CHANGED], 0); } -NMIfcfgConnection * -nm_ifcfg_connection_new (NMConnection *source, - const char *full_path, - GError **error, - gboolean *out_ignore_error) -{ - GObject *object; - NMConnection *tmp; - char *unhandled_spec = NULL; - const char *unmanaged_spec = NULL, *unrecognized_spec = NULL; - gboolean update_unsaved = TRUE; - - g_assert (source || full_path); - - if (out_ignore_error) - *out_ignore_error = FALSE; - - /* If we're given a connection already, prefer that instead of re-reading */ - if (source) - tmp = g_object_ref (source); - else { - tmp = connection_from_file (full_path, - &unhandled_spec, - error, - out_ignore_error); - if (!tmp) - return NULL; - - /* If we just read the connection from disk, it's clearly not Unsaved */ - update_unsaved = FALSE; - } - - if (unhandled_spec && g_str_has_prefix (unhandled_spec, "unmanaged:")) - unmanaged_spec = unhandled_spec + strlen ("unmanaged:"); - else if (unhandled_spec && g_str_has_prefix (unhandled_spec, "unrecognized:")) - unrecognized_spec = unhandled_spec + strlen ("unrecognized:"); - - object = (GObject *) g_object_new (NM_TYPE_IFCFG_CONNECTION, - NM_SETTINGS_CONNECTION_FILENAME, full_path, - NM_IFCFG_CONNECTION_UNMANAGED_SPEC, unmanaged_spec, - NM_IFCFG_CONNECTION_UNRECOGNIZED_SPEC, unrecognized_spec, - NULL); - /* Update our settings with what was read from the file */ - if (nm_settings_connection_replace_settings (NM_SETTINGS_CONNECTION (object), - tmp, - update_unsaved, - NULL, - error)) - nm_ifcfg_connection_check_devtimeout (NM_IFCFG_CONNECTION (object)); - else - g_clear_object (&object); - - g_object_unref (tmp); - g_free (unhandled_spec); - return (NMIfcfgConnection *) object; -} - static void path_watch_stop (NMIfcfgConnection *self) { @@ -382,7 +335,7 @@ commit_changes (NMSettingsConnection *connection, NMSettingsConnectionCommitFunc callback, gpointer user_data) { - NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (connection); + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE ((NMIfcfgConnection *) connection); GError *error = NULL; NMConnection *reread; gboolean same = FALSE, success = FALSE; @@ -444,7 +397,7 @@ do_delete (NMSettingsConnection *connection, NMSettingsConnectionDeleteFunc callback, gpointer user_data) { - NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (connection); + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE ((NMIfcfgConnection *) connection); const char *filename; filename = nm_settings_connection_get_filename (connection); @@ -461,27 +414,20 @@ do_delete (NMSettingsConnection *connection, NM_SETTINGS_CONNECTION_CLASS (nm_ifcfg_connection_parent_class)->delete (connection, callback, user_data); } -/* GObject */ +/*****************************************************************************/ static void -nm_ifcfg_connection_init (NMIfcfgConnection *connection) -{ - g_signal_connect (connection, "notify::" NM_SETTINGS_CONNECTION_FILENAME, - G_CALLBACK (filename_changed), NULL); -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { - NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (object); + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE ((NMIfcfgConnection *) object); switch (prop_id) { case PROP_UNMANAGED_SPEC: - priv->unmanaged_spec = g_value_dup_string (value); + g_value_set_string (value, priv->unmanaged_spec); break; case PROP_UNRECOGNIZED_SPEC: - priv->unrecognized_spec = g_value_dup_string (value); + g_value_set_string (value, priv->unrecognized_spec); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -490,17 +436,17 @@ set_property (GObject *object, guint prop_id, } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) +set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) { - NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (object); + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE ((NMIfcfgConnection *) object); switch (prop_id) { case PROP_UNMANAGED_SPEC: - g_value_set_string (value, priv->unmanaged_spec); + priv->unmanaged_spec = g_value_dup_string (value); break; case PROP_UNRECOGNIZED_SPEC: - g_value_set_string (value, priv->unrecognized_spec); + priv->unrecognized_spec = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -508,10 +454,76 @@ get_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + +static void +nm_ifcfg_connection_init (NMIfcfgConnection *connection) +{ + g_signal_connect (connection, "notify::" NM_SETTINGS_CONNECTION_FILENAME, + G_CALLBACK (filename_changed), NULL); +} + +NMIfcfgConnection * +nm_ifcfg_connection_new (NMConnection *source, + const char *full_path, + GError **error, + gboolean *out_ignore_error) +{ + GObject *object; + NMConnection *tmp; + char *unhandled_spec = NULL; + const char *unmanaged_spec = NULL, *unrecognized_spec = NULL; + gboolean update_unsaved = TRUE; + + g_assert (source || full_path); + + if (out_ignore_error) + *out_ignore_error = FALSE; + + /* If we're given a connection already, prefer that instead of re-reading */ + if (source) + tmp = g_object_ref (source); + else { + tmp = connection_from_file (full_path, + &unhandled_spec, + error, + out_ignore_error); + if (!tmp) + return NULL; + + /* If we just read the connection from disk, it's clearly not Unsaved */ + update_unsaved = FALSE; + } + + if (unhandled_spec && g_str_has_prefix (unhandled_spec, "unmanaged:")) + unmanaged_spec = unhandled_spec + strlen ("unmanaged:"); + else if (unhandled_spec && g_str_has_prefix (unhandled_spec, "unrecognized:")) + unrecognized_spec = unhandled_spec + strlen ("unrecognized:"); + + object = (GObject *) g_object_new (NM_TYPE_IFCFG_CONNECTION, + NM_SETTINGS_CONNECTION_FILENAME, full_path, + NM_IFCFG_CONNECTION_UNMANAGED_SPEC, unmanaged_spec, + NM_IFCFG_CONNECTION_UNRECOGNIZED_SPEC, unrecognized_spec, + NULL); + /* Update our settings with what was read from the file */ + if (nm_settings_connection_replace_settings (NM_SETTINGS_CONNECTION (object), + tmp, + update_unsaved, + NULL, + error)) + nm_ifcfg_connection_check_devtimeout (NM_IFCFG_CONNECTION (object)); + else + g_clear_object (&object); + + g_object_unref (tmp); + g_free (unhandled_spec); + return (NMIfcfgConnection *) object; +} + static void dispose (GObject *object) { - NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE (object); + NMIfcfgConnectionPrivate *priv = NM_IFCFG_CONNECTION_GET_PRIVATE ((NMIfcfgConnection *) object); path_watch_stop (NM_IFCFG_CONNECTION (object)); @@ -532,36 +544,34 @@ nm_ifcfg_connection_class_init (NMIfcfgConnectionClass *ifcfg_connection_class) GObjectClass *object_class = G_OBJECT_CLASS (ifcfg_connection_class); NMSettingsConnectionClass *settings_class = NM_SETTINGS_CONNECTION_CLASS (ifcfg_connection_class); - g_type_class_add_private (ifcfg_connection_class, sizeof (NMIfcfgConnectionPrivate)); - - /* Virtual methods */ object_class->set_property = set_property; object_class->get_property = get_property; object_class->dispose = dispose; + settings_class->delete = do_delete; settings_class->replace_and_commit = replace_and_commit; settings_class->commit_changes = commit_changes; - /* Properties */ - g_object_class_install_property - (object_class, PROP_UNMANAGED_SPEC, - g_param_spec_string (NM_IFCFG_CONNECTION_UNMANAGED_SPEC, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); - g_object_class_install_property - (object_class, PROP_UNRECOGNIZED_SPEC, - g_param_spec_string (NM_IFCFG_CONNECTION_UNRECOGNIZED_SPEC, "", "", - NULL, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); + obj_properties[PROP_UNMANAGED_SPEC] = + g_param_spec_string (NM_IFCFG_CONNECTION_UNMANAGED_SPEC, "", "", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + + obj_properties[PROP_UNRECOGNIZED_SPEC] = + g_param_spec_string (NM_IFCFG_CONNECTION_UNRECOGNIZED_SPEC, "", "", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); signals[IFCFG_CHANGED] = - g_signal_new ("ifcfg-changed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + g_signal_new ("ifcfg-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } diff --git a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.h b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.h index 57db059b00..c706d2a20a 100644 --- a/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.h +++ b/src/settings/plugins/ifcfg-rh/nm-ifcfg-connection.h @@ -34,13 +34,8 @@ #define NM_IFCFG_CONNECTION_UNMANAGED_SPEC "unmanaged-spec" #define NM_IFCFG_CONNECTION_UNRECOGNIZED_SPEC "unrecognized-spec" -typedef struct { - NMSettingsConnection parent; -} NMIfcfgConnection; - -typedef struct { - NMSettingsConnectionClass parent; -} NMIfcfgConnectionClass; +typedef struct _NMIfcfgConnection NMIfcfgConnection; +typedef struct _NMIfcfgConnectionClass NMIfcfgConnectionClass; GType nm_ifcfg_connection_get_type (void); diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c index c2956d22b7..77bd32499f 100644 --- a/src/settings/plugins/ifcfg-rh/plugin.c +++ b/src/settings/plugins/ifcfg-rh/plugin.c @@ -30,15 +30,14 @@ #include <errno.h> #include <sys/types.h> #include <sys/stat.h> - #include <gmodule.h> #include "nm-dbus-compat.h" #include "nm-setting-connection.h" - #include "nm-settings-plugin.h" #include "nm-config.h" #include "NetworkManagerUtils.h" +#include "nm-exported-object.h" #include "nm-ifcfg-connection.h" #include "shvar.h" @@ -46,39 +45,13 @@ #include "reader.h" #include "writer.h" #include "utils.h" -#include "nm-exported-object.h" #include "nmdbus-ifcfg-rh.h" #define IFCFGRH1_DBUS_SERVICE_NAME "com.redhat.ifcfgrh1" #define IFCFGRH1_DBUS_OBJECT_PATH "/com/redhat/ifcfgrh1" -#define _NMLOG_DOMAIN LOGD_SETTINGS -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), (_NMLOG_DOMAIN), \ - "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - "ifcfg-rh: " \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END - - -static NMIfcfgConnection *update_connection (SettingsPluginIfcfg *plugin, - NMConnection *source, - const char *full_path, - NMIfcfgConnection *connection, - gboolean protect_existing_connection, - GHashTable *protected_connections, - GError **error); - -static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); - -G_DEFINE_TYPE_EXTENDED (SettingsPluginIfcfg, settings_plugin_ifcfg, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, - settings_plugin_interface_init)) - -#define SETTINGS_PLUGIN_IFCFG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SETTINGS_TYPE_PLUGIN_IFCFG, SettingsPluginIfcfgPrivate)) - +/*****************************************************************************/ typedef struct { NMConfig *config; @@ -97,9 +70,52 @@ typedef struct { gulong ifcfg_monitor_id; } SettingsPluginIfcfgPrivate; +struct _SettingsPluginIfcfg { + GObject parent; + SettingsPluginIfcfgPrivate _priv; +}; + +struct _SettingsPluginIfcfgClass { + GObjectClass parent; +}; + +static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); + +G_DEFINE_TYPE_EXTENDED (SettingsPluginIfcfg, settings_plugin_ifcfg, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, + settings_plugin_interface_init)) + +#define SETTINGS_PLUGIN_IFCFG_GET_PRIVATE(self) _NM_GET_PRIVATE (self, SettingsPluginIfcfg, SETTINGS_IS_PLUGIN_IFCFG) + +/*****************************************************************************/ + static SettingsPluginIfcfg *settings_plugin_ifcfg_get (void); + NM_DEFINE_SINGLETON_GETTER (SettingsPluginIfcfg, settings_plugin_ifcfg_get, SETTINGS_TYPE_PLUGIN_IFCFG); +/*****************************************************************************/ + +#define _NMLOG_DOMAIN LOGD_SETTINGS +#define _NMLOG(level, ...) \ + G_STMT_START { \ + nm_log ((level), (_NMLOG_DOMAIN), \ + "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ + "ifcfg-rh: " \ + _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ + } G_STMT_END + +/*****************************************************************************/ + +static NMIfcfgConnection *update_connection (SettingsPluginIfcfg *plugin, + NMConnection *source, + const char *full_path, + NMIfcfgConnection *connection, + gboolean protect_existing_connection, + GHashTable *protected_connections, + GError **error); + +/*****************************************************************************/ + static void connection_ifcfg_changed (NMIfcfgConnection *connection, gpointer user_data) { @@ -124,7 +140,7 @@ connection_ifcfg_changed (NMIfcfgConnection *connection, gpointer user_data) static void connection_removed_cb (NMSettingsConnection *obj, gpointer user_data) { - g_hash_table_remove (SETTINGS_PLUGIN_IFCFG_GET_PRIVATE (user_data)->connections, + g_hash_table_remove (SETTINGS_PLUGIN_IFCFG_GET_PRIVATE ((SettingsPluginIfcfg *) user_data)->connections, nm_connection_get_uuid (NM_CONNECTION (obj))); } @@ -616,7 +632,7 @@ static GSList * get_unhandled_specs (NMSettingsPlugin *config, const char *property) { - SettingsPluginIfcfgPrivate *priv = SETTINGS_PLUGIN_IFCFG_GET_PRIVATE (config); + SettingsPluginIfcfgPrivate *priv = SETTINGS_PLUGIN_IFCFG_GET_PRIVATE ((SettingsPluginIfcfg *) config); GSList *list = NULL, *list_iter; GHashTableIter iter; gpointer connection; @@ -944,6 +960,28 @@ config_changed_cb (NMConfig *config, /*****************************************************************************/ static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + switch (prop_id) { + case NM_SETTINGS_PLUGIN_PROP_NAME: + g_value_set_string (value, IFCFG_PLUGIN_NAME); + break; + case NM_SETTINGS_PLUGIN_PROP_INFO: + g_value_set_string (value, IFCFG_PLUGIN_INFO); + break; + case NM_SETTINGS_PLUGIN_PROP_CAPABILITIES: + g_value_set_uint (value, NM_SETTINGS_PLUGIN_CAP_MODIFY_CONNECTIONS); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + +static void init (NMSettingsPlugin *config) { } @@ -951,7 +989,7 @@ init (NMSettingsPlugin *config) static void settings_plugin_ifcfg_init (SettingsPluginIfcfg *plugin) { - SettingsPluginIfcfgPrivate *priv = SETTINGS_PLUGIN_IFCFG_GET_PRIVATE (plugin); + SettingsPluginIfcfgPrivate *priv = SETTINGS_PLUGIN_IFCFG_GET_PRIVATE ((SettingsPluginIfcfg *) plugin); priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); } @@ -1005,47 +1043,13 @@ dispose (GObject *object) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { - case NM_SETTINGS_PLUGIN_PROP_NAME: - g_value_set_string (value, IFCFG_PLUGIN_NAME); - break; - case NM_SETTINGS_PLUGIN_PROP_INFO: - g_value_set_string (value, IFCFG_PLUGIN_INFO); - break; - case NM_SETTINGS_PLUGIN_PROP_CAPABILITIES: - g_value_set_uint (value, NM_SETTINGS_PLUGIN_CAP_MODIFY_CONNECTIONS); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void settings_plugin_ifcfg_class_init (SettingsPluginIfcfgClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (SettingsPluginIfcfgPrivate)); - object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; - object_class->set_property = set_property; g_object_class_override_property (object_class, NM_SETTINGS_PLUGIN_PROP_NAME, @@ -1063,7 +1067,6 @@ settings_plugin_ifcfg_class_init (SettingsPluginIfcfgClass *req_class) static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) { - /* interface implementation */ plugin_iface->get_connections = get_connections; plugin_iface->add_connection = add_connection; plugin_iface->load_connection = load_connection; @@ -1073,6 +1076,8 @@ settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) plugin_iface->init = init; } +/*****************************************************************************/ + G_MODULE_EXPORT GObject * nm_settings_plugin_factory (void) { diff --git a/src/settings/plugins/ifcfg-rh/plugin.h b/src/settings/plugins/ifcfg-rh/plugin.h index 74c4b00a04..d815cc5160 100644 --- a/src/settings/plugins/ifcfg-rh/plugin.h +++ b/src/settings/plugins/ifcfg-rh/plugin.h @@ -34,15 +34,6 @@ typedef struct _SettingsPluginIfcfg SettingsPluginIfcfg; typedef struct _SettingsPluginIfcfgClass SettingsPluginIfcfgClass; -struct _SettingsPluginIfcfg { - GObject parent; -}; - -struct _SettingsPluginIfcfgClass { - GObjectClass parent; -}; - GType settings_plugin_ifcfg_get_type (void); #endif /* _PLUGIN_H_ */ - diff --git a/src/settings/plugins/ifnet/nm-ifnet-connection.c b/src/settings/plugins/ifnet/nm-ifnet-connection.c index b661b03efb..66a2f84893 100644 --- a/src/settings/plugins/ifnet/nm-ifnet-connection.c +++ b/src/settings/plugins/ifnet/nm-ifnet-connection.c @@ -21,6 +21,8 @@ #include "nm-default.h" +#include "nm-ifnet-connection.h" + #include <string.h> #include <glib/gstdio.h> @@ -29,16 +31,14 @@ #include "nm-setting-wireless-security.h" #include "nm-settings-connection.h" #include "nm-settings-plugin.h" -#include "nm-ifnet-connection.h" + #include "connection_parser.h" #include "net_parser.h" #include "net_utils.h" #include "wpa_parser.h" #include "plugin.h" -G_DEFINE_TYPE (NMIfnetConnection, nm_ifnet_connection, NM_TYPE_SETTINGS_CONNECTION) - -#define NM_IFNET_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_IFNET_CONNECTION, NMIfnetConnectionPrivate)) +/*****************************************************************************/ enum { IFNET_SETUP_MONITORS, @@ -53,51 +53,20 @@ typedef struct { NMSettingsPlugin *config; } NMIfnetConnectionPrivate; -NMIfnetConnection * -nm_ifnet_connection_new (NMConnection *source, const char *conn_name) -{ - NMConnection *tmp; - GObject *object; - GError *error = NULL; - gboolean update_unsaved = TRUE; - - g_return_val_if_fail (source || conn_name, NULL); - - if (source) - tmp = g_object_ref (source); - else { - tmp = ifnet_update_connection_from_config_block (conn_name, NULL, &error); - if (!tmp) { - nm_log_warn (LOGD_SETTINGS, "Could not read connection '%s': %s", - conn_name, error->message); - g_error_free (error); - return NULL; - } +struct _NMIfnetConnection { + NMSettingsConnection parent; + NMIfnetConnectionPrivate _priv; +}; - /* If we just read the connection from disk, it's clearly not Unsaved */ - update_unsaved = FALSE; - } +struct _NMIfnetConnectionClass { + NMSettingsConnectionClass parent; +}; - object = (GObject *) g_object_new (NM_TYPE_IFNET_CONNECTION, NULL); - g_assert (object); - NM_IFNET_CONNECTION_GET_PRIVATE (object)->conn_name = g_strdup (conn_name); - if (!nm_settings_connection_replace_settings (NM_SETTINGS_CONNECTION (object), - tmp, - update_unsaved, - NULL, - NULL)) { - g_object_unref (object); - return NULL; - } - g_object_unref (tmp); +G_DEFINE_TYPE (NMIfnetConnection, nm_ifnet_connection, NM_TYPE_SETTINGS_CONNECTION) - return NM_IFNET_CONNECTION (object); -} +#define NM_IFNET_CONNECTION_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMIfnetConnection, NM_IS_IFNET_CONNECTION) -static void -nm_ifnet_connection_init (NMIfnetConnection * connection) -{ -} +/*****************************************************************************/ const char * nm_ifnet_connection_get_conn_name (NMIfnetConnection *connection) @@ -112,7 +81,7 @@ commit_changes (NMSettingsConnection *connection, gpointer user_data) { GError *error = NULL; - NMIfnetConnectionPrivate *priv = NM_IFNET_CONNECTION_GET_PRIVATE (connection); + NMIfnetConnectionPrivate *priv = NM_IFNET_CONNECTION_GET_PRIVATE ((NMIfnetConnection *) connection); gchar *new_name = NULL; gboolean success = FALSE; @@ -159,13 +128,13 @@ commit_changes (NMSettingsConnection *connection, g_signal_emit (connection, signals[IFNET_SETUP_MONITORS], 0); } -static void +static void do_delete (NMSettingsConnection *connection, - NMSettingsConnectionDeleteFunc callback, - gpointer user_data) + NMSettingsConnectionDeleteFunc callback, + gpointer user_data) { GError *error = NULL; - NMIfnetConnectionPrivate *priv = NM_IFNET_CONNECTION_GET_PRIVATE (connection); + NMIfnetConnectionPrivate *priv = NM_IFNET_CONNECTION_GET_PRIVATE ((NMIfnetConnection *) connection); g_signal_emit (connection, signals[IFNET_CANCEL_MONITORS], 0); @@ -190,10 +159,58 @@ do_delete (NMSettingsConnection *connection, nm_connection_get_id (NM_CONNECTION (connection))); } +/*****************************************************************************/ + +static void +nm_ifnet_connection_init (NMIfnetConnection * connection) +{ +} + +NMIfnetConnection * +nm_ifnet_connection_new (NMConnection *source, const char *conn_name) +{ + NMConnection *tmp; + GObject *object; + GError *error = NULL; + gboolean update_unsaved = TRUE; + + g_return_val_if_fail (source || conn_name, NULL); + + if (source) + tmp = g_object_ref (source); + else { + tmp = ifnet_update_connection_from_config_block (conn_name, NULL, &error); + if (!tmp) { + nm_log_warn (LOGD_SETTINGS, "Could not read connection '%s': %s", + conn_name, error->message); + g_error_free (error); + return NULL; + } + + /* If we just read the connection from disk, it's clearly not Unsaved */ + update_unsaved = FALSE; + } + + object = (GObject *) g_object_new (NM_TYPE_IFNET_CONNECTION, NULL); + + NM_IFNET_CONNECTION_GET_PRIVATE ((NMIfnetConnection *) object)->conn_name = g_strdup (conn_name); + if (!nm_settings_connection_replace_settings (NM_SETTINGS_CONNECTION (object), + tmp, + update_unsaved, + NULL, + NULL)) { + g_object_unref (object); + return NULL; + } + g_object_unref (tmp); + + return NM_IFNET_CONNECTION (object); +} + static void finalize (GObject * object) { - g_free (NM_IFNET_CONNECTION_GET_PRIVATE (object)->conn_name); + g_free (NM_IFNET_CONNECTION_GET_PRIVATE ((NMIfnetConnection *) object)->conn_name); G_OBJECT_CLASS (nm_ifnet_connection_parent_class)->finalize (object); } @@ -203,21 +220,19 @@ nm_ifnet_connection_class_init (NMIfnetConnectionClass * ifnet_connection_class) GObjectClass *object_class = G_OBJECT_CLASS (ifnet_connection_class); NMSettingsConnectionClass *settings_class = NM_SETTINGS_CONNECTION_CLASS (ifnet_connection_class); - g_type_class_add_private (ifnet_connection_class, sizeof (NMIfnetConnectionPrivate)); - object_class->finalize = finalize; + settings_class->delete = do_delete; settings_class->commit_changes = commit_changes; signals[IFNET_SETUP_MONITORS] = g_signal_new ("ifnet_setup_monitors", - G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, + 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); signals[IFNET_CANCEL_MONITORS] = g_signal_new ("ifnet_cancel_monitors", - G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - + G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, + 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } diff --git a/src/settings/plugins/ifnet/nm-ifnet-connection.h b/src/settings/plugins/ifnet/nm-ifnet-connection.h index 856996e070..490ba1f7a4 100644 --- a/src/settings/plugins/ifnet/nm-ifnet-connection.h +++ b/src/settings/plugins/ifnet/nm-ifnet-connection.h @@ -32,13 +32,8 @@ #define NM_IS_IFNET_CONNECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_IFNET_CONNECTION)) #define NM_IFNET_CONNECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IFNET_CONNECTION, NMIfnetConnectionClass)) -typedef struct { - NMSettingsConnection parent; -} NMIfnetConnection; - -typedef struct { - NMSettingsConnectionClass parent; -} NMIfnetConnectionClass; +typedef struct _NMIfnetConnection NMIfnetConnection; +typedef struct _NMIfnetConnectionClass NMIfnetConnectionClass; GType nm_ifnet_connection_get_type (void); diff --git a/src/settings/plugins/ifnet/plugin.c b/src/settings/plugins/ifnet/plugin.c index a0676cf894..f7688585a6 100644 --- a/src/settings/plugins/ifnet/plugin.c +++ b/src/settings/plugins/ifnet/plugin.c @@ -22,21 +22,19 @@ #include "nm-default.h" -#include <string.h> +#include "plugin.h" +#include <string.h> #include <gmodule.h> #include "nm-utils.h" #include "nm-setting-connection.h" - -#include "nm-default.h" #include "nm-dbus-interface.h" #include "nm-settings-plugin.h" -#include "nm-ifnet-connection.h" #include "nm-config.h" #include "NetworkManagerUtils.h" -#include "plugin.h" +#include "nm-ifnet-connection.h" #include "net_utils.h" #include "net_parser.h" #include "wpa_parser.h" @@ -46,34 +44,54 @@ #define IFNET_PLUGIN_INFO "(C) 1999-2010 Gentoo Foundation, Inc. To report bugs please use bugs.gentoo.org with [networkmanager] or [qiaomuf] prefix." #define IFNET_MANAGE_WELL_KNOWN_DEFAULT TRUE +/*****************************************************************************/ + +typedef void (*FileChangedFn) (gpointer user_data); + +typedef struct { + FileChangedFn callback; + gpointer user_data; +} FileMonitorInfo; + +/*****************************************************************************/ + typedef struct { GHashTable *connections; /* uuid::connection */ gboolean unmanaged_well_known; GFileMonitor *net_monitor; GFileMonitor *wpa_monitor; - } SettingsPluginIfnetPrivate; -typedef void (*FileChangedFn) (gpointer user_data); +struct _SettingsPluginIfnet { + GObject parent; + SettingsPluginIfnetPrivate _priv; +}; -typedef struct { - FileChangedFn callback; - gpointer user_data; -} FileMonitorInfo; +struct _SettingsPluginIfnetClass { + GObjectClass parent; +}; static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); -static void reload_connections (NMSettingsPlugin *config); - G_DEFINE_TYPE_EXTENDED (SettingsPluginIfnet, settings_plugin_ifnet, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, settings_plugin_interface_init)) -#define SETTINGS_PLUGIN_IFNET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SETTINGS_TYPE_PLUGIN_IFNET, SettingsPluginIfnetPrivate)) + +#define SETTINGS_PLUGIN_IFNET_GET_PRIVATE(self) _NM_GET_PRIVATE (self, SettingsPluginIfnet, SETTINGS_IS_PLUGIN_IFNET) + +/*****************************************************************************/ static SettingsPluginIfnet *settings_plugin_ifnet_get (void); + NM_DEFINE_SINGLETON_GETTER (SettingsPluginIfnet, settings_plugin_ifnet_get, SETTINGS_TYPE_PLUGIN_IFNET); +/*****************************************************************************/ + +static void reload_connections (NMSettingsPlugin *config); + +/*****************************************************************************/ + static gboolean is_managed_plugin (void) { @@ -84,9 +102,9 @@ is_managed_plugin (void) static void file_changed (GFileMonitor * monitor, - GFile * file, - GFile * other_file, - GFileMonitorEvent event_type, gpointer user_data) + GFile * file, + GFile * other_file, + GFileMonitorEvent event_type, gpointer user_data) { FileMonitorInfo *info; @@ -102,7 +120,7 @@ file_changed (GFileMonitor * monitor, static GFileMonitor * monitor_file_changes (const char *filename, - FileChangedFn callback, gpointer user_data) + FileChangedFn callback, gpointer user_data) { GFile *file; GFileMonitor *monitor; @@ -166,7 +184,7 @@ cancel_monitors (NMIfnetConnection * connection, gpointer user_data) static void connection_removed_cb (NMSettingsConnection *obj, gpointer user_data) { - g_hash_table_remove (SETTINGS_PLUGIN_IFNET_GET_PRIVATE (user_data)->connections, + g_hash_table_remove (SETTINGS_PLUGIN_IFNET_GET_PRIVATE ((SettingsPluginIfnet *) user_data)->connections, nm_connection_get_uuid (NM_CONNECTION (obj))); } @@ -296,7 +314,7 @@ add_connection (NMSettingsPlugin *config, gboolean save_to_disk, GError **error) { - SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE (config); + SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE ((SettingsPluginIfnet *) config); NMIfnetConnection *new = NULL; /* Ensure we reject attempts to add the connection long before we're @@ -358,7 +376,7 @@ check_unmanaged (gpointer key, gpointer data, gpointer user_data) static GSList * get_unmanaged_specs (NMSettingsPlugin * config) { - SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE (config); + SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE ((SettingsPluginIfnet *) config); GSList *list = NULL; nm_log_info (LOGD_SETTINGS, "getting unmanaged specs..."); @@ -366,29 +384,10 @@ get_unmanaged_specs (NMSettingsPlugin * config) return list; } -static void -init (NMSettingsPlugin *config) -{ - SettingsPluginIfnet *self = SETTINGS_PLUGIN_IFNET (config); - SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE (self); - - nm_log_info (LOGD_SETTINGS, "Initializing!"); - - priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); - priv->unmanaged_well_known = !is_managed_plugin (); - nm_log_info (LOGD_SETTINGS, "management mode: %s", - priv->unmanaged_well_known ? "unmanaged" : "managed"); - - setup_monitors (NULL, config); - reload_connections (config); - - nm_log_info (LOGD_SETTINGS, "Initialzation complete!"); -} - static GSList * get_connections (NMSettingsPlugin *config) { - SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE (config); + SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE ((SettingsPluginIfnet *) config); GSList *connections = NULL; GHashTableIter iter; NMIfnetConnection *connection; @@ -407,24 +406,11 @@ get_connections (NMSettingsPlugin *config) return connections; } -static void -settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) -{ - plugin_iface->init = init; - plugin_iface->get_connections = get_connections; - plugin_iface->get_unmanaged_specs = get_unmanaged_specs; - plugin_iface->add_connection = add_connection; - plugin_iface->reload_connections = reload_connections; -} - -static void -settings_plugin_ifnet_init (SettingsPluginIfnet * plugin) -{ -} +/*****************************************************************************/ static void get_property (GObject * object, guint prop_id, GValue * value, - GParamSpec * pspec) + GParamSpec * pspec) { switch (prop_id) { case NM_SETTINGS_PLUGIN_PROP_NAME: @@ -443,22 +429,39 @@ get_property (GObject * object, guint prop_id, GValue * value, } } +/*****************************************************************************/ + static void -set_property (GObject * object, guint prop_id, const GValue * value, - GParamSpec * pspec) +init (NMSettingsPlugin *config) +{ + SettingsPluginIfnet *self = SETTINGS_PLUGIN_IFNET (config); + SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE (self); + + nm_log_info (LOGD_SETTINGS, "Initializing!"); + + priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + priv->unmanaged_well_known = !is_managed_plugin (); + nm_log_info (LOGD_SETTINGS, "management mode: %s", + priv->unmanaged_well_known ? "unmanaged" : "managed"); + + setup_monitors (NULL, config); + reload_connections (config); + + nm_log_info (LOGD_SETTINGS, "Initialzation complete!"); +} + +/*****************************************************************************/ + +static void +settings_plugin_ifnet_init (SettingsPluginIfnet * plugin) { - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } } static void dispose (GObject * object) { SettingsPluginIfnet *plugin = SETTINGS_PLUGIN_IFNET (object); - SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE (plugin); + SettingsPluginIfnetPrivate *priv = SETTINGS_PLUGIN_IFNET_GET_PRIVATE ((SettingsPluginIfnet *) plugin); cancel_monitors (NULL, object); if (priv->connections) { @@ -476,25 +479,34 @@ settings_plugin_ifnet_class_init (SettingsPluginIfnetClass * req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (SettingsPluginIfnetPrivate)); - object_class->dispose = dispose; object_class->get_property = get_property; - object_class->set_property = set_property; g_object_class_override_property (object_class, - NM_SETTINGS_PLUGIN_PROP_NAME, - NM_SETTINGS_PLUGIN_NAME); + NM_SETTINGS_PLUGIN_PROP_NAME, + NM_SETTINGS_PLUGIN_NAME); g_object_class_override_property (object_class, - NM_SETTINGS_PLUGIN_PROP_INFO, - NM_SETTINGS_PLUGIN_INFO); + NM_SETTINGS_PLUGIN_PROP_INFO, + NM_SETTINGS_PLUGIN_INFO); g_object_class_override_property (object_class, - NM_SETTINGS_PLUGIN_PROP_CAPABILITIES, - NM_SETTINGS_PLUGIN_CAPABILITIES); + NM_SETTINGS_PLUGIN_PROP_CAPABILITIES, + NM_SETTINGS_PLUGIN_CAPABILITIES); } +static void +settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) +{ + plugin_iface->init = init; + plugin_iface->get_connections = get_connections; + plugin_iface->get_unmanaged_specs = get_unmanaged_specs; + plugin_iface->add_connection = add_connection; + plugin_iface->reload_connections = reload_connections; +} + +/*****************************************************************************/ + G_MODULE_EXPORT GObject * nm_settings_plugin_factory (void) { diff --git a/src/settings/plugins/ifnet/plugin.h b/src/settings/plugins/ifnet/plugin.h index 09640968ba..f006e7e41f 100644 --- a/src/settings/plugins/ifnet/plugin.h +++ b/src/settings/plugins/ifnet/plugin.h @@ -33,13 +33,6 @@ typedef struct _SettingsPluginIfnet SettingsPluginIfnet; typedef struct _SettingsPluginIfnetClass SettingsPluginIfnetClass; -struct _SettingsPluginIfnet { - GObject parent; -}; - -struct _SettingsPluginIfnetClass { - GObjectClass parent; -}; - GType settings_plugin_ifnet_get_type (void); + #endif diff --git a/src/settings/plugins/ifupdown/nm-ifupdown-connection.c b/src/settings/plugins/ifupdown/nm-ifupdown-connection.c index 34ecf8b9ec..15d30079d2 100644 --- a/src/settings/plugins/ifupdown/nm-ifupdown-connection.c +++ b/src/settings/plugins/ifupdown/nm-ifupdown-connection.c @@ -22,6 +22,8 @@ #include "nm-default.h" +#include "nm-ifupdown-connection.h" + #include <string.h> #include <glib/gstdio.h> @@ -30,11 +32,37 @@ #include "nm-setting-wireless-security.h" #include "nm-settings-connection.h" #include "nm-settings-plugin.h" -#include "nm-ifupdown-connection.h" #include "parser.h" +/*****************************************************************************/ + +struct _NMIfupdownConnection { + NMSettingsConnection parent; +}; + +struct _NMIfupdownConnectionClass { + NMSettingsConnectionClass parent; +}; + G_DEFINE_TYPE (NMIfupdownConnection, nm_ifupdown_connection, NM_TYPE_SETTINGS_CONNECTION) +/*****************************************************************************/ + +static gboolean +supports_secrets (NMSettingsConnection *connection, const char *setting_name) +{ + nm_log_info (LOGD_SETTINGS, "supports_secrets() for setting_name: '%s'", setting_name); + + return (strcmp (setting_name, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0); +} + +/*****************************************************************************/ + +static void +nm_ifupdown_connection_init (NMIfupdownConnection *connection) +{ +} + NMIfupdownConnection* nm_ifupdown_connection_new (if_block *block) { @@ -57,19 +85,6 @@ nm_ifupdown_connection_new (if_block *block) return (NMIfupdownConnection *) object; } -static gboolean -supports_secrets (NMSettingsConnection *connection, const char *setting_name) -{ - nm_log_info (LOGD_SETTINGS, "supports_secrets() for setting_name: '%s'", setting_name); - - return (strcmp (setting_name, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME) == 0); -} - -static void -nm_ifupdown_connection_init (NMIfupdownConnection *connection) -{ -} - static void nm_ifupdown_connection_class_init (NMIfupdownConnectionClass *ifupdown_connection_class) { diff --git a/src/settings/plugins/ifupdown/nm-ifupdown-connection.h b/src/settings/plugins/ifupdown/nm-ifupdown-connection.h index e1999bef5c..f710b1b6f3 100644 --- a/src/settings/plugins/ifupdown/nm-ifupdown-connection.h +++ b/src/settings/plugins/ifupdown/nm-ifupdown-connection.h @@ -35,13 +35,8 @@ #define NM_IS_IFUPDOWN_CONNECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_IFUPDOWN_CONNECTION)) #define NM_IFUPDOWN_CONNECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IFUPDOWN_CONNECTION, NMIfupdownConnectionClass)) -typedef struct { - NMSettingsConnection parent; -} NMIfupdownConnection; - -typedef struct { - NMSettingsConnectionClass parent; -} NMIfupdownConnectionClass; +typedef struct _NMIfupdownConnection NMIfupdownConnection; +typedef struct _NMIfupdownConnectionClass NMIfupdownConnectionClass; GType nm_ifupdown_connection_get_type (void); diff --git a/src/settings/plugins/ifupdown/plugin.c b/src/settings/plugins/ifupdown/plugin.c index b506b2d602..abb9af146d 100644 --- a/src/settings/plugins/ifupdown/plugin.c +++ b/src/settings/plugins/ifupdown/plugin.c @@ -24,15 +24,14 @@ #include "nm-default.h" +#include "plugin.h" + #include <string.h> #include <arpa/inet.h> #include <gudev/gudev.h> #include <gmodule.h> #include "nm-setting-connection.h" - -#include "interface_parser.h" - #include "nm-dbus-interface.h" #include "nm-settings-plugin.h" #include "nm-setting-ip4-config.h" @@ -42,13 +41,12 @@ #include "nm-utils.h" #include "nm-core-internal.h" #include "NetworkManagerUtils.h" +#include "nm-config.h" +#include "interface_parser.h" #include "nm-ifupdown-connection.h" -#include "plugin.h" #include "parser.h" -#include "nm-config.h" - #define ENI_INTERFACES_FILE "/etc/network/interfaces" #define IFUPDOWN_PLUGIN_NAME "ifupdown" @@ -58,9 +56,11 @@ /* #define ALWAYS_UNMANAGE TRUE */ #ifndef ALWAYS_UNMANAGE -# define ALWAYS_UNMANAGE FALSE +#define ALWAYS_UNMANAGE FALSE #endif +/*****************************************************************************/ + typedef struct { GUdevClient *client; @@ -77,82 +77,29 @@ typedef struct { gboolean unmanage_well_known; } SettingsPluginIfupdownPrivate; -static void -settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); +struct _SettingsPluginIfupdown { + GObject parent; + SettingsPluginIfupdownPrivate _priv; +}; + +struct _SettingsPluginIfupdownClass { + GObjectClass parent; +}; + +static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); G_DEFINE_TYPE_EXTENDED (SettingsPluginIfupdown, settings_plugin_ifupdown, G_TYPE_OBJECT, 0, G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, settings_plugin_interface_init)) -#define SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SETTINGS_TYPE_PLUGIN_IFUPDOWN, SettingsPluginIfupdownPrivate)) +#define SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE(self) _NM_GET_PRIVATE (self, SettingsPluginIfupdown, SETTINGS_IS_PLUGIN_IFUPDOWN) + +/*****************************************************************************/ static SettingsPluginIfupdown *settings_plugin_ifupdown_get (void); NM_DEFINE_SINGLETON_GETTER (SettingsPluginIfupdown, settings_plugin_ifupdown_get, SETTINGS_TYPE_PLUGIN_IFUPDOWN); -static void -settings_plugin_ifupdown_class_init (SettingsPluginIfupdownClass *req_class); - -static void -init (NMSettingsPlugin *config); - -/* Returns the plugins currently known list of connections. The returned - * list is freed by the system settings service. - */ -static GSList* -get_connections (NMSettingsPlugin *config); - -/* - * Return a list of device specifications which NetworkManager should not - * manage. Returned list will be freed by the system settings service, and - * each element must be allocated using g_malloc() or its variants. - */ -static GSList* -get_unmanaged_specs (NMSettingsPlugin *config); - - -/* GObject */ -static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec); - -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec); - -static void -dispose (GObject *object); - -static void -settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) -{ - plugin_iface->init = init; - plugin_iface->get_connections = get_connections; - plugin_iface->get_unmanaged_specs = get_unmanaged_specs; -} - -static void -settings_plugin_ifupdown_class_init (SettingsPluginIfupdownClass *req_class) -{ - GObjectClass *object_class = G_OBJECT_CLASS (req_class); - - g_type_class_add_private (req_class, sizeof (SettingsPluginIfupdownPrivate)); - - object_class->dispose = dispose; - object_class->get_property = get_property; - object_class->set_property = set_property; - - g_object_class_override_property (object_class, - NM_SETTINGS_PLUGIN_PROP_NAME, - NM_SETTINGS_PLUGIN_NAME); - - g_object_class_override_property (object_class, - NM_SETTINGS_PLUGIN_PROP_INFO, - NM_SETTINGS_PLUGIN_INFO); - - g_object_class_override_property (object_class, - NM_SETTINGS_PLUGIN_PROP_CAPABILITIES, - NM_SETTINGS_PLUGIN_CAPABILITIES); -} +/*****************************************************************************/ static void bind_device_to_connection (SettingsPluginIfupdown *self, @@ -192,7 +139,7 @@ bind_device_to_connection (SettingsPluginIfupdown *self, } nm_settings_connection_commit_changes (NM_SETTINGS_CONNECTION (exported), NM_SETTINGS_CONNECTION_COMMIT_REASON_NONE, NULL, NULL); -} +} static void udev_device_added (SettingsPluginIfupdown *self, GUdevDevice *device) @@ -291,6 +238,85 @@ handle_uevent (GUdevClient *client, udev_device_changed (self, device); } +/* Returns the plugins currently known list of connections. The returned + * list is freed by the system settings service. + */ +static GSList* +get_connections (NMSettingsPlugin *config) +{ + SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE ((SettingsPluginIfupdown *) config); + GSList *connections; + + nm_log_info (LOGD_SETTINGS, "(%d) ... get_connections.", GPOINTER_TO_UINT(config)); + + if(priv->unmanage_well_known) { + nm_log_info (LOGD_SETTINGS, "(%d) ... get_connections (managed=false): return empty list.", GPOINTER_TO_UINT(config)); + return NULL; + } + + connections = _nm_utils_hash_values_to_slist (priv->connections); + + nm_log_info (LOGD_SETTINGS, "(%d) connections count: %d", GPOINTER_TO_UINT(config), g_slist_length(connections)); + return connections; +} + +/* + * Return a list of device specifications which NetworkManager should not + * manage. Returned list will be freed by the system settings service, and + * each element must be allocated using g_malloc() or its variants. + */ +static GSList* +get_unmanaged_specs (NMSettingsPlugin *config) +{ + SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE ((SettingsPluginIfupdown *) config); + GSList *specs = NULL; + GHashTableIter iter; + GUdevDevice *device; + const char *iface; + + if (!ALWAYS_UNMANAGE && !priv->unmanage_well_known) + return NULL; + + nm_log_info (LOGD_SETTINGS, "get unmanaged devices count: %d", + g_hash_table_size (priv->kernel_ifaces)); + + g_hash_table_iter_init (&iter, priv->kernel_ifaces); + while (g_hash_table_iter_next (&iter, (gpointer) &iface, (gpointer) &device)) { + const char *address; + + address = g_udev_device_get_sysfs_attr (device, "address"); + if (address) + specs = g_slist_append (specs, g_strdup_printf ("mac:%s", address)); + else + specs = g_slist_append (specs, g_strdup_printf ("interface-name:%s", iface)); + } + return specs; +} + +/*****************************************************************************/ + +static void +get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + switch (prop_id) { + case NM_SETTINGS_PLUGIN_PROP_NAME: + g_value_set_string (value, IFUPDOWN_PLUGIN_NAME); + break; + case NM_SETTINGS_PLUGIN_PROP_INFO: + g_value_set_string (value, IFUPDOWN_PLUGIN_INFO); + break; + case NM_SETTINGS_PLUGIN_PROP_CAPABILITIES: + g_value_set_uint (value, NM_SETTINGS_PLUGIN_CAP_NONE); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/*****************************************************************************/ + static void init (NMSettingsPlugin *config) { @@ -442,61 +468,7 @@ init (NMSettingsPlugin *config) nm_log_info (LOGD_SETTINGS, "end _init."); } - -/* Returns the plugins currently known list of connections. The returned - * list is freed by the system settings service. - */ -static GSList* -get_connections (NMSettingsPlugin *config) -{ - SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE (config); - GSList *connections; - - nm_log_info (LOGD_SETTINGS, "(%d) ... get_connections.", GPOINTER_TO_UINT(config)); - - if(priv->unmanage_well_known) { - nm_log_info (LOGD_SETTINGS, "(%d) ... get_connections (managed=false): return empty list.", GPOINTER_TO_UINT(config)); - return NULL; - } - - connections = _nm_utils_hash_values_to_slist (priv->connections); - - nm_log_info (LOGD_SETTINGS, "(%d) connections count: %d", GPOINTER_TO_UINT(config), g_slist_length(connections)); - return connections; -} - -/* - * Return a list of device specifications which NetworkManager should not - * manage. Returned list will be freed by the system settings service, and - * each element must be allocated using g_malloc() or its variants. - */ -static GSList* -get_unmanaged_specs (NMSettingsPlugin *config) -{ - SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE (config); - GSList *specs = NULL; - GHashTableIter iter; - GUdevDevice *device; - const char *iface; - - if (!ALWAYS_UNMANAGE && !priv->unmanage_well_known) - return NULL; - - nm_log_info (LOGD_SETTINGS, "get unmanaged devices count: %d", - g_hash_table_size (priv->kernel_ifaces)); - - g_hash_table_iter_init (&iter, priv->kernel_ifaces); - while (g_hash_table_iter_next (&iter, (gpointer) &iface, (gpointer) &device)) { - const char *address; - - address = g_udev_device_get_sysfs_attr (device, "address"); - if (address) - specs = g_slist_append (specs, g_strdup_printf ("mac:%s", address)); - else - specs = g_slist_append (specs, g_strdup_printf ("interface-name:%s", iface)); - } - return specs; -} +/*****************************************************************************/ static void settings_plugin_ifupdown_init (SettingsPluginIfupdown *plugin) @@ -504,55 +476,49 @@ settings_plugin_ifupdown_init (SettingsPluginIfupdown *plugin) } static void -get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) +dispose (GObject *object) { - switch (prop_id) { - case NM_SETTINGS_PLUGIN_PROP_NAME: - g_value_set_string (value, IFUPDOWN_PLUGIN_NAME); - break; - case NM_SETTINGS_PLUGIN_PROP_INFO: - g_value_set_string (value, IFUPDOWN_PLUGIN_INFO); - break; - case NM_SETTINGS_PLUGIN_PROP_CAPABILITIES: - g_value_set_uint (value, NM_SETTINGS_PLUGIN_CAP_NONE); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} + SettingsPluginIfupdown *plugin = SETTINGS_PLUGIN_IFUPDOWN (object); + SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE (plugin); -static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + g_clear_pointer (&priv->kernel_ifaces, g_hash_table_destroy); + g_clear_pointer (&priv->eni_ifaces, g_hash_table_destroy); + g_clear_object (&priv->client); + + G_OBJECT_CLASS (settings_plugin_ifupdown_parent_class)->dispose (object); } static void -dispose (GObject *object) +settings_plugin_ifupdown_class_init (SettingsPluginIfupdownClass *req_class) { - SettingsPluginIfupdown *plugin = SETTINGS_PLUGIN_IFUPDOWN (object); - SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE (plugin); + GObjectClass *object_class = G_OBJECT_CLASS (req_class); - if (priv->kernel_ifaces) - g_hash_table_destroy(priv->kernel_ifaces); + object_class->dispose = dispose; + object_class->get_property = get_property; - if (priv->eni_ifaces) - g_hash_table_destroy(priv->eni_ifaces); + g_object_class_override_property (object_class, + NM_SETTINGS_PLUGIN_PROP_NAME, + NM_SETTINGS_PLUGIN_NAME); - if (priv->client) - g_object_unref (priv->client); + g_object_class_override_property (object_class, + NM_SETTINGS_PLUGIN_PROP_INFO, + NM_SETTINGS_PLUGIN_INFO); + g_object_class_override_property (object_class, + NM_SETTINGS_PLUGIN_PROP_CAPABILITIES, + NM_SETTINGS_PLUGIN_CAPABILITIES); +} - G_OBJECT_CLASS (settings_plugin_ifupdown_parent_class)->dispose (object); +static void +settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) +{ + plugin_iface->init = init; + plugin_iface->get_connections = get_connections; + plugin_iface->get_unmanaged_specs = get_unmanaged_specs; } +/*****************************************************************************/ + G_MODULE_EXPORT GObject * nm_settings_plugin_factory (void) { diff --git a/src/settings/plugins/ifupdown/plugin.h b/src/settings/plugins/ifupdown/plugin.h index b568ea78b6..c2a3639cc3 100644 --- a/src/settings/plugins/ifupdown/plugin.h +++ b/src/settings/plugins/ifupdown/plugin.h @@ -36,14 +36,6 @@ typedef struct _SettingsPluginIfupdown SettingsPluginIfupdown; typedef struct _SettingsPluginIfupdownClass SettingsPluginIfupdownClass; -struct _SettingsPluginIfupdown { - GObject parent; -}; - -struct _SettingsPluginIfupdownClass { - GObjectClass parent; -}; - GType settings_plugin_ifupdown_get_type (void); -#endif /* _PLUGIN_H_ */ +#endif /* _PLUGIN_H_ */ diff --git a/src/settings/plugins/keyfile/plugin.c b/src/settings/plugins/keyfile/plugin.c index c5598fc5b4..40014128ba 100644 --- a/src/settings/plugins/keyfile/plugin.c +++ b/src/settings/plugins/keyfile/plugin.c @@ -21,6 +21,8 @@ #include "nm-default.h" +#include "plugin.h" + #include <sys/stat.h> #include <unistd.h> #include <sys/types.h> @@ -35,19 +37,12 @@ #include "nm-config.h" #include "nm-core-internal.h" -#include "plugin.h" #include "nm-settings-plugin.h" #include "nm-keyfile-connection.h" #include "writer.h" #include "utils.h" -static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); - -G_DEFINE_TYPE_EXTENDED (SettingsPluginKeyfile, settings_plugin_keyfile, G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, - settings_plugin_interface_init)) - -#define SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SETTINGS_TYPE_PLUGIN_KEYFILE, SettingsPluginKeyfilePrivate)) +/*****************************************************************************/ typedef struct { GHashTable *connections; /* uuid::connection */ @@ -59,10 +54,29 @@ typedef struct { NMConfig *config; } SettingsPluginKeyfilePrivate; +struct _SettingsPluginKeyfile { + GObject parent; + SettingsPluginKeyfilePrivate _priv; +}; + +struct _SettingsPluginKeyfileClass { + GObjectClass parent; +}; + +static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface); + +G_DEFINE_TYPE_EXTENDED (SettingsPluginKeyfile, settings_plugin_keyfile, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE (NM_TYPE_SETTINGS_PLUGIN, + settings_plugin_interface_init)) + +#define SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE(self) _NM_GET_PRIVATE (self, SettingsPluginKeyfile, SETTINGS_IS_PLUGIN_KEYFILE) + +/*****************************************************************************/ + static void connection_removed_cb (NMSettingsConnection *obj, gpointer user_data) { - g_hash_table_remove (SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (user_data)->connections, + g_hash_table_remove (SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE ((SettingsPluginKeyfile *) user_data)->connections, nm_connection_get_uuid (NM_CONNECTION (obj))); } @@ -327,7 +341,7 @@ config_changed_cb (NMConfig *config, static void setup_monitoring (NMSettingsPlugin *config) { - SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (config); + SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE ((SettingsPluginKeyfile *) config); GFile *file; GFileMonitor *monitor; @@ -455,12 +469,12 @@ read_connections (NMSettingsPlugin *config) } } -/* Plugin */ +/*****************************************************************************/ static GSList * get_connections (NMSettingsPlugin *config) { - SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (config); + SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE ((SettingsPluginKeyfile *) config); if (!priv->initialized) { setup_monitoring (config); @@ -474,7 +488,7 @@ static gboolean load_connection (NMSettingsPlugin *config, const char *filename) { - SettingsPluginKeyfile *self = SETTINGS_PLUGIN_KEYFILE (config); + SettingsPluginKeyfile *self = SETTINGS_PLUGIN_KEYFILE ((SettingsPluginKeyfile *) config); NMKeyfileConnection *connection; int dir_len = strlen (nm_keyfile_plugin_get_path ()); @@ -516,7 +530,7 @@ add_connection (NMSettingsPlugin *config, static GSList * get_unmanaged_specs (NMSettingsPlugin *config) { - SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (config); + SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE ((SettingsPluginKeyfile *) config); gs_free char *value = NULL; value = nm_config_data_get_value (nm_config_get_data (priv->config), @@ -526,19 +540,11 @@ get_unmanaged_specs (NMSettingsPlugin *config) return nm_match_spec_split (value); } -/* GObject */ - -static void -settings_plugin_keyfile_init (SettingsPluginKeyfile *plugin) -{ - SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (plugin); - - priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); -} +/*****************************************************************************/ static void get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) + GValue *value, GParamSpec *pspec) { switch (prop_id) { case NM_SETTINGS_PLUGIN_PROP_NAME: @@ -556,21 +562,20 @@ get_property (GObject *object, guint prop_id, } } +/*****************************************************************************/ + static void -set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +settings_plugin_keyfile_init (SettingsPluginKeyfile *plugin) { - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (plugin); + + priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); } static void constructed (GObject *object) { - SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (object); + SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE ((SettingsPluginKeyfile *) object); priv->config = g_object_ref (nm_config_get ()); if (nm_config_data_has_value (nm_config_get_data_orig (priv->config), @@ -580,10 +585,16 @@ constructed (GObject *object) nm_log_warn (LOGD_SETTINGS, "keyfile: 'hostname' option is deprecated and has no effect"); } +GObject * +nm_settings_keyfile_plugin_new (void) +{ + return g_object_new (SETTINGS_TYPE_PLUGIN_KEYFILE, NULL); +} + static void dispose (GObject *object) { - SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE (object); + SettingsPluginKeyfilePrivate *priv = SETTINGS_PLUGIN_KEYFILE_GET_PRIVATE ((SettingsPluginKeyfile *) object); if (priv->monitor) { nm_clear_g_signal_handler (priv->monitor, &priv->monitor_id); @@ -610,12 +621,9 @@ settings_plugin_keyfile_class_init (SettingsPluginKeyfileClass *req_class) { GObjectClass *object_class = G_OBJECT_CLASS (req_class); - g_type_class_add_private (req_class, sizeof (SettingsPluginKeyfilePrivate)); - object_class->constructed = constructed; object_class->dispose = dispose; object_class->get_property = get_property; - object_class->set_property = set_property; g_object_class_override_property (object_class, NM_SETTINGS_PLUGIN_PROP_NAME, @@ -633,16 +641,9 @@ settings_plugin_keyfile_class_init (SettingsPluginKeyfileClass *req_class) static void settings_plugin_interface_init (NMSettingsPluginInterface *plugin_iface) { - /* interface implementation */ plugin_iface->get_connections = get_connections; plugin_iface->load_connection = load_connection; plugin_iface->reload_connections = reload_connections; plugin_iface->add_connection = add_connection; plugin_iface->get_unmanaged_specs = get_unmanaged_specs; } - -GObject * -nm_settings_keyfile_plugin_new (void) -{ - return g_object_new (SETTINGS_TYPE_PLUGIN_KEYFILE, NULL); -} diff --git a/src/settings/plugins/keyfile/plugin.h b/src/settings/plugins/keyfile/plugin.h index a22b9c494a..21f41c88d1 100644 --- a/src/settings/plugins/keyfile/plugin.h +++ b/src/settings/plugins/keyfile/plugin.h @@ -19,8 +19,8 @@ * Copyright (C) 2008 - 2011 Red Hat, Inc. */ -#ifndef _PLUGIN_H_ -#define _PLUGIN_H_ +#ifndef __NMKF_PLUGIN_H__ +#define __NMKF_PLUGIN_H__ #define SETTINGS_TYPE_PLUGIN_KEYFILE (settings_plugin_keyfile_get_type ()) #define SETTINGS_PLUGIN_KEYFILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SETTINGS_TYPE_PLUGIN_KEYFILE, SettingsPluginKeyfile)) @@ -29,16 +29,11 @@ #define SETTINGS_IS_PLUGIN_KEYFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SETTINGS_TYPE_PLUGIN_KEYFILE)) #define SETTINGS_PLUGIN_KEYFILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SETTINGS_TYPE_PLUGIN_KEYFILE, SettingsPluginKeyfileClass)) -typedef struct { - GObject parent; -} SettingsPluginKeyfile; - -typedef struct { - GObjectClass parent; -} SettingsPluginKeyfileClass; +typedef struct _SettingsPluginKeyfile SettingsPluginKeyfile; +typedef struct _SettingsPluginKeyfileClass SettingsPluginKeyfileClass; GType settings_plugin_keyfile_get_type (void); GObject *nm_settings_keyfile_plugin_new (void); -#endif /* _PLUGIN_H_ */ +#endif /* __NMKF_PLUGIN_H__ */ diff --git a/src/tests/config/nm-test-device.c b/src/tests/config/nm-test-device.c index 1ae964eef2..33df46c285 100644 --- a/src/tests/config/nm-test-device.c +++ b/src/tests/config/nm-test-device.c @@ -20,16 +20,37 @@ #include "nm-default.h" +#include "nm-test-device.h" + #include <string.h> -#include "nm-test-device.h" #include "nm-device-private.h" #include "nm-utils.h" +/*****************************************************************************/ + +struct _NMTestDevice { + NMDevice parent; +}; + +struct _NMTestDeviceClass { + NMDeviceClass parent; +}; + G_DEFINE_TYPE (NMTestDevice, nm_test_device, NM_TYPE_DEVICE) #define PARENT_CLASS (G_OBJECT_CLASS (g_type_class_peek_parent (nm_test_device_parent_class))) +/*****************************************************************************/ + +static NMDeviceCapabilities +get_generic_capabilities (NMDevice *device) +{ + return NM_DEVICE_CAP_IS_NON_KERNEL; +} + +/*****************************************************************************/ + static void nm_test_device_init (NMTestDevice *self) { @@ -50,10 +71,13 @@ dispose (GObject *object) PARENT_CLASS->dispose (object); } -static NMDeviceCapabilities -get_generic_capabilities (NMDevice *device) +NMDevice * +nm_test_device_new (const char *hwaddr) { - return NM_DEVICE_CAP_IS_NON_KERNEL; + return g_object_new (NM_TYPE_TEST_DEVICE, + NM_DEVICE_IFACE, "dummy", + NM_DEVICE_PERM_HW_ADDRESS, hwaddr, + NULL); } static void @@ -67,12 +91,3 @@ nm_test_device_class_init (NMTestDeviceClass *klass) device_class->get_generic_capabilities = get_generic_capabilities; } - -NMDevice * -nm_test_device_new (const char *hwaddr) -{ - return g_object_new (NM_TYPE_TEST_DEVICE, - NM_DEVICE_IFACE, "dummy", - NM_DEVICE_PERM_HW_ADDRESS, hwaddr, - NULL); -} diff --git a/src/tests/config/nm-test-device.h b/src/tests/config/nm-test-device.h index dfb8ff7813..c200b728f4 100644 --- a/src/tests/config/nm-test-device.h +++ b/src/tests/config/nm-test-device.h @@ -30,14 +30,8 @@ #define NM_IS_TEST_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_TEST_DEVICE)) #define NM_TEST_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_TEST_DEVICE, NMTestDeviceClass)) -typedef struct { - NMDevice parent; - -} NMTestDevice; - -typedef struct { - NMDeviceClass parent; -} NMTestDeviceClass; +typedef struct _NMTestDevice NMTestDevice; +typedef struct _NMTestDeviceClass NMTestDeviceClass; GType nm_test_device_get_type (void); |