vpn: embed private data in NMVpnConnection structure

(cherry picked from commit d52195475b)
This commit is contained in:
Thomas Haller 2016-08-19 14:55:58 +02:00
parent 02980bed49
commit 907b5a597e
2 changed files with 58 additions and 45 deletions

View file

@ -50,8 +50,6 @@
#include "nmdbus-vpn-connection.h"
G_DEFINE_TYPE (NMVpnConnection, nm_vpn_connection, NM_TYPE_ACTIVE_CONNECTION)
typedef enum {
/* Only system secrets */
SECRETS_REQ_SYSTEM = 0,
@ -80,6 +78,27 @@ typedef enum {
STATE_FAILED,
} VpnState;
enum {
VPN_STATE_CHANGED,
INTERNAL_STATE_CHANGED,
INTERNAL_RETRY_AFTER_FAILURE,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL] = { 0 };
enum {
PROP_0,
PROP_VPN_STATE,
PROP_BANNER,
PROP_IP4_CONFIG,
PROP_IP6_CONFIG,
PROP_MASTER = 2000,
LAST_PROP
};
typedef struct {
gboolean service_can_persist;
gboolean connection_can_persist;
@ -128,29 +147,45 @@ typedef struct {
guint32 mtu;
} NMVpnConnectionPrivate;
#define NM_VPN_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_VPN_CONNECTION, NMVpnConnectionPrivate))
enum {
VPN_STATE_CHANGED,
INTERNAL_STATE_CHANGED,
INTERNAL_RETRY_AFTER_FAILURE,
LAST_SIGNAL
struct _NMVpnConnection {
NMActiveConnection parent;
NMVpnConnectionPrivate _priv;
};
static guint signals[LAST_SIGNAL] = { 0 };
struct _NMVpnConnectionClass {
NMActiveConnectionClass parent;
enum {
PROP_0,
PROP_VPN_STATE,
PROP_BANNER,
PROP_IP4_CONFIG,
PROP_IP6_CONFIG,
PROP_MASTER = 2000,
/* Signals */
void (*vpn_state_changed) (NMVpnConnection *self,
NMVpnConnectionState new_state,
NMVpnConnectionStateReason reason);
LAST_PROP
/* not exported over D-Bus */
void (*internal_state_changed) (NMVpnConnection *self,
NMVpnConnectionState new_state,
NMVpnConnectionState old_state,
NMVpnConnectionStateReason reason);
void (*internal_failed_retry) (NMVpnConnection *self);
};
G_DEFINE_TYPE (NMVpnConnection, nm_vpn_connection, NM_TYPE_ACTIVE_CONNECTION)
#define NM_VPN_CONNECTION_GET_PRIVATE(self) \
({ \
/* preserve the const-ness of self. Unfortunately, that
* way, @self cannot be a void pointer */ \
typeof (self) _self = (self); \
\
/* Get compiler error if variable is of wrong type */ \
_nm_unused const NMVpnConnection *_self2 = (_self); \
\
nm_assert (NM_IS_VPN_CONNECTION (_self)); \
&_self->_priv; \
})
/*****************************************************************************/
static NMSettingsConnection *_get_settings_connection (NMVpnConnection *self,
gboolean allow_missing);
@ -2504,7 +2539,7 @@ device_changed (NMActiveConnection *active,
NMDevice *new_device,
NMDevice *old_device)
{
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (active);
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE ((NMVpnConnection *) active);
if (!_service_and_connection_can_persist (NM_VPN_CONNECTION (active)))
return;
@ -2577,7 +2612,7 @@ dispose (GObject *object)
static void
finalize (GObject *object)
{
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (object);
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE ((NMVpnConnection *) object);
g_free (priv->banner);
g_free (priv->ip_iface);
@ -2598,7 +2633,7 @@ static void
get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (object);
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE ((NMVpnConnection *) object);
NMDevice *parent_dev;
switch (prop_id) {
@ -2630,8 +2665,6 @@ nm_vpn_connection_class_init (NMVpnConnectionClass *connection_class)
GObjectClass *object_class = G_OBJECT_CLASS (connection_class);
NMActiveConnectionClass *active_class = NM_ACTIVE_CONNECTION_CLASS (connection_class);
g_type_class_add_private (connection_class, sizeof (NMVpnConnectionPrivate));
/* virtual methods */
object_class->get_property = get_property;
object_class->dispose = dispose;

View file

@ -47,27 +47,7 @@
#define NM_VPN_ROUTE_METRIC_DEFAULT 50
struct _NMVpnConnection {
NMActiveConnection parent;
};
typedef struct {
NMActiveConnectionClass parent;
/* Signals */
void (*vpn_state_changed) (NMVpnConnection *self,
NMVpnConnectionState new_state,
NMVpnConnectionStateReason reason);
/* not exported over D-Bus */
void (*internal_state_changed) (NMVpnConnection *self,
NMVpnConnectionState new_state,
NMVpnConnectionState old_state,
NMVpnConnectionStateReason reason);
void (*internal_failed_retry) (NMVpnConnection *self);
} NMVpnConnectionClass;
typedef struct _NMVpnConnectionClass NMVpnConnectionClass;
GType nm_vpn_connection_get_type (void);