core/cli: display proper information for active VPN connections (rh #1036132)
This commit is contained in:
parent
c5f0e5fcd8
commit
7fa9195ebf
@ -19,7 +19,7 @@ Name: NetworkManager
|
|||||||
Summary: Network connection manager and user applications
|
Summary: Network connection manager and user applications
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 0.9.9.0
|
Version: 0.9.9.0
|
||||||
Release: 23%{snapshot}%{?dist}
|
Release: 24%{snapshot}%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.gnome.org/projects/NetworkManager/
|
URL: http://www.gnome.org/projects/NetworkManager/
|
||||||
@ -50,6 +50,9 @@ Patch20: rh1029213-ignore-RA-default-routes.patch
|
|||||||
Patch21: rh1032819-set-broadcast-address.patch
|
Patch21: rh1032819-set-broadcast-address.patch
|
||||||
Patch22: rh1044757-ipv6-solicit-infinity.patch
|
Patch22: rh1044757-ipv6-solicit-infinity.patch
|
||||||
Patch23: rh1048711-bluez-crash.patch
|
Patch23: rh1048711-bluez-crash.patch
|
||||||
|
Patch24: vpn-connection-states.patch
|
||||||
|
Patch25: nmcli-group-dot-field.patch
|
||||||
|
Patch26: rh1036132-VPN-active-con-info.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
@ -196,6 +199,9 @@ deployments.
|
|||||||
%patch21 -p1 -b .broadcast-addr
|
%patch21 -p1 -b .broadcast-addr
|
||||||
%patch22 -p1 -b .ipv6-solicit-infinity
|
%patch22 -p1 -b .ipv6-solicit-infinity
|
||||||
%patch23 -p1 -b .bluez-crash
|
%patch23 -p1 -b .bluez-crash
|
||||||
|
%patch24 -p1 -b .vpn-connection-states
|
||||||
|
%patch25 -p1 -b .nmcli-group-dot-field
|
||||||
|
%patch26 -p1 -b .VPN-active-con-info
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
@ -394,6 +400,11 @@ fi
|
|||||||
%config %{_sysconfdir}/%{name}/conf.d/00-server.conf
|
%config %{_sysconfdir}/%{name}/conf.d/00-server.conf
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 14 2014 Jiří Klimeš <jklimes@redhat.com> - 0.9.9.0-24.git20131003
|
||||||
|
- vpn: fix logging connection states
|
||||||
|
- core/cli: display proper information for active VPN connections (rh #1036132)
|
||||||
|
- cli: allow '--fields group.field' syntax
|
||||||
|
|
||||||
* Mon Jan 6 2014 Dan Winship <danw@redhat.com> - 0.9.9.0-23.git20131003
|
* Mon Jan 6 2014 Dan Winship <danw@redhat.com> - 0.9.9.0-23.git20131003
|
||||||
- bluez-manager: fix a crash (rh #1048711)
|
- bluez-manager: fix a crash (rh #1048711)
|
||||||
|
|
||||||
|
2260
nmcli-group-dot-field.patch
Normal file
2260
nmcli-group-dot-field.patch
Normal file
File diff suppressed because it is too large
Load Diff
943
rh1036132-VPN-active-con-info.patch
Normal file
943
rh1036132-VPN-active-con-info.patch
Normal file
@ -0,0 +1,943 @@
|
|||||||
|
From fe2fb7137c2fec59222db890d516a81a16cc0a60 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dan Winship <danw@gnome.org>
|
||||||
|
Date: Thu, 19 Dec 2013 09:11:20 -0500
|
||||||
|
Subject: [PATCH 1/4] introspection: wrap long lines in
|
||||||
|
nm-active-connection.xml
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
||||||
|
---
|
||||||
|
introspection/nm-active-connection.xml | 31 ++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 24 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/introspection/nm-active-connection.xml b/introspection/nm-active-connection.xml
|
||||||
|
index b6a3c48..d77f0d0 100644
|
||||||
|
--- a/introspection/nm-active-connection.xml
|
||||||
|
+++ b/introspection/nm-active-connection.xml
|
||||||
|
@@ -11,7 +11,9 @@
|
||||||
|
</tp:docstring>
|
||||||
|
|
||||||
|
<property name="Connection" type="o" access="read">
|
||||||
|
- <tp:docstring>The path of the connection.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ The path of the connection.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="SpecificObject" type="o" access="read">
|
||||||
|
<tp:docstring>
|
||||||
|
@@ -27,22 +29,37 @@
|
||||||
|
</tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="Devices" type="ao" access="read">
|
||||||
|
- <tp:docstring>Array of object paths representing devices which are part of this active connection.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Array of object paths representing devices which are part of this active
|
||||||
|
+ connection.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="State" type="u" access="read" tp:type="NM_ACTIVE_CONNECTION_STATE">
|
||||||
|
- <tp:docstring>The state of this active connection.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ The state of this active connection.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="Default" type="b" access="read">
|
||||||
|
- <tp:docstring>Whether this active connection is the default IPv4 connection, i.e. whether it currently owns the default IPv4 route.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Whether this active connection is the default IPv4 connection, i.e.
|
||||||
|
+ whether it currently owns the default IPv4 route.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="Default6" type="b" access="read">
|
||||||
|
- <tp:docstring>Whether this active connection is the default IPv6 connection, i.e. whether it currently owns the default IPv6 route.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Whether this active connection is the default IPv6 connection, i.e.
|
||||||
|
+ whether it currently owns the default IPv6 route.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="Vpn" type="b" access="read">
|
||||||
|
- <tp:docstring>Whether this active connection is also a VPN connection.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Whether this active connection is also a VPN connection.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
<property name="Master" type="o" access="read">
|
||||||
|
- <tp:docstring>The path to the master device if the connection is a slave.</tp:docstring>
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ The path to the master device if the connection is a slave.
|
||||||
|
+ </tp:docstring>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<signal name="PropertiesChanged">
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
||||||
|
|
||||||
|
From f642e88afd2bf585036ca8af54c81976cd2f259b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dan Winship <danw@gnome.org>
|
||||||
|
Date: Wed, 18 Dec 2013 08:46:43 -0500
|
||||||
|
Subject: [PATCH 2/4] core: add IP/DHCP config properties to
|
||||||
|
o.fd.NM.Connection.Active
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Add IP and DHCP config properties to the D-Bus ActiveConnection
|
||||||
|
objects.
|
||||||
|
|
||||||
|
For device connections, this is redundant with the properties already
|
||||||
|
on the Device object, but for VPN connections, this information was
|
||||||
|
not previously available.
|
||||||
|
|
||||||
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
||||||
|
---
|
||||||
|
introspection/nm-active-connection.xml | 30 ++++++++++++++
|
||||||
|
src/nm-activation-request.c | 71 ++++++++++++++++++++++++++++++++++
|
||||||
|
src/nm-active-connection.c | 53 +++++++++++++++++++++++++
|
||||||
|
src/nm-active-connection.h | 4 ++
|
||||||
|
src/vpn-manager/nm-vpn-connection.c | 23 +++++++++++
|
||||||
|
5 files changed, 181 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/introspection/nm-active-connection.xml b/introspection/nm-active-connection.xml
|
||||||
|
index d77f0d0..56a1013 100644
|
||||||
|
--- a/introspection/nm-active-connection.xml
|
||||||
|
+++ b/introspection/nm-active-connection.xml
|
||||||
|
@@ -45,12 +45,42 @@
|
||||||
|
whether it currently owns the default IPv4 route.
|
||||||
|
</tp:docstring>
|
||||||
|
</property>
|
||||||
|
+ <property name="Ip4Config" type="o" access="read">
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Object path of the Ip4Config object describing the configuration of the
|
||||||
|
+ connection. Only valid when the connection is in the
|
||||||
|
+ NM_ACTIVE_CONNECTION_STATE_ACTIVATED state.
|
||||||
|
+ </tp:docstring>
|
||||||
|
+ </property>
|
||||||
|
+ <property name="Dhcp4Config" type="o" access="read">
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Object path of the Dhcp4Config object describing the DHCP options
|
||||||
|
+ returned by the DHCP server (assuming the connection used DHCP). Only
|
||||||
|
+ valid when the connection is in the NM_ACTIVE_CONNECTION_STATE_ACTIVATED
|
||||||
|
+ state.
|
||||||
|
+ </tp:docstring>
|
||||||
|
+ </property>
|
||||||
|
<property name="Default6" type="b" access="read">
|
||||||
|
<tp:docstring>
|
||||||
|
Whether this active connection is the default IPv6 connection, i.e.
|
||||||
|
whether it currently owns the default IPv6 route.
|
||||||
|
</tp:docstring>
|
||||||
|
</property>
|
||||||
|
+ <property name="Ip6Config" type="o" access="read">
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Object path of the Ip6Config object describing the configuration of the
|
||||||
|
+ connection. Only valid when the connection is in the
|
||||||
|
+ NM_ACTIVE_CONNECTION_STATE_ACTIVATED state.
|
||||||
|
+ </tp:docstring>
|
||||||
|
+ </property>
|
||||||
|
+ <property name="Dhcp6Config" type="o" access="read">
|
||||||
|
+ <tp:docstring>
|
||||||
|
+ Object path of the Dhcp6Config object describing the DHCP options
|
||||||
|
+ returned by the DHCP server (assuming the connection used DHCP). Only
|
||||||
|
+ valid when the connection is in the NM_ACTIVE_CONNECTION_STATE_ACTIVATED
|
||||||
|
+ state.
|
||||||
|
+ </tp:docstring>
|
||||||
|
+ </property>
|
||||||
|
<property name="Vpn" type="b" access="read">
|
||||||
|
<tp:docstring>
|
||||||
|
Whether this active connection is also a VPN connection.
|
||||||
|
diff --git a/src/nm-activation-request.c b/src/nm-activation-request.c
|
||||||
|
index 0f3c91e..5fa0fc3 100644
|
||||||
|
--- a/src/nm-activation-request.c
|
||||||
|
+++ b/src/nm-activation-request.c
|
||||||
|
@@ -56,6 +56,16 @@ typedef struct {
|
||||||
|
GSList *share_rules;
|
||||||
|
} NMActRequestPrivate;
|
||||||
|
|
||||||
|
+enum {
|
||||||
|
+ PROP_0,
|
||||||
|
+ PROP_IP4_CONFIG,
|
||||||
|
+ PROP_DHCP4_CONFIG,
|
||||||
|
+ PROP_IP6_CONFIG,
|
||||||
|
+ PROP_DHCP6_CONFIG,
|
||||||
|
+
|
||||||
|
+ LAST_PROP
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/*******************************************************************/
|
||||||
|
|
||||||
|
NMConnection *
|
||||||
|
@@ -282,6 +292,14 @@ nm_act_request_add_share_rule (NMActRequest *req,
|
||||||
|
/********************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
+device_notify (GObject *object,
|
||||||
|
+ GParamSpec *pspec,
|
||||||
|
+ gpointer self)
|
||||||
|
+{
|
||||||
|
+ g_object_notify (self, pspec->name);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
device_state_changed (NMDevice *device, GParamSpec *pspec, NMActRequest *self)
|
||||||
|
{
|
||||||
|
NMActRequestPrivate *priv = NM_ACT_REQUEST_GET_PRIVATE (self);
|
||||||
|
@@ -301,6 +319,15 @@ device_state_changed (NMActiveConnection *active,
|
||||||
|
break;
|
||||||
|
case NM_DEVICE_STATE_ACTIVATED:
|
||||||
|
ac_state = NM_ACTIVE_CONNECTION_STATE_ACTIVATED;
|
||||||
|
+
|
||||||
|
+ g_signal_connect (device, "notify::" NM_DEVICE_IP4_CONFIG,
|
||||||
|
+ G_CALLBACK (device_notify), NM_ACTIVE_CONNECTION (self));
|
||||||
|
+ g_signal_connect (device, "notify::" NM_DEVICE_DHCP4_CONFIG,
|
||||||
|
+ G_CALLBACK (device_notify), NM_ACTIVE_CONNECTION (self));
|
||||||
|
+ g_signal_connect (device, "notify::" NM_DEVICE_IP6_CONFIG,
|
||||||
|
+ G_CALLBACK (device_notify), NM_ACTIVE_CONNECTION (self));
|
||||||
|
+ g_signal_connect (device, "notify::" NM_DEVICE_DHCP6_CONFIG,
|
||||||
|
+ G_CALLBACK (device_notify), NM_ACTIVE_CONNECTION (self));
|
||||||
|
break;
|
||||||
|
case NM_DEVICE_STATE_DEACTIVATING:
|
||||||
|
ac_state = NM_ACTIVE_CONNECTION_STATE_DEACTIVATING;
|
||||||
|
@@ -310,6 +337,8 @@ device_state_changed (NMActiveConnection *active,
|
||||||
|
case NM_DEVICE_STATE_UNAVAILABLE:
|
||||||
|
ac_state = NM_ACTIVE_CONNECTION_STATE_DEACTIVATED;
|
||||||
|
|
||||||
|
+ g_signal_handlers_disconnect_by_func (device, G_CALLBACK (device_notify), NM_ACTIVE_CONNECTION (self));
|
||||||
|
+
|
||||||
|
/* No longer need to pay attention to device state */
|
||||||
|
if (priv->device && priv->device_state_id) {
|
||||||
|
g_signal_handler_disconnect (priv->device, priv->device_state_id);
|
||||||
|
@@ -414,6 +443,37 @@ dispose (GObject *object)
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
+get_property (GObject *object, guint prop_id,
|
||||||
|
+ GValue *value, GParamSpec *pspec)
|
||||||
|
+{
|
||||||
|
+ NMDevice *device;
|
||||||
|
+
|
||||||
|
+ device = nm_active_connection_get_device (NM_ACTIVE_CONNECTION (object));
|
||||||
|
+ if (!device) {
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ switch (prop_id) {
|
||||||
|
+ case PROP_IP4_CONFIG:
|
||||||
|
+ g_object_get_property (G_OBJECT (device), NM_DEVICE_IP4_CONFIG, value);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_DHCP4_CONFIG:
|
||||||
|
+ g_object_get_property (G_OBJECT (device), NM_DEVICE_DHCP4_CONFIG, value);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_IP6_CONFIG:
|
||||||
|
+ g_object_get_property (G_OBJECT (device), NM_DEVICE_IP6_CONFIG, value);
|
||||||
|
+ break;
|
||||||
|
+ case PROP_DHCP6_CONFIG:
|
||||||
|
+ g_object_get_property (G_OBJECT (device), NM_DEVICE_DHCP6_CONFIG, value);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
nm_act_request_class_init (NMActRequestClass *req_class)
|
||||||
|
{
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (req_class);
|
||||||
|
@@ -423,5 +483,16 @@ nm_act_request_class_init (NMActRequestClass *req_class)
|
||||||
|
/* virtual methods */
|
||||||
|
object_class->constructed = constructed;
|
||||||
|
object_class->dispose = dispose;
|
||||||
|
+ object_class->get_property = get_property;
|
||||||
|
+
|
||||||
|
+ /* properties */
|
||||||
|
+ g_object_class_override_property (object_class, PROP_IP4_CONFIG,
|
||||||
|
+ NM_ACTIVE_CONNECTION_IP4_CONFIG);
|
||||||
|
+ g_object_class_override_property (object_class, PROP_DHCP4_CONFIG,
|
||||||
|
+ NM_ACTIVE_CONNECTION_DHCP4_CONFIG);
|
||||||
|
+ g_object_class_override_property (object_class, PROP_IP6_CONFIG,
|
||||||
|
+ NM_ACTIVE_CONNECTION_IP6_CONFIG);
|
||||||
|
+ g_object_class_override_property (object_class, PROP_DHCP6_CONFIG,
|
||||||
|
+ NM_ACTIVE_CONNECTION_DHCP6_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/nm-active-connection.c b/src/nm-active-connection.c
|
||||||
|
index a8a422c..3631470 100644
|
||||||
|
--- a/src/nm-active-connection.c
|
||||||
|
+++ b/src/nm-active-connection.c
|
||||||
|
@@ -74,7 +74,11 @@ enum {
|
||||||
|
PROP_DEVICES,
|
||||||
|
PROP_STATE,
|
||||||
|
PROP_DEFAULT,
|
||||||
|
+ PROP_IP4_CONFIG,
|
||||||
|
+ PROP_DHCP4_CONFIG,
|
||||||
|
PROP_DEFAULT6,
|
||||||
|
+ PROP_IP6_CONFIG,
|
||||||
|
+ PROP_DHCP6_CONFIG,
|
||||||
|
PROP_VPN,
|
||||||
|
PROP_MASTER,
|
||||||
|
|
||||||
|
@@ -152,6 +156,14 @@ nm_active_connection_set_state (NMActiveConnection *self,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if ( new_state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED
|
||||||
|
+ || old_state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED) {
|
||||||
|
+ g_object_notify (G_OBJECT (self), NM_ACTIVE_CONNECTION_IP4_CONFIG);
|
||||||
|
+ g_object_notify (G_OBJECT (self), NM_ACTIVE_CONNECTION_DHCP4_CONFIG);
|
||||||
|
+ g_object_notify (G_OBJECT (self), NM_ACTIVE_CONNECTION_IP6_CONFIG);
|
||||||
|
+ g_object_notify (G_OBJECT (self), NM_ACTIVE_CONNECTION_DHCP6_CONFIG);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (priv->state == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED) {
|
||||||
|
/* Device is no longer relevant when deactivated */
|
||||||
|
g_clear_object (&priv->device);
|
||||||
|
@@ -712,9 +724,22 @@ get_property (GObject *object, guint prop_id,
|
||||||
|
case PROP_DEFAULT:
|
||||||
|
g_value_set_boolean (value, priv->is_default);
|
||||||
|
break;
|
||||||
|
+ case PROP_IP4_CONFIG:
|
||||||
|
+ /* The IP and DHCP config properties may be overridden by a subclass */
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ break;
|
||||||
|
+ case PROP_DHCP4_CONFIG:
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ break;
|
||||||
|
case PROP_DEFAULT6:
|
||||||
|
g_value_set_boolean (value, priv->is_default6);
|
||||||
|
break;
|
||||||
|
+ case PROP_IP6_CONFIG:
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ break;
|
||||||
|
+ case PROP_DHCP6_CONFIG:
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ break;
|
||||||
|
case PROP_VPN:
|
||||||
|
g_value_set_boolean (value, priv->vpn);
|
||||||
|
break;
|
||||||
|
@@ -838,6 +863,20 @@ nm_active_connection_class_init (NMActiveConnectionClass *ac_class)
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
|
+ g_object_class_install_property (object_class, PROP_IP4_CONFIG,
|
||||||
|
+ g_param_spec_boxed (NM_ACTIVE_CONNECTION_IP4_CONFIG,
|
||||||
|
+ "IP4 Config",
|
||||||
|
+ "IP4 Config",
|
||||||
|
+ DBUS_TYPE_G_OBJECT_PATH,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
+ g_object_class_install_property (object_class, PROP_DHCP4_CONFIG,
|
||||||
|
+ g_param_spec_boxed (NM_ACTIVE_CONNECTION_DHCP4_CONFIG,
|
||||||
|
+ "DHCP4 Config",
|
||||||
|
+ "DHCP4 Config",
|
||||||
|
+ DBUS_TYPE_G_OBJECT_PATH,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
g_object_class_install_property (object_class, PROP_DEFAULT6,
|
||||||
|
g_param_spec_boolean (NM_ACTIVE_CONNECTION_DEFAULT6,
|
||||||
|
"Default6",
|
||||||
|
@@ -845,6 +884,20 @@ nm_active_connection_class_init (NMActiveConnectionClass *ac_class)
|
||||||
|
FALSE,
|
||||||
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
|
+ g_object_class_install_property (object_class, PROP_IP6_CONFIG,
|
||||||
|
+ g_param_spec_boxed (NM_ACTIVE_CONNECTION_IP6_CONFIG,
|
||||||
|
+ "IP6 Config",
|
||||||
|
+ "IP6 Config",
|
||||||
|
+ DBUS_TYPE_G_OBJECT_PATH,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
+ g_object_class_install_property (object_class, PROP_DHCP6_CONFIG,
|
||||||
|
+ g_param_spec_boxed (NM_ACTIVE_CONNECTION_DHCP6_CONFIG,
|
||||||
|
+ "DHCP6 Config",
|
||||||
|
+ "DHCP6 Config",
|
||||||
|
+ DBUS_TYPE_G_OBJECT_PATH,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
g_object_class_install_property (object_class, PROP_VPN,
|
||||||
|
g_param_spec_boolean (NM_ACTIVE_CONNECTION_VPN,
|
||||||
|
"VPN",
|
||||||
|
diff --git a/src/nm-active-connection.h b/src/nm-active-connection.h
|
||||||
|
index 43b76bd..2a4df97 100644
|
||||||
|
--- a/src/nm-active-connection.h
|
||||||
|
+++ b/src/nm-active-connection.h
|
||||||
|
@@ -40,7 +40,11 @@
|
||||||
|
#define NM_ACTIVE_CONNECTION_DEVICES "devices"
|
||||||
|
#define NM_ACTIVE_CONNECTION_STATE "state"
|
||||||
|
#define NM_ACTIVE_CONNECTION_DEFAULT "default"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_IP4_CONFIG "ip4-config"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_DHCP4_CONFIG "dhcp4-config"
|
||||||
|
#define NM_ACTIVE_CONNECTION_DEFAULT6 "default6"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_IP6_CONFIG "ip6-config"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_DHCP6_CONFIG "dhcp6-config"
|
||||||
|
#define NM_ACTIVE_CONNECTION_VPN "vpn"
|
||||||
|
#define NM_ACTIVE_CONNECTION_MASTER "master"
|
||||||
|
|
||||||
|
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
index 500c72b..a4bc431 100644
|
||||||
|
--- a/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
+++ b/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
@@ -105,6 +105,8 @@ enum {
|
||||||
|
PROP_0,
|
||||||
|
PROP_VPN_STATE,
|
||||||
|
PROP_BANNER,
|
||||||
|
+ PROP_IP4_CONFIG,
|
||||||
|
+ PROP_IP6_CONFIG,
|
||||||
|
PROP_MASTER = 2000,
|
||||||
|
|
||||||
|
LAST_PROP
|
||||||
|
@@ -1011,6 +1013,8 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy,
|
||||||
|
nm_ip4_config_merge_setting (config, nm_connection_get_setting_ip4_config (priv->connection));
|
||||||
|
|
||||||
|
priv->ip4_config = config;
|
||||||
|
+ nm_ip4_config_export (config);
|
||||||
|
+ g_object_notify (G_OBJECT (connection), NM_ACTIVE_CONNECTION_IP4_CONFIG);
|
||||||
|
nm_vpn_connection_config_maybe_complete (connection, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1152,6 +1156,8 @@ nm_vpn_connection_ip6_config_get (DBusGProxy *proxy,
|
||||||
|
nm_ip6_config_merge_setting (config, nm_connection_get_setting_ip6_config (priv->connection));
|
||||||
|
|
||||||
|
priv->ip6_config = config;
|
||||||
|
+ nm_ip6_config_export (config);
|
||||||
|
+ g_object_notify (G_OBJECT (connection), NM_ACTIVE_CONNECTION_IP6_CONFIG);
|
||||||
|
nm_vpn_connection_config_maybe_complete (connection, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1787,6 +1793,18 @@ get_property (GObject *object, guint prop_id,
|
||||||
|
case PROP_BANNER:
|
||||||
|
g_value_set_string (value, priv->banner ? priv->banner : "");
|
||||||
|
break;
|
||||||
|
+ case PROP_IP4_CONFIG:
|
||||||
|
+ if (priv->vpn_state == NM_VPN_CONNECTION_STATE_ACTIVATED && priv->ip4_config)
|
||||||
|
+ g_value_set_boxed (value, nm_ip4_config_get_dbus_path (priv->ip4_config));
|
||||||
|
+ else
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ break;
|
||||||
|
+ case PROP_IP6_CONFIG:
|
||||||
|
+ if (priv->vpn_state == NM_VPN_CONNECTION_STATE_ACTIVATED && priv->ip6_config)
|
||||||
|
+ g_value_set_boxed (value, nm_ip6_config_get_dbus_path (priv->ip6_config));
|
||||||
|
+ else
|
||||||
|
+ g_value_set_boxed (value, "/");
|
||||||
|
+ break;
|
||||||
|
case PROP_MASTER:
|
||||||
|
g_value_set_boxed (value, nm_device_get_path (priv->parent_dev));
|
||||||
|
break;
|
||||||
|
@@ -1832,6 +1850,11 @@ nm_vpn_connection_class_init (NMVPNConnectionClass *connection_class)
|
||||||
|
NULL,
|
||||||
|
G_PARAM_READABLE));
|
||||||
|
|
||||||
|
+ g_object_class_override_property (object_class, PROP_IP4_CONFIG,
|
||||||
|
+ NM_ACTIVE_CONNECTION_IP4_CONFIG);
|
||||||
|
+ g_object_class_override_property (object_class, PROP_IP6_CONFIG,
|
||||||
|
+ NM_ACTIVE_CONNECTION_IP6_CONFIG);
|
||||||
|
+
|
||||||
|
/* signals */
|
||||||
|
signals[VPN_STATE_CHANGED] =
|
||||||
|
g_signal_new ("vpn-state-changed",
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
||||||
|
|
||||||
|
From 4783f43c530ba7b8d045a1d66001af4ac6463dd4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dan Winship <danw@gnome.org>
|
||||||
|
Date: Wed, 18 Dec 2013 10:56:09 -0500
|
||||||
|
Subject: [PATCH 3/4] libnm-glib: expose new NMActiveConnection IP/DHCP config
|
||||||
|
properties
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
||||||
|
---
|
||||||
|
libnm-glib/libnm-glib.ver | 4 +
|
||||||
|
libnm-glib/nm-active-connection.c | 184 ++++++++++++++++++++++++++++++++++++--
|
||||||
|
libnm-glib/nm-active-connection.h | 16 +++-
|
||||||
|
libnm-glib/nm-device.c | 16 ++++
|
||||||
|
4 files changed, 209 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libnm-glib/libnm-glib.ver b/libnm-glib/libnm-glib.ver
|
||||||
|
index ac784cc..5247ce9 100644
|
||||||
|
--- a/libnm-glib/libnm-glib.ver
|
||||||
|
+++ b/libnm-glib/libnm-glib.ver
|
||||||
|
@@ -23,6 +23,10 @@ global:
|
||||||
|
nm_active_connection_get_default6;
|
||||||
|
nm_active_connection_get_default;
|
||||||
|
nm_active_connection_get_devices;
|
||||||
|
+ nm_active_connection_get_dhcp4_config;
|
||||||
|
+ nm_active_connection_get_dhcp6_config;
|
||||||
|
+ nm_active_connection_get_ip4_config;
|
||||||
|
+ nm_active_connection_get_ip6_config;
|
||||||
|
nm_active_connection_get_master;
|
||||||
|
nm_active_connection_get_specific_object;
|
||||||
|
nm_active_connection_get_state;
|
||||||
|
diff --git a/libnm-glib/nm-active-connection.c b/libnm-glib/nm-active-connection.c
|
||||||
|
index c474483..11f37cf 100644
|
||||||
|
--- a/libnm-glib/nm-active-connection.c
|
||||||
|
+++ b/libnm-glib/nm-active-connection.c
|
||||||
|
@@ -58,7 +58,11 @@ typedef struct {
|
||||||
|
GPtrArray *devices;
|
||||||
|
NMActiveConnectionState state;
|
||||||
|
gboolean is_default;
|
||||||
|
+ NMIP4Config *ip4_config;
|
||||||
|
+ NMDHCP4Config *dhcp4_config;
|
||||||
|
gboolean is_default6;
|
||||||
|
+ NMIP6Config *ip6_config;
|
||||||
|
+ NMDHCP6Config *dhcp6_config;
|
||||||
|
char *master;
|
||||||
|
} NMActiveConnectionPrivate;
|
||||||
|
|
||||||
|
@@ -70,21 +74,16 @@ enum {
|
||||||
|
PROP_DEVICES,
|
||||||
|
PROP_STATE,
|
||||||
|
PROP_DEFAULT,
|
||||||
|
+ PROP_IP4_CONFIG,
|
||||||
|
+ PROP_DHCP4_CONFIG,
|
||||||
|
PROP_DEFAULT6,
|
||||||
|
+ PROP_IP6_CONFIG,
|
||||||
|
+ PROP_DHCP6_CONFIG,
|
||||||
|
PROP_MASTER,
|
||||||
|
|
||||||
|
LAST_PROP
|
||||||
|
};
|
||||||
|
|
||||||
|
-#define DBUS_PROP_CONNECTION "Connection"
|
||||||
|
-#define DBUS_PROP_UUID "Uuid"
|
||||||
|
-#define DBUS_PROP_SPECIFIC_OBJECT "SpecificObject"
|
||||||
|
-#define DBUS_PROP_DEVICES "Devices"
|
||||||
|
-#define DBUS_PROP_STATE "State"
|
||||||
|
-#define DBUS_PROP_DEFAULT "Default"
|
||||||
|
-#define DBUS_PROP_DEFAULT6 "Default6"
|
||||||
|
-#define DBUS_PROP_MASTER "Master"
|
||||||
|
-
|
||||||
|
/**
|
||||||
|
* nm_active_connection_new:
|
||||||
|
* @connection: the #DBusGConnection
|
||||||
|
@@ -308,6 +307,49 @@ nm_active_connection_get_default (NMActiveConnection *connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * nm_active_connection_get_ip4_config:
|
||||||
|
+ * @connection: an #NMActiveConnection
|
||||||
|
+ *
|
||||||
|
+ * Gets the current #NMIP4Config associated with the #NMActiveConnection.
|
||||||
|
+ *
|
||||||
|
+ * Returns: (transfer none): the #NMIP4Config, or %NULL if the
|
||||||
|
+ * connection is not in the %NM_ACTIVE_CONNECTION_STATE_ACTIVATED
|
||||||
|
+ * state.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+NMIP4Config *
|
||||||
|
+nm_active_connection_get_ip4_config (NMActiveConnection *connection)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL);
|
||||||
|
+
|
||||||
|
+ _nm_object_ensure_inited (NM_OBJECT (connection));
|
||||||
|
+ return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->ip4_config;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * nm_active_connection_get_dhcp4_config:
|
||||||
|
+ * @connection: an #NMActiveConnection
|
||||||
|
+ *
|
||||||
|
+ * Gets the current #NMDHCP4Config (if any) associated with the
|
||||||
|
+ * #NMActiveConnection.
|
||||||
|
+ *
|
||||||
|
+ * Returns: (transfer none): the #NMDHCP4Config, or %NULL if the
|
||||||
|
+ * connection does not use DHCP, or is not in the
|
||||||
|
+ * %NM_ACTIVE_CONNECTION_STATE_ACTIVATED state.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+NMDHCP4Config *
|
||||||
|
+nm_active_connection_get_dhcp4_config (NMActiveConnection *connection)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL);
|
||||||
|
+
|
||||||
|
+ _nm_object_ensure_inited (NM_OBJECT (connection));
|
||||||
|
+ return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->dhcp4_config;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
* nm_active_connection_get_default6:
|
||||||
|
* @connection: a #NMActiveConnection
|
||||||
|
*
|
||||||
|
@@ -326,6 +368,49 @@ nm_active_connection_get_default6 (NMActiveConnection *connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * nm_active_connection_get_ip6_config:
|
||||||
|
+ * @connection: an #NMActiveConnection
|
||||||
|
+ *
|
||||||
|
+ * Gets the current #NMIP6Config associated with the #NMActiveConnection.
|
||||||
|
+ *
|
||||||
|
+ * Returns: (transfer none): the #NMIP6Config, or %NULL if the
|
||||||
|
+ * connection is not in the %NM_ACTIVE_CONNECTION_STATE_ACTIVATED
|
||||||
|
+ * state.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+NMIP6Config *
|
||||||
|
+nm_active_connection_get_ip6_config (NMActiveConnection *connection)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL);
|
||||||
|
+
|
||||||
|
+ _nm_object_ensure_inited (NM_OBJECT (connection));
|
||||||
|
+ return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->ip6_config;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * nm_active_connection_get_dhcp6_config:
|
||||||
|
+ * @connection: an #NMActiveConnection
|
||||||
|
+ *
|
||||||
|
+ * Gets the current #NMDHCP6Config (if any) associated with the
|
||||||
|
+ * #NMActiveConnection.
|
||||||
|
+ *
|
||||||
|
+ * Returns: (transfer none): the #NMDHCP6Config, or %NULL if the
|
||||||
|
+ * connection does not use DHCPv6, or is not in the
|
||||||
|
+ * %NM_ACTIVE_CONNECTION_STATE_ACTIVATED state.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+NMDHCP6Config *
|
||||||
|
+nm_active_connection_get_dhcp6_config (NMActiveConnection *connection)
|
||||||
|
+{
|
||||||
|
+ g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL);
|
||||||
|
+
|
||||||
|
+ _nm_object_ensure_inited (NM_OBJECT (connection));
|
||||||
|
+ return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->dhcp6_config;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
* nm_active_connection_get_master:
|
||||||
|
* @connection: a #NMActiveConnection
|
||||||
|
*
|
||||||
|
@@ -359,6 +444,11 @@ dispose (GObject *object)
|
||||||
|
priv->devices = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ g_clear_object (&priv->ip4_config);
|
||||||
|
+ g_clear_object (&priv->dhcp4_config);
|
||||||
|
+ g_clear_object (&priv->ip6_config);
|
||||||
|
+ g_clear_object (&priv->dhcp6_config);
|
||||||
|
+
|
||||||
|
g_clear_object (&priv->proxy);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (nm_active_connection_parent_class)->dispose (object);
|
||||||
|
@@ -406,9 +496,21 @@ get_property (GObject *object,
|
||||||
|
case PROP_DEFAULT:
|
||||||
|
g_value_set_boolean (value, nm_active_connection_get_default (self));
|
||||||
|
break;
|
||||||
|
+ case PROP_IP4_CONFIG:
|
||||||
|
+ g_value_set_object (value, nm_active_connection_get_ip4_config (self));
|
||||||
|
+ break;
|
||||||
|
+ case PROP_DHCP4_CONFIG:
|
||||||
|
+ g_value_set_object (value, nm_active_connection_get_dhcp4_config (self));
|
||||||
|
+ break;
|
||||||
|
case PROP_DEFAULT6:
|
||||||
|
g_value_set_boolean (value, nm_active_connection_get_default6 (self));
|
||||||
|
break;
|
||||||
|
+ case PROP_IP6_CONFIG:
|
||||||
|
+ g_value_set_object (value, nm_active_connection_get_ip6_config (self));
|
||||||
|
+ break;
|
||||||
|
+ case PROP_DHCP6_CONFIG:
|
||||||
|
+ g_value_set_object (value, nm_active_connection_get_dhcp6_config (self));
|
||||||
|
+ break;
|
||||||
|
case PROP_MASTER:
|
||||||
|
g_value_set_string (value, nm_active_connection_get_master (self));
|
||||||
|
break;
|
||||||
|
@@ -429,7 +531,11 @@ register_properties (NMActiveConnection *connection)
|
||||||
|
{ NM_ACTIVE_CONNECTION_DEVICES, &priv->devices, NULL, NM_TYPE_DEVICE },
|
||||||
|
{ NM_ACTIVE_CONNECTION_STATE, &priv->state },
|
||||||
|
{ NM_ACTIVE_CONNECTION_DEFAULT, &priv->is_default },
|
||||||
|
+ { NM_ACTIVE_CONNECTION_IP4_CONFIG, &priv->ip4_config, NULL, NM_TYPE_IP4_CONFIG },
|
||||||
|
+ { NM_ACTIVE_CONNECTION_DHCP4_CONFIG, &priv->dhcp4_config, NULL, NM_TYPE_DHCP4_CONFIG },
|
||||||
|
{ NM_ACTIVE_CONNECTION_DEFAULT6, &priv->is_default6 },
|
||||||
|
+ { NM_ACTIVE_CONNECTION_IP6_CONFIG, &priv->ip6_config, NULL, NM_TYPE_IP6_CONFIG },
|
||||||
|
+ { NM_ACTIVE_CONNECTION_DHCP6_CONFIG, &priv->dhcp6_config, NULL, NM_TYPE_DHCP6_CONFIG },
|
||||||
|
{ NM_ACTIVE_CONNECTION_MASTER, &priv->master },
|
||||||
|
|
||||||
|
/* not tracked after construction time */
|
||||||
|
@@ -551,6 +657,36 @@ nm_active_connection_class_init (NMActiveConnectionClass *ap_class)
|
||||||
|
G_PARAM_READABLE));
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * NMActiveConnection:ip4-config:
|
||||||
|
+ *
|
||||||
|
+ * The #NMIP4Config of the connection.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+ g_object_class_install_property
|
||||||
|
+ (object_class, PROP_IP4_CONFIG,
|
||||||
|
+ g_param_spec_object (NM_ACTIVE_CONNECTION_IP4_CONFIG,
|
||||||
|
+ "IP4 Config",
|
||||||
|
+ "IP4 Config",
|
||||||
|
+ NM_TYPE_IP4_CONFIG,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * NMActiveConnection:dhcp4-config:
|
||||||
|
+ *
|
||||||
|
+ * The #NMDHCP4Config of the connection.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+ g_object_class_install_property
|
||||||
|
+ (object_class, PROP_DHCP4_CONFIG,
|
||||||
|
+ g_param_spec_object (NM_ACTIVE_CONNECTION_DHCP4_CONFIG,
|
||||||
|
+ "DHCP4 Config",
|
||||||
|
+ "DHCP4 Config",
|
||||||
|
+ NM_TYPE_DHCP4_CONFIG,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
* NMActiveConnection:default6:
|
||||||
|
*
|
||||||
|
* Whether the active connection is the default IPv6 one.
|
||||||
|
@@ -564,6 +700,36 @@ nm_active_connection_class_init (NMActiveConnectionClass *ap_class)
|
||||||
|
G_PARAM_READABLE));
|
||||||
|
|
||||||
|
/**
|
||||||
|
+ * NMActiveConnection:ip6-config:
|
||||||
|
+ *
|
||||||
|
+ * The #NMIP6Config of the connection.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+ g_object_class_install_property
|
||||||
|
+ (object_class, PROP_IP6_CONFIG,
|
||||||
|
+ g_param_spec_object (NM_ACTIVE_CONNECTION_IP6_CONFIG,
|
||||||
|
+ "IP6 Config",
|
||||||
|
+ "IP6 Config",
|
||||||
|
+ NM_TYPE_IP6_CONFIG,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * NMActiveConnection:dhcp6-config:
|
||||||
|
+ *
|
||||||
|
+ * The #NMDHCP6Config of the connection.
|
||||||
|
+ *
|
||||||
|
+ * Since: 0.9.10
|
||||||
|
+ **/
|
||||||
|
+ g_object_class_install_property
|
||||||
|
+ (object_class, PROP_DHCP6_CONFIG,
|
||||||
|
+ g_param_spec_object (NM_ACTIVE_CONNECTION_DHCP6_CONFIG,
|
||||||
|
+ "DHCP6 Config",
|
||||||
|
+ "DHCP6 Config",
|
||||||
|
+ NM_TYPE_DHCP6_CONFIG,
|
||||||
|
+ G_PARAM_READABLE));
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
* NMActiveConnection:master:
|
||||||
|
*
|
||||||
|
* The path of the master device if one exists.
|
||||||
|
diff --git a/libnm-glib/nm-active-connection.h b/libnm-glib/nm-active-connection.h
|
||||||
|
index c6777f8..49f040d 100644
|
||||||
|
--- a/libnm-glib/nm-active-connection.h
|
||||||
|
+++ b/libnm-glib/nm-active-connection.h
|
||||||
|
@@ -29,6 +29,10 @@
|
||||||
|
#include "nm-object.h"
|
||||||
|
#include <nm-connection.h>
|
||||||
|
#include <NetworkManager.h>
|
||||||
|
+#include "nm-ip4-config.h"
|
||||||
|
+#include "nm-dhcp4-config.h"
|
||||||
|
+#include "nm-ip6-config.h"
|
||||||
|
+#include "nm-dhcp6-config.h"
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
@@ -45,7 +49,11 @@ G_BEGIN_DECLS
|
||||||
|
#define NM_ACTIVE_CONNECTION_DEVICES "devices"
|
||||||
|
#define NM_ACTIVE_CONNECTION_STATE "state"
|
||||||
|
#define NM_ACTIVE_CONNECTION_DEFAULT "default"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_IP4_CONFIG "ip4-config"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_DHCP4_CONFIG "dhcp4-config"
|
||||||
|
#define NM_ACTIVE_CONNECTION_DEFAULT6 "default6"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_IP6_CONFIG "ip6-config"
|
||||||
|
+#define NM_ACTIVE_CONNECTION_DHCP6_CONFIG "dhcp6-config"
|
||||||
|
#define NM_ACTIVE_CONNECTION_MASTER "master"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -73,9 +81,13 @@ const char * nm_active_connection_get_uuid (NMActiveConnection *c
|
||||||
|
const char * nm_active_connection_get_specific_object (NMActiveConnection *connection);
|
||||||
|
const GPtrArray *nm_active_connection_get_devices (NMActiveConnection *connection);
|
||||||
|
NMActiveConnectionState nm_active_connection_get_state (NMActiveConnection *connection);
|
||||||
|
-gboolean nm_active_connection_get_default (NMActiveConnection *connection);
|
||||||
|
-gboolean nm_active_connection_get_default6 (NMActiveConnection *connection);
|
||||||
|
const char * nm_active_connection_get_master (NMActiveConnection *connection);
|
||||||
|
+gboolean nm_active_connection_get_default (NMActiveConnection *connection);
|
||||||
|
+NMIP4Config * nm_active_connection_get_ip4_config (NMActiveConnection *connection);
|
||||||
|
+NMDHCP4Config *nm_active_connection_get_dhcp4_config (NMActiveConnection *connection);
|
||||||
|
+gboolean nm_active_connection_get_default6 (NMActiveConnection *connection);
|
||||||
|
+NMIP6Config * nm_active_connection_get_ip6_config (NMActiveConnection *connection);
|
||||||
|
+NMDHCP6Config *nm_active_connection_get_dhcp6_config (NMActiveConnection *connection);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c
|
||||||
|
index d4f95ac..6d8e9f1 100644
|
||||||
|
--- a/libnm-glib/nm-device.c
|
||||||
|
+++ b/libnm-glib/nm-device.c
|
||||||
|
@@ -1253,6 +1253,10 @@ nm_device_get_firmware_missing (NMDevice *device)
|
||||||
|
*
|
||||||
|
* Gets the current #NMIP4Config associated with the #NMDevice.
|
||||||
|
*
|
||||||
|
+ * Note that as of NetworkManager 0.9.10, you can alternatively use
|
||||||
|
+ * nm_active_connection_get_ip4_config(), which also works with VPN
|
||||||
|
+ * connections.
|
||||||
|
+ *
|
||||||
|
* Returns: (transfer none): the #NMIP4Config or %NULL if the device is not activated.
|
||||||
|
**/
|
||||||
|
NMIP4Config *
|
||||||
|
@@ -1270,6 +1274,10 @@ nm_device_get_ip4_config (NMDevice *device)
|
||||||
|
*
|
||||||
|
* Gets the current #NMDHCP4Config associated with the #NMDevice.
|
||||||
|
*
|
||||||
|
+ * Note that as of NetworkManager 0.9.10, you can alternatively use
|
||||||
|
+ * nm_active_connection_get_dhcp4_config(), which also works with VPN
|
||||||
|
+ * connections.
|
||||||
|
+ *
|
||||||
|
* Returns: (transfer none): the #NMDHCP4Config or %NULL if the device is not activated or not
|
||||||
|
* using DHCP.
|
||||||
|
**/
|
||||||
|
@@ -1288,6 +1296,10 @@ nm_device_get_dhcp4_config (NMDevice *device)
|
||||||
|
*
|
||||||
|
* Gets the current #NMIP6Config associated with the #NMDevice.
|
||||||
|
*
|
||||||
|
+ * Note that as of NetworkManager 0.9.10, you can alternatively use
|
||||||
|
+ * nm_active_connection_get_ip6_config(), which also works with VPN
|
||||||
|
+ * connections.
|
||||||
|
+ *
|
||||||
|
* Returns: (transfer none): the #NMIP6Config or %NULL if the device is not activated.
|
||||||
|
**/
|
||||||
|
NMIP6Config *
|
||||||
|
@@ -1305,6 +1317,10 @@ nm_device_get_ip6_config (NMDevice *device)
|
||||||
|
*
|
||||||
|
* Gets the current #NMDHCP6Config associated with the #NMDevice.
|
||||||
|
*
|
||||||
|
+ * Note that as of NetworkManager 0.9.10, you can alternatively use
|
||||||
|
+ * nm_active_connection_get_dhcp6_config(), which also works with VPN
|
||||||
|
+ * connections.
|
||||||
|
+ *
|
||||||
|
* Returns: (transfer none): the #NMDHCP6Config or %NULL if the device is not activated or not
|
||||||
|
* using DHCP.
|
||||||
|
**/
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
||||||
|
|
||||||
|
From f1f4f32c02e724f59fcc958d08ab8d543a01311d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dan Winship <danw@gnome.org>
|
||||||
|
Date: Wed, 18 Dec 2013 11:49:39 -0500
|
||||||
|
Subject: [PATCH 4/4] cli: get IP/DHCP config directly from the
|
||||||
|
NMActiveConnection (rh #1036132)
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Now that NMActiveConnection has IP and DHCP config info, use that
|
||||||
|
directly in "nmcli con show active" rather than getting it from the
|
||||||
|
connection's device; this way, we get the right info for VPN
|
||||||
|
connections as well.
|
||||||
|
|
||||||
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
||||||
|
---
|
||||||
|
cli/src/connections.c | 60 ++++++++++++++-------------------------------------
|
||||||
|
1 file changed, 16 insertions(+), 44 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cli/src/connections.c b/cli/src/connections.c
|
||||||
|
index 26be72f..7376405 100644
|
||||||
|
--- a/cli/src/connections.c
|
||||||
|
+++ b/cli/src/connections.c
|
||||||
|
@@ -941,66 +941,38 @@ nmc_active_connection_detail (NMActiveConnection *acon, NmCli *nmc)
|
||||||
|
|
||||||
|
/* IP4 */
|
||||||
|
if (strcasecmp (nmc_fields_con_active_details_groups[group_idx].name, nmc_fields_con_active_details_groups[1].name) == 0) {
|
||||||
|
- const GPtrArray *devices;
|
||||||
|
- int j;
|
||||||
|
+ gboolean b1 = FALSE;
|
||||||
|
+ NMIP4Config *cfg4 = nm_active_connection_get_ip4_config (acon);
|
||||||
|
|
||||||
|
- devices = nm_active_connection_get_devices (acon);
|
||||||
|
- for (j = 0; devices && (j < devices->len); j++) {
|
||||||
|
- gboolean b1 = FALSE;
|
||||||
|
- NMDevice *device = g_ptr_array_index (devices, j);
|
||||||
|
- NMIP4Config *cfg4 = nm_device_get_ip4_config (device);
|
||||||
|
-
|
||||||
|
- b1 = print_ip4_config (cfg4, nmc, "IP4", group_fld);
|
||||||
|
- was_output = was_output || b1;
|
||||||
|
- }
|
||||||
|
+ b1 = print_ip4_config (cfg4, nmc, "IP4", group_fld);
|
||||||
|
+ was_output = was_output || b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DHCP4 */
|
||||||
|
if (strcasecmp (nmc_fields_con_active_details_groups[group_idx].name, nmc_fields_con_active_details_groups[2].name) == 0) {
|
||||||
|
- const GPtrArray *devices;
|
||||||
|
- int j;
|
||||||
|
+ gboolean b1 = FALSE;
|
||||||
|
+ NMDHCP4Config *dhcp4 = nm_active_connection_get_dhcp4_config (acon);
|
||||||
|
|
||||||
|
- devices = nm_active_connection_get_devices (acon);
|
||||||
|
- for (j = 0; devices && (j < devices->len); j++) {
|
||||||
|
- gboolean b1 = FALSE;
|
||||||
|
- NMDevice *device = g_ptr_array_index (devices, j);
|
||||||
|
- NMDHCP4Config *dhcp4 = nm_device_get_dhcp4_config (device);
|
||||||
|
-
|
||||||
|
- b1 = print_dhcp4_config (dhcp4, nmc, "DHCP4", group_fld);
|
||||||
|
- was_output = was_output || b1;
|
||||||
|
- }
|
||||||
|
+ b1 = print_dhcp4_config (dhcp4, nmc, "DHCP4", group_fld);
|
||||||
|
+ was_output = was_output || b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* IP6 */
|
||||||
|
if (strcasecmp (nmc_fields_con_active_details_groups[group_idx].name, nmc_fields_con_active_details_groups[3].name) == 0) {
|
||||||
|
- const GPtrArray *devices;
|
||||||
|
- int j;
|
||||||
|
+ gboolean b1 = FALSE;
|
||||||
|
+ NMIP6Config *cfg6 = nm_active_connection_get_ip6_config (acon);
|
||||||
|
|
||||||
|
- devices = nm_active_connection_get_devices (acon);
|
||||||
|
- for (j = 0; devices && (j < devices->len); j++) {
|
||||||
|
- gboolean b1 = FALSE;
|
||||||
|
- NMDevice *device = g_ptr_array_index (devices, j);
|
||||||
|
- NMIP6Config *cfg6 = nm_device_get_ip6_config (device);
|
||||||
|
-
|
||||||
|
- b1 = print_ip6_config (cfg6, nmc, "IP6", group_fld);
|
||||||
|
- was_output = was_output || b1;
|
||||||
|
- }
|
||||||
|
+ b1 = print_ip6_config (cfg6, nmc, "IP6", group_fld);
|
||||||
|
+ was_output = was_output || b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DHCP6 */
|
||||||
|
if (strcasecmp (nmc_fields_con_active_details_groups[group_idx].name, nmc_fields_con_active_details_groups[4].name) == 0) {
|
||||||
|
- const GPtrArray *devices;
|
||||||
|
- int j;
|
||||||
|
+ gboolean b1 = FALSE;
|
||||||
|
+ NMDHCP6Config *dhcp6 = nm_active_connection_get_dhcp6_config (acon);
|
||||||
|
|
||||||
|
- devices = nm_active_connection_get_devices (acon);
|
||||||
|
- for (j = 0; devices && (j < devices->len); j++) {
|
||||||
|
- gboolean b1 = FALSE;
|
||||||
|
- NMDevice *device = g_ptr_array_index (devices, j);
|
||||||
|
- NMDHCP6Config *dhcp6 = nm_device_get_dhcp6_config (device);
|
||||||
|
-
|
||||||
|
- b1 = print_dhcp6_config (dhcp6, nmc, "DHCP6", group_fld);
|
||||||
|
- was_output = was_output || b1;
|
||||||
|
- }
|
||||||
|
+ b1 = print_dhcp6_config (dhcp6, nmc, "DHCP6", group_fld);
|
||||||
|
+ was_output = was_output || b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* VPN */
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
178
vpn-connection-states.patch
Normal file
178
vpn-connection-states.patch
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
From c72d2eb02fa05b29dbff372a3ab02a11f3a0557b Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes@redhat.com>
|
||||||
|
Date: Thu, 19 Dec 2013 12:49:31 +0100
|
||||||
|
Subject: [PATCH 1/2] vpn: print VPN plugin failures and VPN connection reason
|
||||||
|
changes as strings
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
||||||
|
---
|
||||||
|
src/vpn-manager/nm-vpn-connection.c | 58 ++++++++++++++++++++++++++++++++++---
|
||||||
|
1 file changed, 54 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
index e7c3e07..d0c82e4 100644
|
||||||
|
--- a/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
+++ b/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
@@ -438,14 +438,31 @@ nm_vpn_connection_get_service (NMVPNConnection *connection)
|
||||||
|
return nm_setting_vpn_get_service_type (s_vpn);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static const char *
|
||||||
|
+vpn_plugin_failure_to_string (NMVPNPluginFailure failure)
|
||||||
|
+{
|
||||||
|
+ switch (failure) {
|
||||||
|
+ case NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED:
|
||||||
|
+ return "login-failed";
|
||||||
|
+ case NM_VPN_PLUGIN_FAILURE_CONNECT_FAILED:
|
||||||
|
+ return "connect-failed";
|
||||||
|
+ case NM_VPN_PLUGIN_FAILURE_BAD_IP_CONFIG:
|
||||||
|
+ return "bad-ip-config";
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ return "unknown";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
plugin_failed (DBusGProxy *proxy,
|
||||||
|
- NMVPNPluginFailure plugin_failure,
|
||||||
|
- gpointer user_data)
|
||||||
|
+ NMVPNPluginFailure plugin_failure,
|
||||||
|
+ gpointer user_data)
|
||||||
|
{
|
||||||
|
NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (user_data);
|
||||||
|
|
||||||
|
- nm_log_warn (LOGD_VPN, "VPN plugin failed: %d", plugin_failure);
|
||||||
|
+ nm_log_warn (LOGD_VPN, "VPN plugin failed: %s (%d)",
|
||||||
|
+ vpn_plugin_failure_to_string (plugin_failure), plugin_failure);
|
||||||
|
|
||||||
|
switch (plugin_failure) {
|
||||||
|
case NM_VPN_PLUGIN_FAILURE_LOGIN_FAILED:
|
||||||
|
@@ -481,6 +498,38 @@ vpn_state_to_string (NMVPNServiceState state)
|
||||||
|
return "unknown";
|
||||||
|
}
|
||||||
|
|
||||||
|
+static const char *
|
||||||
|
+vpn_reason_to_string (NMVPNConnectionStateReason reason)
|
||||||
|
+{
|
||||||
|
+ switch (reason) {
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_NONE:
|
||||||
|
+ return "none";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_USER_DISCONNECTED:
|
||||||
|
+ return "user-disconnected";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_DEVICE_DISCONNECTED:
|
||||||
|
+ return "device-disconnected";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED:
|
||||||
|
+ return "service-stopped";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_IP_CONFIG_INVALID:
|
||||||
|
+ return "ip-config-invalid";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_CONNECT_TIMEOUT:
|
||||||
|
+ return "connect-timeout";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_TIMEOUT:
|
||||||
|
+ return "service-start-timeout";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_SERVICE_START_FAILED:
|
||||||
|
+ return "service-start-failed";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_NO_SECRETS:
|
||||||
|
+ return "no-secrets";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_LOGIN_FAILED:
|
||||||
|
+ return "login-failed";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_REASON_CONNECTION_REMOVED:
|
||||||
|
+ return "connection-removed";
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ return "unknown";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
plugin_state_changed (DBusGProxy *proxy,
|
||||||
|
NMVPNServiceState state,
|
||||||
|
@@ -504,7 +553,8 @@ plugin_state_changed (DBusGProxy *proxy,
|
||||||
|
case NM_VPN_CONNECTION_STATE_CONNECT:
|
||||||
|
case NM_VPN_CONNECTION_STATE_IP_CONFIG_GET:
|
||||||
|
case NM_VPN_CONNECTION_STATE_ACTIVATED:
|
||||||
|
- nm_log_info (LOGD_VPN, "VPN plugin state change reason: %d", priv->failure_reason);
|
||||||
|
+ nm_log_info (LOGD_VPN, "VPN plugin state change reason: %s (%d)",
|
||||||
|
+ vpn_reason_to_string (priv->failure_reason), priv->failure_reason);
|
||||||
|
nm_vpn_connection_set_vpn_state (connection,
|
||||||
|
NM_VPN_CONNECTION_STATE_FAILED,
|
||||||
|
priv->failure_reason);
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
||||||
|
|
||||||
|
From 3cebf963da32c610b5607dd5c9ca77054e4fa9c0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes@redhat.com>
|
||||||
|
Date: Thu, 19 Dec 2013 13:17:44 +0100
|
||||||
|
Subject: [PATCH 2/2] vpn: add code2string translation for
|
||||||
|
NMVPNConnectionState and fix its logging
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
|
||||||
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
||||||
|
---
|
||||||
|
src/vpn-manager/nm-vpn-connection.c | 28 ++++++++++++++++++++++++++--
|
||||||
|
1 file changed, 26 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
index d0c82e4..500c72b 100644
|
||||||
|
--- a/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
+++ b/src/vpn-manager/nm-vpn-connection.c
|
||||||
|
@@ -477,7 +477,7 @@ plugin_failed (DBusGProxy *proxy,
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
-vpn_state_to_string (NMVPNServiceState state)
|
||||||
|
+vpn_service_state_to_string (NMVPNServiceState state)
|
||||||
|
{
|
||||||
|
switch (state) {
|
||||||
|
case NM_VPN_SERVICE_STATE_INIT:
|
||||||
|
@@ -499,6 +499,30 @@ vpn_state_to_string (NMVPNServiceState state)
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
+vpn_state_to_string (NMVPNConnectionState state)
|
||||||
|
+{
|
||||||
|
+ switch (state) {
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_PREPARE:
|
||||||
|
+ return "prepare";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_NEED_AUTH:
|
||||||
|
+ return "need-auth";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_CONNECT:
|
||||||
|
+ return "connect";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_IP_CONFIG_GET:
|
||||||
|
+ return "ip-config-get";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_ACTIVATED:
|
||||||
|
+ return "activated";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_FAILED:
|
||||||
|
+ return "failed";
|
||||||
|
+ case NM_VPN_CONNECTION_STATE_DISCONNECTED:
|
||||||
|
+ return "disconnected";
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ return "unknown";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const char *
|
||||||
|
vpn_reason_to_string (NMVPNConnectionStateReason reason)
|
||||||
|
{
|
||||||
|
switch (reason) {
|
||||||
|
@@ -539,7 +563,7 @@ plugin_state_changed (DBusGProxy *proxy,
|
||||||
|
NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection);
|
||||||
|
|
||||||
|
nm_log_info (LOGD_VPN, "VPN plugin state changed: %s (%d)",
|
||||||
|
- vpn_state_to_string (state), state);
|
||||||
|
+ vpn_service_state_to_string (state), state);
|
||||||
|
|
||||||
|
if (state == NM_VPN_SERVICE_STATE_STOPPED) {
|
||||||
|
/* Clear connection secrets to ensure secrets get requested each time the
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
Loading…
Reference in New Issue
Block a user