diff options
author | Mario Sanchez Prada <mario@endlessm.com> | 2016-07-20 16:21:12 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2016-07-28 22:22:14 +0200 |
commit | dfd9d85bebc11bd8719ca60447c01bc3ea52769e (patch) | |
tree | 3c82cfd20c105c0dbd4b753030ab02f702ec6147 | |
parent | 283562ef18cbc2d62a567656e8fc0bc3fb5d433d (diff) | |
download | NetworkManager-dfd9d85bebc11bd8719ca60447c01bc3ea52769e.tar.gz |
nm-dispatcher: Added new 'connectivity-state' parameter to private D-Bus API
In order to pass the connectivity state to the relevant hooks along with
the event itself, we need to add this parameter for the 'Action' method
of then internal 'org.freedesktop.nm_dispatcher' interface, which will
be sent by the network manager main process to the dispatcher.
https://bugzilla.gnome.org/show_bug.cgi?id=768969
-rw-r--r-- | callouts/nm-dispatcher.c | 2 | ||||
-rw-r--r-- | callouts/nm-dispatcher.xml | 2 | ||||
-rw-r--r-- | src/nm-connectivity.c | 2 | ||||
-rw-r--r-- | src/nm-dispatcher.c | 32 | ||||
-rw-r--r-- | src/nm-dispatcher.h | 3 |
5 files changed, 28 insertions, 13 deletions
diff --git a/callouts/nm-dispatcher.c b/callouts/nm-dispatcher.c index 7ddffb0493..282b7ae691 100644 --- a/callouts/nm-dispatcher.c +++ b/callouts/nm-dispatcher.c @@ -80,6 +80,7 @@ handle_action (NMDBusDispatcher *dbus_dispatcher, GVariant *device_ip6_props, GVariant *device_dhcp4_props, GVariant *device_dhcp6_props, + const char *connectivity_state, const char *vpn_ip_iface, GVariant *vpn_ip4_props, GVariant *vpn_ip6_props, @@ -668,6 +669,7 @@ handle_action (NMDBusDispatcher *dbus_dispatcher, GVariant *device_ip6_props, GVariant *device_dhcp4_props, GVariant *device_dhcp6_props, + const char *connectivity_state, const char *vpn_ip_iface, GVariant *vpn_ip4_props, GVariant *vpn_ip6_props, diff --git a/callouts/nm-dispatcher.xml b/callouts/nm-dispatcher.xml index 27f15fe5b9..6268f970b5 100644 --- a/callouts/nm-dispatcher.xml +++ b/callouts/nm-dispatcher.xml @@ -13,6 +13,7 @@ @device_ip6_config: Properties of the device's IPv6 configuration. @device_dhcp4_config: Properties of the device's DHCPv4 configuration. @device_dhcp6_config: Properties of the device's DHCPv6 configuration. + @connectivity_state: Current connectivity state: unknown, none, limited, portal or full. @vpn_ip_iface: VPN interface name. @vpn_ip4_config: Properties of the VPN's IPv4 configuration. @vpn_ip6_config: Properties of the VPN's IPv6 configuration. @@ -30,6 +31,7 @@ <arg name="device_ip6_config" type="a{sv}" direction="in"/> <arg name="device_dhcp4_config" type="a{sv}" direction="in"/> <arg name="device_dhcp6_config" type="a{sv}" direction="in"/> + <arg name="connectivity_state" type="s" direction="in"/> <arg name="vpn_ip_iface" type="s" direction="in"/> <arg name="vpn_ip4_config" type="a{sv}" direction="in"/> <arg name="vpn_ip6_config" type="a{sv}" direction="in"/> diff --git a/src/nm-connectivity.c b/src/nm-connectivity.c index 2b8b170a51..7cf3e70797 100644 --- a/src/nm-connectivity.c +++ b/src/nm-connectivity.c @@ -99,7 +99,7 @@ update_state (NMConnectivity *self, NMConnectivityState state) g_object_notify (G_OBJECT (self), NM_CONNECTIVITY_STATE); /* Notify dispatcher scripts of a connectivity state change */ - nm_dispatcher_call_connectivity (DISPATCHER_ACTION_CONNECTIVITY_CHANGE); + nm_dispatcher_call_connectivity (DISPATCHER_ACTION_CONNECTIVITY_CHANGE, state); } } diff --git a/src/nm-dispatcher.c b/src/nm-dispatcher.c index c8193c33ff..df9be2e711 100644 --- a/src/nm-dispatcher.c +++ b/src/nm-dispatcher.c @@ -28,11 +28,13 @@ #include "nm-dispatcher-api.h" #include "NetworkManagerUtils.h" #include "nm-utils.h" +#include "nm-connectivity.h" #include "nm-device.h" #include "nm-dhcp4-config.h" #include "nm-dhcp6-config.h" #include "nm-ip4-config.h" #include "nm-ip6-config.h" +#include "nm-manager.h" #include "nm-settings-connection.h" #include "nm-platform.h" #include "nm-core-internal.h" @@ -450,6 +452,7 @@ _dispatcher_call (DispatcherAction action, NMSettingsConnection *settings_connection, NMConnection *applied_connection, NMDevice *device, + NMConnectivityState connectivity_state, const char *vpn_iface, NMIP4Config *vpn_ip4_config, NMIP6Config *vpn_ip6_config, @@ -581,7 +584,7 @@ _dispatcher_call (DispatcherAction action, GVariantIter *results; ret = _nm_dbus_proxy_call_sync (dispatcher_proxy, "Action", - g_variant_new ("(s@a{sa{sv}}a{sv}a{sv}a{sv}a{sv}@a{sv}@a{sv}sa{sv}a{sv}b)", + g_variant_new ("(s@a{sa{sv}}a{sv}a{sv}a{sv}a{sv}@a{sv}@a{sv}ssa{sv}a{sv}b)", action_to_string (action), connection_dict, &connection_props, @@ -590,6 +593,7 @@ _dispatcher_call (DispatcherAction action, &device_ip6_props, device_dhcp4_props, device_dhcp6_props, + nm_connectivity_state_to_string (connectivity_state), vpn_iface ? vpn_iface : "", &vpn_ip4_props, &vpn_ip6_props, @@ -616,7 +620,7 @@ _dispatcher_call (DispatcherAction action, info->callback = callback; info->user_data = user_data; g_dbus_proxy_call (dispatcher_proxy, "Action", - g_variant_new ("(s@a{sa{sv}}a{sv}a{sv}a{sv}a{sv}@a{sv}@a{sv}sa{sv}a{sv}b)", + g_variant_new ("(s@a{sa{sv}}a{sv}a{sv}a{sv}a{sv}@a{sv}@a{sv}ssa{sv}a{sv}b)", action_to_string (action), connection_dict, &connection_props, @@ -625,6 +629,7 @@ _dispatcher_call (DispatcherAction action, &device_ip6_props, device_dhcp4_props, device_dhcp6_props, + nm_connectivity_state_to_string (connectivity_state), vpn_iface ? vpn_iface : "", &vpn_ip4_props, &vpn_ip6_props, @@ -674,8 +679,9 @@ nm_dispatcher_call (DispatcherAction action, gpointer user_data, guint *out_call_id) { - return _dispatcher_call (action, FALSE, settings_connection, applied_connection, device, NULL, NULL, - NULL, callback, user_data, out_call_id); + return _dispatcher_call (action, FALSE, settings_connection, applied_connection, device, + NM_CONNECTIVITY_UNKNOWN, NULL, NULL, NULL, + callback, user_data, out_call_id); } /** @@ -696,8 +702,8 @@ nm_dispatcher_call_sync (DispatcherAction action, NMConnection *applied_connection, NMDevice *device) { - return _dispatcher_call (action, TRUE, settings_connection, applied_connection, device, NULL, NULL, - NULL, NULL, NULL, NULL); + return _dispatcher_call (action, TRUE, settings_connection, applied_connection, device, + NM_CONNECTIVITY_UNKNOWN, NULL, NULL, NULL, NULL, NULL, NULL); } /** @@ -731,8 +737,9 @@ nm_dispatcher_call_vpn (DispatcherAction action, gpointer user_data, guint *out_call_id) { - return _dispatcher_call (action, FALSE, settings_connection, applied_connection, parent_device, vpn_iface, - vpn_ip4_config, vpn_ip6_config, callback, user_data, out_call_id); + return _dispatcher_call (action, FALSE, settings_connection, applied_connection, + parent_device, NM_CONNECTIVITY_UNKNOWN, vpn_iface, vpn_ip4_config, + vpn_ip6_config, callback, user_data, out_call_id); } /** @@ -759,22 +766,25 @@ nm_dispatcher_call_vpn_sync (DispatcherAction action, NMIP4Config *vpn_ip4_config, NMIP6Config *vpn_ip6_config) { - return _dispatcher_call (action, TRUE, settings_connection, applied_connection, parent_device, vpn_iface, + return _dispatcher_call (action, TRUE, settings_connection, applied_connection, + parent_device, NM_CONNECTIVITY_UNKNOWN, vpn_iface, vpn_ip4_config, vpn_ip6_config, NULL, NULL, NULL); } /** * nm_dispatcher_call_connectivity(): * @action: the %DispatcherAction + * @connectivity_state: the #NMConnectivityState value * * This method does not block the caller. * * Returns: %TRUE if the action was dispatched, %FALSE on failure */ gboolean -nm_dispatcher_call_connectivity (DispatcherAction action) +nm_dispatcher_call_connectivity (DispatcherAction action, + NMConnectivityState connectivity_state) { - return _dispatcher_call (action, FALSE, NULL, NULL, NULL, + return _dispatcher_call (action, FALSE, NULL, NULL, NULL, connectivity_state, NULL, NULL, NULL, NULL, NULL, NULL); } diff --git a/src/nm-dispatcher.h b/src/nm-dispatcher.h index 72c7e6e815..47cb64816b 100644 --- a/src/nm-dispatcher.h +++ b/src/nm-dispatcher.h @@ -76,7 +76,8 @@ gboolean nm_dispatcher_call_vpn_sync (DispatcherAction action, NMIP4Config *vpn_ip4_config, NMIP6Config *vpn_ip6_config); -gboolean nm_dispatcher_call_connectivity (DispatcherAction action); +gboolean nm_dispatcher_call_connectivity (DispatcherAction action, + NMConnectivityState state); void nm_dispatcher_call_cancel (guint call_id); |