mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-27 03:30:09 +01:00
policy: use "agent-registered" signal directly from NMAgentManager instead of NMSettings
(cherry picked from commit 46af70b508)
This commit is contained in:
parent
44cd35c16c
commit
37ac96cb55
3 changed files with 13 additions and 34 deletions
|
|
@ -44,6 +44,7 @@
|
|||
#include "nm-manager.h"
|
||||
#include "settings/nm-settings.h"
|
||||
#include "settings/nm-settings-connection.h"
|
||||
#include "settings/nm-agent-manager.h"
|
||||
#include "nm-dhcp4-config.h"
|
||||
#include "nm-dhcp6-config.h"
|
||||
#include "nm-config.h"
|
||||
|
|
@ -67,6 +68,8 @@ typedef struct {
|
|||
NMFirewallManager *firewall_manager;
|
||||
CList pending_activation_checks;
|
||||
|
||||
NMAgentManager *agent_mgr;
|
||||
|
||||
GHashTable *devices;
|
||||
GHashTable *pending_active_connections;
|
||||
|
||||
|
|
@ -2374,8 +2377,7 @@ secret_agent_registered (NMSettings *settings,
|
|||
NMSecretAgent *agent,
|
||||
gpointer user_data)
|
||||
{
|
||||
NMPolicyPrivate *priv = user_data;
|
||||
NMPolicy *self = _PRIV_TO_SELF (priv);
|
||||
NMPolicy *self = NM_POLICY (user_data);
|
||||
|
||||
/* The registered secret agent may provide some missing secrets. Thus we
|
||||
* reset retries count here and schedule activation, so that the
|
||||
|
|
@ -2520,6 +2522,8 @@ constructed (GObject *object)
|
|||
_LOGT (LOGD_DNS, "hostname-original: set to %s%s%s",
|
||||
NM_PRINT_FMT_QUOTE_STRING (priv->orig_hostname));
|
||||
|
||||
priv->agent_mgr = g_object_ref (nm_agent_manager_get ());
|
||||
|
||||
priv->firewall_manager = g_object_ref (nm_firewall_manager_get ());
|
||||
g_signal_connect (priv->firewall_manager, NM_FIREWALL_MANAGER_STATE_CHANGED,
|
||||
G_CALLBACK (firewall_state_changed), self);
|
||||
|
|
@ -2544,7 +2548,8 @@ constructed (GObject *object)
|
|||
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_UPDATED, (GCallback) connection_updated, priv);
|
||||
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_REMOVED, (GCallback) connection_removed, priv);
|
||||
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_CONNECTION_VISIBILITY_CHANGED, (GCallback) connection_visibility_changed, priv);
|
||||
g_signal_connect (priv->settings, NM_SETTINGS_SIGNAL_AGENT_REGISTERED, (GCallback) secret_agent_registered, priv);
|
||||
|
||||
g_signal_connect (priv->agent_mgr, NM_AGENT_MANAGER_AGENT_REGISTERED, G_CALLBACK (secret_agent_registered), self);
|
||||
|
||||
G_OBJECT_CLASS (nm_policy_parent_class)->constructed (object);
|
||||
|
||||
|
|
@ -2593,6 +2598,11 @@ dispose (GObject *object)
|
|||
g_clear_object (&priv->firewall_manager);
|
||||
}
|
||||
|
||||
if (priv->agent_mgr) {
|
||||
g_signal_handlers_disconnect_by_func (priv->agent_mgr, secret_agent_registered, self);
|
||||
g_clear_object (&priv->agent_mgr);
|
||||
}
|
||||
|
||||
if (priv->dns_manager) {
|
||||
nm_clear_g_signal_handler (priv->dns_manager, &priv->config_changed_id);
|
||||
g_clear_object (&priv->dns_manager);
|
||||
|
|
|
|||
|
|
@ -128,7 +128,6 @@ enum {
|
|||
CONNECTION_UPDATED,
|
||||
CONNECTION_REMOVED,
|
||||
CONNECTION_VISIBILITY_CHANGED,
|
||||
AGENT_REGISTERED,
|
||||
NEW_CONNECTION, /* exported, not used internally */
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
|
@ -878,18 +877,6 @@ connection_removed (NMSettingsConnection *connection, gpointer user_data)
|
|||
g_object_unref (connection);
|
||||
}
|
||||
|
||||
static void
|
||||
secret_agent_registered (NMAgentManager *agent_mgr,
|
||||
NMSecretAgent *agent,
|
||||
gpointer user_data)
|
||||
{
|
||||
/* Re-emit for listeners like NMPolicy */
|
||||
g_signal_emit (NM_SETTINGS (user_data),
|
||||
signals[AGENT_REGISTERED],
|
||||
0,
|
||||
agent);
|
||||
}
|
||||
|
||||
#define NM_DBUS_SERVICE_OPENCONNECT "org.freedesktop.NetworkManager.openconnect"
|
||||
#define NM_OPENCONNECT_KEY_GATEWAY "gateway"
|
||||
#define NM_OPENCONNECT_KEY_COOKIE "cookie"
|
||||
|
|
@ -1888,16 +1875,8 @@ nm_settings_init (NMSettings *self)
|
|||
|
||||
priv->connections = g_hash_table_new_full (nm_str_hash, g_str_equal, NULL, g_object_unref);
|
||||
|
||||
/* Hold a reference to the agent manager so it stays alive; the only
|
||||
* other holders are NMSettingsConnection objects which are often
|
||||
* transient, and we don't want the agent manager to get destroyed and
|
||||
* recreated often.
|
||||
*/
|
||||
priv->agent_mgr = g_object_ref (nm_agent_manager_get ());
|
||||
|
||||
priv->config = g_object_ref (nm_config_get ());
|
||||
|
||||
g_signal_connect (priv->agent_mgr, NM_AGENT_MANAGER_AGENT_REGISTERED, G_CALLBACK (secret_agent_registered), self);
|
||||
}
|
||||
|
||||
NMSettings *
|
||||
|
|
@ -2022,15 +2001,6 @@ nm_settings_class_init (NMSettingsClass *class)
|
|||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1, NM_TYPE_SETTINGS_CONNECTION);
|
||||
|
||||
signals[AGENT_REGISTERED] =
|
||||
g_signal_new (NM_SETTINGS_SIGNAL_AGENT_REGISTERED,
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
0, NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1, NM_TYPE_SECRET_AGENT);
|
||||
|
||||
|
||||
signals[NEW_CONNECTION] =
|
||||
g_signal_new ("new-connection",
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@
|
|||
#define NM_SETTINGS_SIGNAL_CONNECTION_UPDATED "connection-updated"
|
||||
#define NM_SETTINGS_SIGNAL_CONNECTION_REMOVED "connection-removed"
|
||||
#define NM_SETTINGS_SIGNAL_CONNECTION_VISIBILITY_CHANGED "connection-visibility-changed"
|
||||
#define NM_SETTINGS_SIGNAL_AGENT_REGISTERED "agent-registered"
|
||||
|
||||
/**
|
||||
* NMConnectionFilterFunc:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue