iwd: Add nm_iwd_manager_get_netconfig_enabled

Expose the NetworkConfigurationEnabled boolean setting from IWD through
an NMIwdManager method nm_iwd_manager_get_netconfig_enabled().
This commit is contained in:
Andrew Zaborowski 2021-09-29 19:48:19 +02:00 committed by Thomas Haller
parent 98ff7528ed
commit 2e7d4aa2f7
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 22 additions and 0 deletions

View file

@ -49,6 +49,7 @@ typedef struct {
NMDeviceIwd *last_agent_call_device;
char *last_state_dir;
char *warned_state_dir;
bool netconfig_enabled;
} NMIwdManagerPrivate;
struct _NMIwdManager {
@ -1469,6 +1470,15 @@ get_daemon_info_cb(GObject *source, GAsyncResult *res, gpointer user_data)
nm_clear_g_free(&priv->last_state_dir);
priv->last_state_dir = g_variant_dup_string(value, NULL);
} else if (nm_streq(key, "NetworkConfigurationEnabled")) {
if (!g_variant_is_of_type(value, G_VARIANT_TYPE_BOOLEAN)) {
_LOGE("Daemon.GetInfo property %s is typed '%s' instead of 'b'",
key,
g_variant_get_type_string(value));
goto next;
}
priv->netconfig_enabled = g_variant_get_boolean(value);
}
next:
@ -1543,6 +1553,8 @@ got_object_manager(GObject *object, GAsyncResult *result, gpointer user_data)
if (priv->agent_id)
register_agent(self);
priv->netconfig_enabled = false; /* Assume false until GetInfo() results come in */
daemon = g_dbus_object_manager_get_interface(object_manager,
"/net/connman/iwd", /* IWD 1.15+ */
NM_IWD_DAEMON_INTERFACE);
@ -1639,6 +1651,14 @@ nm_iwd_manager_get_dbus_interface(NMIwdManager *self, const char *path, const ch
return interface ? G_DBUS_PROXY(interface) : NULL;
}
gboolean
nm_iwd_manager_get_netconfig_enabled(NMIwdManager *self)
{
NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE(self);
return priv->netconfig_enabled;
}
/*****************************************************************************/
NM_DEFINE_SINGLETON_GETTER(NMIwdManager, nm_iwd_manager_get, NM_TYPE_IWD_MANAGER);

View file

@ -51,4 +51,6 @@ NMSettingsConnection *nm_iwd_manager_get_ap_mirror_connection(NMIwdManager *self
GDBusProxy *
nm_iwd_manager_get_dbus_interface(NMIwdManager *self, const char *path, const char *name);
gboolean nm_iwd_manager_get_netconfig_enabled(NMIwdManager *self);
#endif /* __NETWORKMANAGER_IWD_MANAGER_H__ */