core: refactor private data for NMExportedObject and others
This commit is contained in:
@@ -90,13 +90,26 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE (
|
||||
PROP_FD_MNT,
|
||||
);
|
||||
|
||||
typedef struct _NMPNetnsPrivate NMPNetnsPrivate;
|
||||
|
||||
struct _NMPNetnsPrivate {
|
||||
typedef struct {
|
||||
int fd_net;
|
||||
int fd_mnt;
|
||||
} NMPNetnsPrivate;
|
||||
|
||||
struct _NMPNetns {
|
||||
GObject parent;
|
||||
NMPNetnsPrivate _priv;
|
||||
};
|
||||
|
||||
struct _NMPNetnsClass {
|
||||
GObjectClass parent;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (NMPNetns, nmp_netns, G_TYPE_OBJECT);
|
||||
|
||||
#define NMP_NETNS_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMPNetns, NMP_IS_NETNS)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
NMPNetns *netns;
|
||||
int count;
|
||||
@@ -264,12 +277,6 @@ _stack_size (void)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
G_DEFINE_TYPE (NMPNetns, nmp_netns, G_TYPE_OBJECT);
|
||||
|
||||
#define NMP_NETNS_GET_PRIVATE(o) ((o)->priv)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static NMPNetns *
|
||||
_netns_new (GError **error)
|
||||
{
|
||||
@@ -311,10 +318,11 @@ _setns (NMPNetns *self, int type)
|
||||
{
|
||||
char buf[100];
|
||||
int fd;
|
||||
NMPNetnsPrivate *priv = NMP_NETNS_GET_PRIVATE (self);
|
||||
|
||||
nm_assert (NM_IN_SET (type, _CLONE_NS_ALL_V));
|
||||
|
||||
fd = (type == CLONE_NEWNET) ? self->priv->fd_net : self->priv->fd_mnt;
|
||||
fd = (type == CLONE_NEWNET) ? priv->fd_net : priv->fd_mnt;
|
||||
|
||||
_LOGt (self, "set netns(%s, %d)", _ns_types_to_str (type, 0, buf), fd);
|
||||
|
||||
@@ -397,7 +405,7 @@ nmp_netns_get_fd_net (NMPNetns *self)
|
||||
{
|
||||
g_return_val_if_fail (NMP_IS_NETNS (self), 0);
|
||||
|
||||
return self->priv->fd_net;
|
||||
return NMP_NETNS_GET_PRIVATE (self)->fd_net;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -405,7 +413,7 @@ nmp_netns_get_fd_mnt (NMPNetns *self)
|
||||
{
|
||||
g_return_val_if_fail (NMP_IS_NETNS (self), 0);
|
||||
|
||||
return self->priv->fd_mnt;
|
||||
return NMP_NETNS_GET_PRIVATE (self)->fd_mnt;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
@@ -664,17 +672,18 @@ set_property (GObject *object, guint prop_id,
|
||||
const GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
NMPNetns *self = NMP_NETNS (object);
|
||||
NMPNetnsPrivate *priv = NMP_NETNS_GET_PRIVATE (self);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_FD_NET:
|
||||
/* construct only */
|
||||
self->priv->fd_net = g_value_get_int (value);
|
||||
g_return_if_fail (self->priv->fd_net > 0);
|
||||
priv->fd_net = g_value_get_int (value);
|
||||
g_return_if_fail (priv->fd_net > 0);
|
||||
break;
|
||||
case PROP_FD_MNT:
|
||||
/* construct only */
|
||||
self->priv->fd_mnt = g_value_get_int (value);
|
||||
g_return_if_fail (self->priv->fd_mnt > 0);
|
||||
priv->fd_mnt = g_value_get_int (value);
|
||||
g_return_if_fail (priv->fd_mnt > 0);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
@@ -685,22 +694,22 @@ set_property (GObject *object, guint prop_id,
|
||||
static void
|
||||
nmp_netns_init (NMPNetns *self)
|
||||
{
|
||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NMP_TYPE_NETNS, NMPNetnsPrivate);
|
||||
}
|
||||
|
||||
static void
|
||||
dispose (GObject *object)
|
||||
{
|
||||
NMPNetns *self = NMP_NETNS (object);
|
||||
NMPNetnsPrivate *priv = NMP_NETNS_GET_PRIVATE (self);
|
||||
|
||||
if (self->priv->fd_net > 0) {
|
||||
close (self->priv->fd_net);
|
||||
self->priv->fd_net = 0;
|
||||
if (priv->fd_net > 0) {
|
||||
close (priv->fd_net);
|
||||
priv->fd_net = 0;
|
||||
}
|
||||
|
||||
if (self->priv->fd_mnt > 0) {
|
||||
close (self->priv->fd_mnt);
|
||||
self->priv->fd_mnt = 0;
|
||||
if (priv->fd_mnt > 0) {
|
||||
close (priv->fd_mnt);
|
||||
priv->fd_mnt = 0;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (nmp_netns_parent_class)->dispose (object);
|
||||
@@ -711,8 +720,6 @@ nmp_netns_class_init (NMPNetnsClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (klass, sizeof (NMPNetnsPrivate));
|
||||
|
||||
object_class->set_property = set_property;
|
||||
object_class->dispose = dispose;
|
||||
|
||||
|
Reference in New Issue
Block a user