diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 26545aa1b..07f820a75 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -35,11 +35,7 @@ #include "nmdbus-ip4-config.h" -G_DEFINE_TYPE (NMIP4Config, nm_ip4_config, NM_TYPE_EXPORTED_OBJECT) - -#define NM_IP4_CONFIG_GET_PRIVATE(o) ((o)->priv) - -typedef struct _NMIP4ConfigPrivate { +typedef struct { gboolean never_default; guint32 gateway; gboolean has_gateway; @@ -60,6 +56,25 @@ typedef struct _NMIP4ConfigPrivate { gboolean metered; } NMIP4ConfigPrivate; +struct _NMIP4Config { + NMExportedObject parent; + NMIP4ConfigPrivate _priv; +}; + +struct _NMIP4ConfigClass { + NMExportedObjectClass parent; +}; + +G_DEFINE_TYPE (NMIP4Config, nm_ip4_config, NM_TYPE_EXPORTED_OBJECT) + +#define NM_IP4_CONFIG_GET_PRIVATE(o) \ + ({ \ + const NMIP4ConfigPrivate *_priv = &(o)->_priv; \ + \ + /* cast away the const. */ \ + ((NMIP4ConfigPrivate *) _priv); \ + }) + /* internal guint32 are assigned to gobject properties of type uint. Ensure, that uint is large enough */ G_STATIC_ASSERT (sizeof (uint) >= sizeof (guint32)); G_STATIC_ASSERT (G_MAXUINT >= 0xFFFFFFFF); @@ -2199,10 +2214,7 @@ nm_ip4_config_equal (const NMIP4Config *a, const NMIP4Config *b) static void nm_ip4_config_init (NMIP4Config *config) { - NMIP4ConfigPrivate *priv; - - priv = G_TYPE_INSTANCE_GET_PRIVATE (config, NM_TYPE_IP4_CONFIG, NMIP4ConfigPrivate); - config->priv = priv; + NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (config); priv->addresses = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Address)); priv->routes = g_array_new (FALSE, FALSE, sizeof (NMPlatformIP4Route)); @@ -2424,8 +2436,6 @@ nm_ip4_config_class_init (NMIP4ConfigClass *config_class) GObjectClass *object_class = G_OBJECT_CLASS (config_class); NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (config_class); - g_type_class_add_private (config_class, sizeof (NMIP4ConfigPrivate)); - exported_object_class->export_path = NM_DBUS_PATH "/IP4Config/%u"; object_class->get_property = get_property; diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h index b1a576874..6eb1aed8b 100644 --- a/src/nm-ip4-config.h +++ b/src/nm-ip4-config.h @@ -31,18 +31,7 @@ #define NM_IS_IP4_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_IP4_CONFIG)) #define NM_IP4_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IP4_CONFIG, NMIP4ConfigClass)) -struct _NMIP4ConfigPrivate; - -struct _NMIP4Config { - NMExportedObject parent; - - /* private */ - struct _NMIP4ConfigPrivate *priv; -}; - -typedef struct { - NMExportedObjectClass parent; -} NMIP4ConfigClass; +typedef struct _NMIP4ConfigClass NMIP4ConfigClass; /* internal */ #define NM_IP4_CONFIG_IFINDEX "ifindex" diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 790f684cd..ed33bdb36 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -34,11 +34,7 @@ #include "nmdbus-ip6-config.h" -G_DEFINE_TYPE (NMIP6Config, nm_ip6_config, NM_TYPE_EXPORTED_OBJECT) - -#define NM_IP6_CONFIG_GET_PRIVATE(o) ((o)->priv) - -typedef struct _NMIP6ConfigPrivate { +typedef struct { gboolean never_default; struct in6_addr gateway; GArray *addresses; @@ -52,6 +48,24 @@ typedef struct _NMIP6ConfigPrivate { gint64 route_metric; } NMIP6ConfigPrivate; +struct _NMIP6Config { + NMExportedObject parent; + NMIP6ConfigPrivate _priv; +}; + +struct _NMIP6ConfigClass { + NMExportedObjectClass parent; +}; + +G_DEFINE_TYPE (NMIP6Config, nm_ip6_config, NM_TYPE_EXPORTED_OBJECT) + +#define NM_IP6_CONFIG_GET_PRIVATE(o) \ + ({ \ + const NMIP6ConfigPrivate *_priv = &(o)->_priv; \ + \ + /* cast away the const. */ \ + ((NMIP6ConfigPrivate *) _priv); \ + }) NM_GOBJECT_PROPERTIES_DEFINE (NMIP6Config, PROP_IFINDEX, @@ -1887,10 +1901,7 @@ nm_ip6_config_equal (const NMIP6Config *a, const NMIP6Config *b) static void nm_ip6_config_init (NMIP6Config *config) { - NMIP6ConfigPrivate *priv; - - priv = G_TYPE_INSTANCE_GET_PRIVATE (config, NM_TYPE_IP6_CONFIG, NMIP6ConfigPrivate); - config->priv = priv; + NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config); priv->addresses = g_array_new (FALSE, TRUE, sizeof (NMPlatformIP6Address)); priv->routes = g_array_new (FALSE, TRUE, sizeof (NMPlatformIP6Route)); @@ -2110,8 +2121,6 @@ nm_ip6_config_class_init (NMIP6ConfigClass *config_class) GObjectClass *object_class = G_OBJECT_CLASS (config_class); NMExportedObjectClass *exported_object_class = NM_EXPORTED_OBJECT_CLASS (config_class); - g_type_class_add_private (config_class, sizeof (NMIP6ConfigPrivate)); - exported_object_class->export_path = NM_DBUS_PATH "/IP6Config/%u"; /* virtual methods */ diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h index 5e66d500e..85b75db0e 100644 --- a/src/nm-ip6-config.h +++ b/src/nm-ip6-config.h @@ -33,18 +33,7 @@ #define NM_IS_IP6_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_IP6_CONFIG)) #define NM_IP6_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_IP6_CONFIG, NMIP6ConfigClass)) -struct _NMIP6ConfigPrivate; - -struct _NMIP6Config { - NMExportedObject parent; - - /* private */ - struct _NMIP6ConfigPrivate *priv; -}; - -typedef struct { - NMExportedObjectClass parent; -} NMIP6ConfigClass; +typedef struct _NMIP6ConfigClass NMIP6ConfigClass; /* internal */ #define NM_IP6_CONFIG_IFINDEX "ifindex"