Add a function that maps to the net.connman.iwd.KnownNetworks.ForgetNetwork DBus call and causes an IWD Known Network to be forgotten with its config file removed. --- src/devices/wifi/nm-iwd-manager.c | 36 ++++++++++++++++++++++++++++++++++++ src/devices/wifi/nm-iwd-manager.h | 2 ++ 2 files changed, 38 insertions(+)
diff --git a/src/devices/wifi/nm-iwd-manager.c b/src/devices/wifi/nm-iwd-manager.c index 8897f43a4..d785c1100 100644 --- a/src/devices/wifi/nm-iwd-manager.c +++ b/src/devices/wifi/nm-iwd-manager.c @@ -639,6 +639,42 @@ nm_iwd_manager_network_connected (NMIwdManager *self, const gchar *name, g_signal_emit (self, signals[KNOWN_NETWORKS_CHANGED], 0, priv->known_networks); } +void +nm_iwd_manager_forget_network (NMIwdManager *self, const gchar *name, + NMIwdNetworkSecurity security) +{ + NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE (self); + gs_unref_object GDBusInterface *known_networks_if = NULL; + const char *security_str = + security == NM_IWD_NETWORK_SECURITY_NONE ? "open" : + security == NM_IWD_NETWORK_SECURITY_PSK ? "psk" : "8021x"; + const GSList *iter; + + known_networks_if = g_dbus_object_manager_get_interface (priv->object_manager, + "/", + NM_IWD_KNOWN_NETWORKS_INTERFACE); + + g_dbus_proxy_call (G_DBUS_PROXY (known_networks_if), + "ForgetNetwork", + g_variant_new ("(ss)", name, security_str), + G_DBUS_CALL_FLAGS_NONE, -1, + NULL, NULL, NULL); + + g_object_unref (known_networks_if); + + for (iter = priv->known_networks; iter; iter = g_slist_next (iter)) { + const NMIwdKnownNetworkData *network = iter->data; + + if (strcmp (network->name, name) || network->security != security) + continue; + + priv->known_networks = g_slist_remove (priv->known_networks, network); + break; + } + + g_signal_emit (self, signals[KNOWN_NETWORKS_CHANGED], 0, priv->known_networks); +} + /*****************************************************************************/ NM_DEFINE_SINGLETON_GETTER (NMIwdManager, nm_iwd_manager_get, diff --git a/src/devices/wifi/nm-iwd-manager.h b/src/devices/wifi/nm-iwd-manager.h index 96b5e2c26..a4491286e 100644 --- a/src/devices/wifi/nm-iwd-manager.h +++ b/src/devices/wifi/nm-iwd-manager.h @@ -69,5 +69,7 @@ gboolean nm_iwd_manager_is_known_network (NMIwdManager *self, const gchar *name, NMIwdNetworkSecurity security); void nm_iwd_manager_network_connected (NMIwdManager *self, const gchar *name, NMIwdNetworkSecurity security); +void nm_iwd_manager_forget_network (NMIwdManager *self, const gchar *name, + NMIwdNetworkSecurity security); #endif /* __NETWORKMANAGER_IWD_MANAGER_H__ */ -- 2.14.1 _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list