diff options
| author | Michael Biebl <biebl@debian.org> | 2017-01-17 20:25:09 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2017-01-17 20:25:09 +0100 |
| commit | 58f8be580039b0575b197b9573a1c92745d96d30 (patch) | |
| tree | 2c226233f623a0dcb529be0eb8cdf97e4a2ae0c0 /src/nm-dispatcher.c | |
| parent | 45cb5bb3c0e6edb887cf69b417fcaf7053814a9b (diff) | |
New upstream version 1.5.90 upstream/1.5.90
Diffstat (limited to 'src/nm-dispatcher.c')
| -rw-r--r-- | src/nm-dispatcher.c | 87 |
1 files changed, 65 insertions, 22 deletions
diff --git a/src/nm-dispatcher.c b/src/nm-dispatcher.c index df9be2e7..6c0c4bb4 100644 --- a/src/nm-dispatcher.c +++ b/src/nm-dispatcher.c @@ -29,27 +29,21 @@ #include "NetworkManagerUtils.h" #include "nm-utils.h" #include "nm-connectivity.h" -#include "nm-device.h" +#include "devices/nm-device.h" #include "nm-dhcp4-config.h" #include "nm-dhcp6-config.h" +#include "nm-proxy-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 "settings/nm-settings-connection.h" +#include "platform/nm-platform.h" #include "nm-core-internal.h" #define CALL_TIMEOUT (1000 * 60 * 10) /* 10 minutes for all scripts */ -#define _NMLOG_DOMAIN LOGD_DISPATCH -#define _NMLOG_PREFIX_NAME "dispatcher" -#define _NMLOG(level, ...) \ - G_STMT_START { \ - nm_log ((level), _NMLOG_DOMAIN, \ - "%s: " _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \ - _NMLOG_PREFIX_NAME \ - _NM_UTILS_MACRO_REST(__VA_ARGS__)); \ - } G_STMT_END +#define _NMLOG_DOMAIN LOGD_DISPATCH +#define _NMLOG(level, ...) __NMLOG_DEFAULT (level, _NMLOG_DOMAIN, "dispatcher", __VA_ARGS__) static GDBusProxy *dispatcher_proxy; static GHashTable *requests = NULL; @@ -91,6 +85,29 @@ _get_monitor_by_action (DispatcherAction action) } static void +dump_proxy_to_props (NMProxyConfig *proxy, GVariantBuilder *builder) +{ + const char *pac_url = NULL, *pac_script = NULL; + + if (nm_proxy_config_get_method (proxy) == NM_PROXY_CONFIG_METHOD_NONE) + return; + + pac_url = nm_proxy_config_get_pac_url (proxy); + if (pac_url) { + g_variant_builder_add (builder, "{sv}", + "pac-url", + g_variant_new_string (pac_url)); + } + + pac_script = nm_proxy_config_get_pac_script (proxy); + if (pac_script) { + g_variant_builder_add (builder, "{sv}", + "pac-script", + g_variant_new_string (pac_script)); + } +} + +static void dump_ip4_to_props (NMIP4Config *ip4, GVariantBuilder *builder) { GVariantBuilder int_builder; @@ -231,11 +248,13 @@ dump_ip6_to_props (NMIP6Config *ip6, GVariantBuilder *builder) static void fill_device_props (NMDevice *device, GVariantBuilder *dev_builder, + GVariantBuilder *proxy_builder, GVariantBuilder *ip4_builder, GVariantBuilder *ip6_builder, GVariant **dhcp4_props, GVariant **dhcp6_props) { + NMProxyConfig *proxy_config; NMIP4Config *ip4_config; NMIP6Config *ip6_config; NMDhcp4Config *dhcp4_config; @@ -254,6 +273,10 @@ fill_device_props (NMDevice *device, g_variant_builder_add (dev_builder, "{sv}", NMD_DEVICE_PROPS_PATH, g_variant_new_object_path (nm_exported_object_get_path (NM_EXPORTED_OBJECT (device)))); + proxy_config = nm_device_get_proxy_config (device); + if (proxy_config) + dump_proxy_to_props (proxy_config, proxy_builder); + ip4_config = nm_device_get_ip4_config (device); if (ip4_config) dump_ip4_to_props (ip4_config, ip4_builder); @@ -272,11 +295,15 @@ fill_device_props (NMDevice *device, } static void -fill_vpn_props (NMIP4Config *ip4_config, +fill_vpn_props (NMProxyConfig *proxy_config, + NMIP4Config *ip4_config, NMIP6Config *ip6_config, + GVariantBuilder *proxy_builder, GVariantBuilder *ip4_builder, GVariantBuilder *ip6_builder) { + if (proxy_config) + dump_proxy_to_props (proxy_config, proxy_builder); if (ip4_config) dump_ip4_to_props (ip4_config, ip4_builder); if (ip6_config) @@ -454,6 +481,7 @@ _dispatcher_call (DispatcherAction action, NMDevice *device, NMConnectivityState connectivity_state, const char *vpn_iface, + NMProxyConfig *vpn_proxy_config, NMIP4Config *vpn_ip4_config, NMIP6Config *vpn_ip6_config, DispatcherFunc callback, @@ -463,10 +491,12 @@ _dispatcher_call (DispatcherAction action, GVariant *connection_dict; GVariantBuilder connection_props; GVariantBuilder device_props; + GVariantBuilder device_proxy_props; GVariantBuilder device_ip4_props; GVariantBuilder device_ip6_props; GVariant *device_dhcp4_props = NULL; GVariant *device_dhcp6_props = NULL; + GVariantBuilder vpn_proxy_props; GVariantBuilder vpn_ip4_props; GVariantBuilder vpn_ip6_props; DispatchInfo *info = NULL; @@ -551,8 +581,10 @@ _dispatcher_call (DispatcherAction action, } g_variant_builder_init (&device_props, G_VARIANT_TYPE_VARDICT); + g_variant_builder_init (&device_proxy_props, G_VARIANT_TYPE_VARDICT); g_variant_builder_init (&device_ip4_props, G_VARIANT_TYPE_VARDICT); g_variant_builder_init (&device_ip6_props, G_VARIANT_TYPE_VARDICT); + g_variant_builder_init (&vpn_proxy_props, G_VARIANT_TYPE_VARDICT); g_variant_builder_init (&vpn_ip4_props, G_VARIANT_TYPE_VARDICT); g_variant_builder_init (&vpn_ip6_props, G_VARIANT_TYPE_VARDICT); @@ -561,13 +593,16 @@ _dispatcher_call (DispatcherAction action, && action != DISPATCHER_ACTION_CONNECTIVITY_CHANGE) { fill_device_props (device, &device_props, + &device_proxy_props, &device_ip4_props, &device_ip6_props, &device_dhcp4_props, &device_dhcp6_props); if (vpn_ip4_config || vpn_ip6_config) { - fill_vpn_props (vpn_ip4_config, + fill_vpn_props (vpn_proxy_config, + vpn_ip4_config, vpn_ip6_config, + &vpn_proxy_props, &vpn_ip4_props, &vpn_ip6_props); } @@ -584,17 +619,19 @@ _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}ssa{sv}a{sv}b)", + g_variant_new ("(s@a{sa{sv}}a{sv}a{sv}a{sv}a{sv}a{sv}@a{sv}@a{sv}ssa{sv}a{sv}a{sv}b)", action_to_string (action), connection_dict, &connection_props, &device_props, + &device_proxy_props, &device_ip4_props, &device_ip6_props, device_dhcp4_props, device_dhcp6_props, nm_connectivity_state_to_string (connectivity_state), vpn_iface ? vpn_iface : "", + &vpn_proxy_props, &vpn_ip4_props, &vpn_ip6_props, nm_logging_enabled (LOGL_DEBUG, LOGD_DISPATCH)), @@ -620,17 +657,19 @@ _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}ssa{sv}a{sv}b)", + g_variant_new ("(s@a{sa{sv}}a{sv}a{sv}a{sv}a{sv}a{sv}@a{sv}@a{sv}ssa{sv}a{sv}a{sv}b)", action_to_string (action), connection_dict, &connection_props, &device_props, + &device_proxy_props, &device_ip4_props, &device_ip6_props, device_dhcp4_props, device_dhcp6_props, nm_connectivity_state_to_string (connectivity_state), vpn_iface ? vpn_iface : "", + &vpn_proxy_props, &vpn_ip4_props, &vpn_ip6_props, nm_logging_enabled (LOGL_DEBUG, LOGD_DISPATCH)), @@ -680,7 +719,7 @@ nm_dispatcher_call (DispatcherAction action, guint *out_call_id) { return _dispatcher_call (action, FALSE, settings_connection, applied_connection, device, - NM_CONNECTIVITY_UNKNOWN, NULL, NULL, NULL, + NM_CONNECTIVITY_UNKNOWN, NULL, NULL, NULL, NULL, callback, user_data, out_call_id); } @@ -703,7 +742,7 @@ nm_dispatcher_call_sync (DispatcherAction action, NMDevice *device) { return _dispatcher_call (action, TRUE, settings_connection, applied_connection, device, - NM_CONNECTIVITY_UNKNOWN, NULL, NULL, NULL, NULL, NULL, NULL); + NM_CONNECTIVITY_UNKNOWN, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } /** @@ -713,6 +752,7 @@ nm_dispatcher_call_sync (DispatcherAction action, * @applied_connection: the currently applied connection * @parent_device: the parent #NMDevice of the VPN connection * @vpn_iface: the IP interface of the VPN tunnel, if any + * @vpn_proxy_config: the #NMProxyConfig of the VPN connection * @vpn_ip4_config: the #NMIP4Config of the VPN connection * @vpn_ip6_config: the #NMIP6Config of the VPN connection * @callback: a caller-supplied callback to execute when done @@ -731,6 +771,7 @@ nm_dispatcher_call_vpn (DispatcherAction action, NMConnection *applied_connection, NMDevice *parent_device, const char *vpn_iface, + NMProxyConfig *vpn_proxy_config, NMIP4Config *vpn_ip4_config, NMIP6Config *vpn_ip6_config, DispatcherFunc callback, @@ -738,8 +779,8 @@ nm_dispatcher_call_vpn (DispatcherAction action, guint *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); + parent_device, NM_CONNECTIVITY_UNKNOWN, vpn_iface, vpn_proxy_config, + vpn_ip4_config, vpn_ip6_config, callback, user_data, out_call_id); } /** @@ -749,6 +790,7 @@ nm_dispatcher_call_vpn (DispatcherAction action, * @applied_connection: the currently applied connection * @parent_device: the parent #NMDevice of the VPN connection * @vpn_iface: the IP interface of the VPN tunnel, if any + * @vpn_proxy_config: the #NMProxyConfig of the VPN connection * @vpn_ip4_config: the #NMIP4Config of the VPN connection * @vpn_ip6_config: the #NMIP6Config of the VPN connection * @@ -763,11 +805,12 @@ nm_dispatcher_call_vpn_sync (DispatcherAction action, NMConnection *applied_connection, NMDevice *parent_device, const char *vpn_iface, + NMProxyConfig *vpn_proxy_config, NMIP4Config *vpn_ip4_config, NMIP6Config *vpn_ip6_config) { return _dispatcher_call (action, TRUE, settings_connection, applied_connection, - parent_device, NM_CONNECTIVITY_UNKNOWN, vpn_iface, + parent_device, NM_CONNECTIVITY_UNKNOWN, vpn_iface, vpn_proxy_config, vpn_ip4_config, vpn_ip6_config, NULL, NULL, NULL); } @@ -785,7 +828,7 @@ nm_dispatcher_call_connectivity (DispatcherAction action, NMConnectivityState connectivity_state) { return _dispatcher_call (action, FALSE, NULL, NULL, NULL, connectivity_state, - NULL, NULL, NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL, NULL, NULL); } void |