summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2015-01-21 16:10:42 +0100
committerJiří Klimeš <jklimes@redhat.com>2015-01-21 18:35:48 +0100
commit1eaaada3651a430694f2e811ad808734825c6f2c (patch)
treecfc4e087b361e7a0b4667a4977a8319d6164032c
parentddfb6ad69bae723968784056deb57318ff3c5d27 (diff)
downloadNetworkManager-1eaaada3651a430694f2e811ad808734825c6f2c.tar.gz
libnm: add VpnConnection IpIface and IpIfindex properties to libnm
-rw-r--r--libnm/libnm.ver2
-rw-r--r--libnm/nm-vpn-connection.c99
-rw-r--r--libnm/nm-vpn-connection.h8
3 files changed, 105 insertions, 4 deletions
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index ff0459d184..6e75995e6f 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -855,4 +855,6 @@ libnm_1_2_0 {
global:
nm_utils_bond_mode_int_to_string;
nm_utils_bond_mode_string_to_int;
+ nm_vpn_connection_get_ip_iface;
+ nm_vpn_connection_get_ip_ifindex;
} libnm_1_0_0;
diff --git a/libnm/nm-vpn-connection.c b/libnm/nm-vpn-connection.c
index f46dc0ca08..c530576e17 100644
--- a/libnm/nm-vpn-connection.c
+++ b/libnm/nm-vpn-connection.c
@@ -16,7 +16,7 @@
* Boston, MA 02110-1301 USA.
*
* Copyright 2007 - 2008 Novell, Inc.
- * Copyright 2007 - 2012 Red Hat, Inc.
+ * Copyright 2007 - 2015 Red Hat, Inc.
*/
#include "config.h"
@@ -37,6 +37,8 @@ G_DEFINE_TYPE (NMVpnConnection, nm_vpn_connection, NM_TYPE_ACTIVE_CONNECTION)
typedef struct {
char *banner;
+ char *ip_iface;
+ guint32 ip_ifindex;
NMVpnConnectionState vpn_state;
} NMVpnConnectionPrivate;
@@ -44,6 +46,8 @@ enum {
PROP_0,
PROP_VPN_STATE,
PROP_BANNER,
+ PROP_IP_IFACE,
+ PROP_IP_IFINDEX,
LAST_PROP
};
@@ -97,6 +101,58 @@ nm_vpn_connection_get_vpn_state (NMVpnConnection *vpn)
return NM_VPN_CONNECTION_GET_PRIVATE (vpn)->vpn_state;
}
+/**
+ * nm_vpn_connection_get_ip_iface:
+ * @vpn: a #NMVpnConnection
+ *
+ * Gets the interface associated with the active #NMVpnConnection.
+ *
+ * Returns: interface used for the VPN connection. This is the internal
+ * string used by the connection, and must not be modified.
+ *
+ * Since: 1.2
+ **/
+const char *
+nm_vpn_connection_get_ip_iface (NMVpnConnection *vpn)
+{
+ NMVpnConnectionPrivate *priv;
+
+ g_return_val_if_fail (NM_IS_VPN_CONNECTION (vpn), NULL);
+
+ priv = NM_VPN_CONNECTION_GET_PRIVATE (vpn);
+
+ if (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED)
+ return NULL;
+
+ return priv->ip_iface;
+}
+
+/**
+ * nm_vpn_connection_get_ip_ifindex:
+ * @vpn: a #NMVpnConnection
+ *
+ * Gets the index of interface associated with the active #NMVpnConnection.
+ *
+ * Returns: interface index used for the VPN connection. This is the internal
+ * string used by the connection, and must not be modified.
+ *
+ * Since: 1.2
+ **/
+guint32
+nm_vpn_connection_get_ip_ifindex (NMVpnConnection *vpn)
+{
+ NMVpnConnectionPrivate *priv;
+
+ g_return_val_if_fail (NM_IS_VPN_CONNECTION (vpn), 0);
+
+ priv = NM_VPN_CONNECTION_GET_PRIVATE (vpn);
+
+ if (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED)
+ return 0;
+
+ return priv->ip_ifindex;
+}
+
static void
vpn_state_changed_proxy (NMDBusVpnConnection *proxy,
guint vpn_state,
@@ -128,8 +184,10 @@ init_dbus (NMObject *object)
{
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (object);
const NMPropertiesInfo property_info[] = {
- { NM_VPN_CONNECTION_BANNER, &priv->banner },
- { NM_VPN_CONNECTION_VPN_STATE, &priv->vpn_state },
+ { NM_VPN_CONNECTION_BANNER, &priv->banner },
+ { NM_VPN_CONNECTION_VPN_STATE, &priv->vpn_state },
+ { NM_VPN_CONNECTION_IP_IFACE, &priv->ip_iface },
+ { NM_VPN_CONNECTION_IP_IFINDEX, &priv->ip_ifindex },
{ NULL },
};
GDBusProxy *proxy;
@@ -151,6 +209,7 @@ finalize (GObject *object)
NMVpnConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (object);
g_free (priv->banner);
+ g_free (priv->ip_iface);
G_OBJECT_CLASS (nm_vpn_connection_parent_class)->finalize (object);
}
@@ -170,6 +229,12 @@ get_property (GObject *object,
case PROP_BANNER:
g_value_set_string (value, nm_vpn_connection_get_banner (self));
break;
+ case PROP_IP_IFACE:
+ g_value_set_string (value, nm_vpn_connection_get_ip_iface (self));
+ break;
+ case PROP_IP_IFINDEX:
+ g_value_set_uint (value, nm_vpn_connection_get_ip_ifindex (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -221,6 +286,34 @@ nm_vpn_connection_class_init (NMVpnConnectionClass *connection_class)
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
+ /**
+ * NMVpnConnection:ip-iface:
+ *
+ * The interface used for the active VPN connection.
+ *
+ * Since: 1.2
+ **/
+ g_object_class_install_property
+ (object_class, PROP_IP_IFACE,
+ g_param_spec_string (NM_VPN_CONNECTION_IP_IFACE, "", "",
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMVpnConnection:ip-ifindex:
+ *
+ * The interface index used for the active VPN connection.
+ *
+ * Since: 1.2
+ **/
+ g_object_class_install_property
+ (object_class, PROP_IP_IFINDEX,
+ g_param_spec_uint (NM_VPN_CONNECTION_IP_IFINDEX, "", "",
+ 0, G_MAXUINT32, 0,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+
/* signals */
signals[VPN_STATE_CHANGED] =
g_signal_new ("vpn-state-changed",
diff --git a/libnm/nm-vpn-connection.h b/libnm/nm-vpn-connection.h
index 349de41ea5..899c954282 100644
--- a/libnm/nm-vpn-connection.h
+++ b/libnm/nm-vpn-connection.h
@@ -16,7 +16,7 @@
* Boston, MA 02110-1301 USA.
*
* Copyright 2007 - 2008 Novell, Inc.
- * Copyright 2007 - 2010 Red Hat, Inc.
+ * Copyright 2007 - 2015 Red Hat, Inc.
*/
#ifndef __NM_VPN_CONNECTION_H__
@@ -40,6 +40,8 @@ G_BEGIN_DECLS
#define NM_VPN_CONNECTION_VPN_STATE "vpn-state"
#define NM_VPN_CONNECTION_BANNER "banner"
+#define NM_VPN_CONNECTION_IP_IFACE "ip-iface"
+#define NM_VPN_CONNECTION_IP_IFINDEX "ip-ifindex"
struct _NMVpnConnection {
NMActiveConnection parent;
@@ -61,6 +63,10 @@ GType nm_vpn_connection_get_type (void);
NMVpnConnectionState nm_vpn_connection_get_vpn_state (NMVpnConnection *vpn);
const char * nm_vpn_connection_get_banner (NMVpnConnection *vpn);
+NM_AVAILABLE_IN_1_2
+const char * nm_vpn_connection_get_ip_iface (NMVpnConnection *vpn);
+NM_AVAILABLE_IN_1_2
+guint32 nm_vpn_connection_get_ip_ifindex (NMVpnConnection *vpn);
G_END_DECLS