Re: Status of NM with LEAP authentication feature.
- From: "Thiago Bauermann" <thiago bauermann gmail com>
- To: "Dan Williams" <dcbw redhat com>
- Cc: networkmanager-list gnome org
- Subject: Re: Status of NM with LEAP authentication feature.
- Date: Sat, 14 Oct 2006 01:53:12 -0300
2006/10/13, Thiago Bauermann <
thiago bauermann gmail com>:
2006/10/12, Dan Williams <dcbw redhat com>:
On Wed, 2006-10-11 at 16:10 -0500, Aaron Konstam wrote:
> Up to now I have been using NM with LEAP authentication on my FC5
> machine. To do this I had to download the source from the CVS repository
> and compile.
> Will this version of NM be ever be ready as an RPM? In FC6 maybe?
Somebody could backport the patch... hint hint :) It's pretty
self-contained.
I have just downloaded the source tarball for NM
0.6.4 and applied the LEAP patch to it.
Amasingly enough, the only reject is in src/Makefile.am, which is trivial to fix.
NM compiled and ran correctly. Unfortunately, I don't have a
LEAP network around right now,
so I can't confirm that it connects to it, but I think it would. At least NM does all the steps it should and sends wpa_supplicant the correct config for a LEAP network...
Ok, just to confirm: the LEAP patch works without problems on 0.6.x versions of NM (I'm using it right now on NM 0.6.3! :-) ). Attached is a patch which applies cleanly to 0.6.x
.
--
[]'s
Thiago Jung Bauermann
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/applet.glade NetworkManager-0.6.3/gnome/applet/applet.glade
--- NetworkManager-0.6.3.orig/gnome/applet/applet.glade 2006-05-29 00:35:15.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/applet.glade 2006-10-14 01:33:36.000000000 -0300
@@ -1990,7 +1990,7 @@ Shared Key</property>
<widget class="GtkTable" id="table5">
<property name="border_width">6</property>
<property name="visible">True</property>
- <property name="n_rows">2</property>
+ <property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
@@ -2091,6 +2091,51 @@ Shared Key</property>
<property name="y_options"></property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkLabel" id="leap_key_mgmt">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Key management:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="leap_key_mgmt_combobox">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes"></property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="tab_expand">False</property>
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/Makefile.am NetworkManager-0.6.3/gnome/applet/Makefile.am
--- NetworkManager-0.6.3.orig/gnome/applet/Makefile.am 2006-05-24 12:07:38.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/Makefile.am 2006-10-14 01:33:36.000000000 -0300
@@ -82,6 +82,8 @@ nm_applet_SOURCES = \
wso-wpa-eap.h \
wso-wpa-psk.c \
wso-wpa-psk.h \
+ wso-leap.c \
+ wso-leap.h \
nm-gconf-wso.c \
nm-gconf-wso.h \
nm-gconf-wso-private.h \
@@ -91,6 +93,8 @@ nm_applet_SOURCES = \
nm-gconf-wso-wpa-eap.h \
nm-gconf-wso-wpa-psk.c \
nm-gconf-wso-wpa-psk.h \
+ nm-gconf-wso-leap.c \
+ nm-gconf-wso-leap.h \
gconf-helpers.c \
gconf-helpers.h \
$(NULL)
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/nm-gconf-wso.c NetworkManager-0.6.3/gnome/applet/nm-gconf-wso.c
--- NetworkManager-0.6.3.orig/gnome/applet/nm-gconf-wso.c 2006-03-27 12:14:05.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/nm-gconf-wso.c 2006-10-14 01:33:36.000000000 -0300
@@ -95,6 +95,10 @@ nm_gconf_wso_new_deserialize_dbus (DBusM
security = NM_GCONF_WSO (nm_gconf_wso_wpa_eap_new_deserialize_dbus (iter, we_cipher));
break;
+ case NM_AUTH_TYPE_LEAP:
+ security = NM_GCONF_WSO (nm_gconf_wso_leap_new_deserialize_dbus (iter, we_cipher));
+ break;
+
default:
break;
}
@@ -141,6 +145,10 @@ nm_gconf_wso_new_deserialize_gconf (GCon
security = NM_GCONF_WSO (nm_gconf_wso_wpa_eap_new_deserialize_gconf (client, network, we_cipher));
break;
+ case NM_AUTH_TYPE_LEAP:
+ security = NM_GCONF_WSO (nm_gconf_wso_leap_new_deserialize_gconf (client, network, we_cipher));
+ break;
+
default:
break;
}
@@ -187,6 +195,7 @@ nm_gconf_wso_set_we_cipher (NMGConfWSO *
g_return_if_fail (
(we_cipher == NM_AUTH_TYPE_WPA_PSK_AUTO)
|| (we_cipher == NM_AUTH_TYPE_WPA_EAP)
+ || (we_cipher == NM_AUTH_TYPE_LEAP)
|| (we_cipher == IW_AUTH_CIPHER_NONE)
|| (we_cipher == IW_AUTH_CIPHER_WEP40)
|| (we_cipher == IW_AUTH_CIPHER_WEP104)
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/nm-gconf-wso-leap.c NetworkManager-0.6.3/gnome/applet/nm-gconf-wso-leap.c
--- NetworkManager-0.6.3.orig/gnome/applet/nm-gconf-wso-leap.c 1969-12-31 21:00:00.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/nm-gconf-wso-leap.c 2006-10-14 01:33:36.000000000 -0300
@@ -0,0 +1,178 @@
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Thiago Jung Bauermann <thiago bauermann gmail com>
+ */
+
+/* This file is heavily based on nm-gconf-wso-wpa-eap.c */
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <dbus/dbus.h>
+#include <iwlib.h>
+
+#include "applet.h"
+#include "nm-gconf-wso.h"
+#include "nm-gconf-wso-leap.h"
+#include "nm-gconf-wso-private.h"
+#include "dbus-helpers.h"
+#include "gconf-helpers.h"
+
+#define LEAP_PREFIX "leap_"
+
+#define NM_GCONF_WSO_LEAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_GCONF_WSO_LEAP, NMGConfWSOLEAPPrivate))
+
+struct _NMGConfWSOLEAPPrivate
+{
+ const char * username;
+ const char * key_mgmt;
+};
+
+
+NMGConfWSOLEAP *
+nm_gconf_wso_leap_new_deserialize_dbus (DBusMessageIter *iter, int we_cipher)
+{
+ NMGConfWSOLEAP * security = NULL;
+ char * username = NULL;
+ char * password = NULL;
+ char * key_mgmt = NULL;
+
+ g_return_val_if_fail (we_cipher == NM_AUTH_TYPE_LEAP, NULL);
+ g_return_val_if_fail (iter != NULL, NULL);
+
+ if (!nmu_security_deserialize_leap (iter, &username, &password, &key_mgmt))
+ goto out;
+
+ /* Success, build up our security object */
+ security = g_object_new (NM_TYPE_GCONF_WSO_LEAP, NULL);
+ nm_gconf_wso_set_we_cipher (NM_GCONF_WSO (security), we_cipher);
+ if (password)
+ nm_gconf_wso_set_key (NM_GCONF_WSO (security), password, strlen(password));
+ if (username)
+ security->priv->username = g_strdup (username);
+ if (key_mgmt)
+ security->priv->key_mgmt = g_strdup (key_mgmt);
+
+out:
+ return security;
+}
+
+
+NMGConfWSOLEAP *
+nm_gconf_wso_leap_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher)
+{
+ NMGConfWSOLEAP * security = NULL;
+ char * username = NULL;
+ char * key_mgmt = NULL;
+
+ g_return_val_if_fail (client != NULL, NULL);
+ g_return_val_if_fail (network != NULL, NULL);
+ g_return_val_if_fail ((we_cipher == NM_AUTH_TYPE_LEAP), NULL);
+
+ nm_gconf_get_string_helper (client,
+ GCONF_PATH_WIRELESS_NETWORKS,
+ LEAP_PREFIX"username",
+ network,
+ &username);
+
+ nm_gconf_get_string_helper (client,
+ GCONF_PATH_WIRELESS_NETWORKS,
+ LEAP_PREFIX"key_mgmt",
+ network,
+ &key_mgmt);
+
+ /* Success, build up our security object */
+ security = g_object_new (NM_TYPE_GCONF_WSO_LEAP, NULL);
+ nm_gconf_wso_set_we_cipher (NM_GCONF_WSO (security), we_cipher);
+ security->priv->username = username;
+ security->priv->key_mgmt = key_mgmt;
+
+ return security;
+}
+
+
+static gboolean
+real_serialize_dbus (NMGConfWSO *instance, DBusMessageIter *iter)
+{
+ NMGConfWSOLEAP * self = NM_GCONF_WSO_LEAP (instance);
+
+ if (!nmu_security_serialize_leap (iter, self->priv->username,
+ nm_gconf_wso_get_key(instance), self->priv->key_mgmt))
+ return FALSE;
+ return TRUE;
+}
+
+static gboolean
+real_serialize_gconf (NMGConfWSO *instance, GConfClient *client, const char *network)
+{
+ NMGConfWSOLEAP * self = NM_GCONF_WSO_LEAP (instance);
+ char * key;
+
+ key = g_strdup_printf ("%s/%s/%susername", GCONF_PATH_WIRELESS_NETWORKS, network, LEAP_PREFIX);
+ gconf_client_set_string (client, key, self->priv->username, NULL);
+ g_free (key);
+
+ key = g_strdup_printf ("%s/%s/%skey_mgmt", GCONF_PATH_WIRELESS_NETWORKS, network, LEAP_PREFIX);
+ gconf_client_set_string (client, key, self->priv->key_mgmt, NULL);
+ g_free (key);
+
+ return TRUE;
+}
+
+
+static void
+nm_gconf_wso_leap_init (NMGConfWSOLEAP *self)
+{
+ self->priv = NM_GCONF_WSO_LEAP_GET_PRIVATE (self);
+}
+
+
+static void
+nm_gconf_wso_leap_class_init (NMGConfWSOLEAPClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ NMGConfWSOClass *par_class = NM_GCONF_WSO_CLASS (klass);
+
+ par_class->serialize_dbus_func = real_serialize_dbus;
+ par_class->serialize_gconf_func = real_serialize_gconf;
+
+ g_type_class_add_private (object_class, sizeof (NMGConfWSOLEAPPrivate));
+}
+
+
+GType
+nm_gconf_wso_leap_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (NMGConfWSOLEAPClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) nm_gconf_wso_leap_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (NMGConfWSOLEAP),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) nm_gconf_wso_leap_init,
+ NULL /* value_table */
+ };
+ type = g_type_register_static (NM_TYPE_GCONF_WSO,
+ "NMGConfWSOLEAP",
+ &info, 0);
+ }
+ return type;
+}
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/nm-gconf-wso-leap.h NetworkManager-0.6.3/gnome/applet/nm-gconf-wso-leap.h
--- NetworkManager-0.6.3.orig/gnome/applet/nm-gconf-wso-leap.h 1969-12-31 21:00:00.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/nm-gconf-wso-leap.h 2006-10-14 01:33:36.000000000 -0300
@@ -0,0 +1,60 @@
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Thiago Jung Bauermann <thiago bauermann gmail com>
+ */
+
+/* This file is heavily based on nm-gconf-wso-wpa-eap.h */
+
+#ifndef NM_GCONF_WSO_LEAP_H
+#define NM_GCONF_WSO_LEAP_H
+
+#include <glib-object.h>
+#include <dbus/dbus.h>
+#include <gconf/gconf-client.h>
+
+#define NM_TYPE_GCONF_WSO_LEAP (nm_gconf_wso_leap_get_type ())
+#define NM_GCONF_WSO_LEAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_GCONF_WSO_LEAP, NMGConfWSOLEAP))
+#define NM_GCONF_WSO_LEAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_GCONF_WSO_LEAP, NMGConfWSOLEAPClass))
+#define NM_IS_GCONF_WSO_LEAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_GCONF_WSO_LEAP))
+#define NM_IS_GCONF_WSO_LEAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_GCONF_WSO_LEAP))
+#define NM_GCONF_WSO_LEAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_GCONF_WSO_LEAP, NMGConfWSOLEAPClass))
+
+typedef struct _NMGConfWSOLEAP NMGConfWSOLEAP;
+typedef struct _NMGConfWSOLEAPClass NMGConfWSOLEAPClass;
+typedef struct _NMGConfWSOLEAPPrivate NMGConfWSOLEAPPrivate;
+
+struct _NMGConfWSOLEAP
+{
+ NMGConfWSO parent;
+
+ /*< private >*/
+ NMGConfWSOLEAPPrivate *priv;
+};
+
+struct _NMGConfWSOLEAPClass
+{
+ NMGConfWSOClass parent;
+};
+
+
+GType nm_gconf_wso_leap_get_type (void);
+
+NMGConfWSOLEAP * nm_gconf_wso_leap_new_deserialize_dbus (DBusMessageIter *iter, int we_cipher);
+
+NMGConfWSOLEAP * nm_gconf_wso_leap_new_deserialize_gconf (GConfClient *client, const char *network, int we_cipher);
+
+#endif /* NM_GCONF_WSO_LEAP_H */
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/wireless-security-manager.c NetworkManager-0.6.3/gnome/applet/wireless-security-manager.c
--- NetworkManager-0.6.3.orig/gnome/applet/wireless-security-manager.c 2006-02-25 23:16:52.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/wireless-security-manager.c 2006-10-14 01:33:36.000000000 -0300
@@ -36,6 +36,7 @@
#include "wso-wep-passphrase.h"
#include "wso-wpa-eap.h"
#include "wso-wpa-psk.h"
+#include "wso-leap.h"
struct WirelessSecurityManager
{
@@ -116,6 +117,9 @@ gboolean wsm_set_capabilities (WirelessS
}
}
+ if ((opt = wso_leap_new (wsm->glade_file, capabilities)))
+ wsm->options = g_slist_append (wsm->options, opt);
+
if (!wsm->options)
{
nm_warning ("capabilities='%x' and did not match any protocals, not even none!", capabilities);
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/wso-leap.c NetworkManager-0.6.3/gnome/applet/wso-leap.c
--- NetworkManager-0.6.3.orig/gnome/applet/wso-leap.c 1969-12-31 21:00:00.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/wso-leap.c 2006-10-14 01:33:36.000000000 -0300
@@ -0,0 +1,169 @@
+/* NetworkManager Wireless Applet -- Display wireless access points and allow user control
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Thiago Jung Bauermann <thiago bauermann gmail com>
+ */
+
+/* This file is heavily based on wso-wpa-eap.c */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <dbus/dbus.h>
+#include <iwlib.h>
+
+#include "wireless-security-option.h"
+#include "wso-leap.h"
+#include "wso-private.h"
+#include "dbus-helpers.h"
+#include "NetworkManager.h"
+
+
+struct OptData
+{
+ const char * username;
+ const char * passwd;
+ const char * key_mgmt;
+};
+
+
+static void
+data_free_func (WirelessSecurityOption *opt)
+{
+ g_return_if_fail (opt != NULL);
+ g_return_if_fail (opt->data != NULL);
+
+ if (opt->data->key_mgmt) {
+ g_free((char *) opt->data->key_mgmt);
+ }
+
+ memset (opt->data, 0, sizeof (opt->data));
+ g_free (opt->data);
+}
+
+
+static gboolean
+append_dbus_params_func (WirelessSecurityOption *opt,
+ const char *ssid,
+ DBusMessage *message)
+{
+ GtkWidget * entry;
+ GtkTreeModel * combo_model;
+ GtkTreeIter iter;
+ DBusMessageIter dbus_iter;
+
+ g_return_val_if_fail (opt != NULL, FALSE);
+ g_return_val_if_fail (opt->data != NULL, FALSE);
+
+ entry = glade_xml_get_widget (opt->uixml, "leap_username_entry");
+ opt->data->username = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ entry = glade_xml_get_widget (opt->uixml, "leap_password_entry");
+ opt->data->passwd = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ entry = glade_xml_get_widget (opt->uixml, "leap_key_mgmt_combobox");
+ combo_model = gtk_combo_box_get_model(GTK_COMBO_BOX(entry));
+ gtk_combo_box_get_active_iter(GTK_COMBO_BOX(entry), &iter);
+ gtk_tree_model_get(combo_model, &iter, 1, &opt->data->key_mgmt, -1);
+
+ dbus_message_iter_init_append (message, &dbus_iter);
+
+ nmu_security_serialize_leap_with_cipher (&dbus_iter,
+ opt->data->username,
+ opt->data->passwd,
+ opt->data->key_mgmt);
+
+ return TRUE;
+}
+
+static GtkWidget *
+widget_create_func (WirelessSecurityOption *opt,
+ GtkSignalFunc validate_cb,
+ gpointer user_data)
+{
+ GtkWidget * entry;
+ GtkWidget * widget;
+ GtkWidget * key_mgmt;
+ GtkListStore * list_store;
+ GtkTreeIter iter;
+
+ g_return_val_if_fail (opt != NULL, NULL);
+ g_return_val_if_fail (opt->data != NULL, NULL);
+ g_return_val_if_fail (validate_cb != NULL, NULL);
+
+ widget = wso_widget_helper (opt);
+
+ entry = glade_xml_get_widget (opt->uixml, "leap_username_entry");
+ g_signal_connect (G_OBJECT (entry), "changed", validate_cb, user_data);
+
+ entry = glade_xml_get_widget (opt->uixml, "leap_password_entry");
+ g_signal_connect (G_OBJECT (entry), "changed", validate_cb, user_data);
+
+ /* set-up key_mgmt combo box */
+
+ key_mgmt = glade_xml_get_widget (opt->uixml, "leap_key_mgmt_combobox");
+
+ /* create tree model containing combo box items */
+ list_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, "IEEE 802.1X", 1, "IEEE8021X", -1);
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, "WPA-EAP", 1, "WPA-EAP", -1);
+
+ gtk_combo_box_set_model(GTK_COMBO_BOX(key_mgmt), GTK_TREE_MODEL(list_store));
+
+ /* set default choice to be IEEE 802.1X */
+ gtk_combo_box_set_active(GTK_COMBO_BOX(key_mgmt), 0);
+
+ return widget;
+}
+
+static gboolean
+validate_input_func (WirelessSecurityOption *opt,
+ const char *ssid,
+ IEEE_802_11_Cipher **out_cipher)
+{
+ return TRUE;
+}
+
+
+WirelessSecurityOption *
+wso_leap_new (const char *glade_file,
+ int capabilities)
+{
+ WirelessSecurityOption * opt = NULL;
+
+ g_return_val_if_fail (glade_file != NULL, NULL);
+
+ opt = g_malloc0 (sizeof (WirelessSecurityOption));
+ opt->name = g_strdup("LEAP");
+ opt->widget_name = "leap_notebook";
+ opt->data_free_func = data_free_func;
+ opt->validate_input_func = validate_input_func;
+ opt->widget_create_func = widget_create_func;
+ opt->append_dbus_params_func = append_dbus_params_func;
+
+ if (!(opt->uixml = glade_xml_new (glade_file, opt->widget_name, NULL)))
+ {
+ wso_free (opt);
+ return NULL;
+ }
+
+ /* Option-specific data */
+ opt->data = g_malloc0 (sizeof (OptData));
+
+ return opt;
+}
diff -pruN NetworkManager-0.6.3.orig/gnome/applet/wso-leap.h NetworkManager-0.6.3/gnome/applet/wso-leap.h
--- NetworkManager-0.6.3.orig/gnome/applet/wso-leap.h 1969-12-31 21:00:00.000000000 -0300
+++ NetworkManager-0.6.3/gnome/applet/wso-leap.h 2006-10-14 01:33:36.000000000 -0300
@@ -0,0 +1,27 @@
+/* NetworkManager Wireless Applet -- Display wireless access points and allow user control
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Thiago Jung Bauermann <thiago bauermann gmail com>
+ */
+
+/* This file is heavily based on wso-wpa-eap.h */
+
+#ifndef WSO_LEAP_H
+#define WSO_LEAP_H
+
+WirelessSecurityOption * wso_leap_new (const char *glade_file, int capabilities);
+
+#endif /* WSO_LEAP_H */
diff -pruN NetworkManager-0.6.3.orig/include/NetworkManager.h NetworkManager-0.6.3/include/NetworkManager.h
--- NetworkManager-0.6.3.orig/include/NetworkManager.h 2006-02-25 23:16:52.000000000 -0300
+++ NetworkManager-0.6.3/include/NetworkManager.h 2006-10-14 01:33:36.000000000 -0300
@@ -120,6 +120,7 @@ typedef enum NMDeviceType
#define NM_AUTH_TYPE_WPA_PSK_CCMP 0x00000008
#define NM_AUTH_TYPE_WEP104 0x00000010
#define NM_AUTH_TYPE_WPA_EAP 0x00000020
+#define NM_AUTH_TYPE_LEAP 0x00000040
/*
* EAP Methods
diff -pruN NetworkManager-0.6.3.orig/libnm-util/dbus-helpers.c NetworkManager-0.6.3/libnm-util/dbus-helpers.c
--- NetworkManager-0.6.3.orig/libnm-util/dbus-helpers.c 2006-05-09 12:05:50.000000000 -0300
+++ NetworkManager-0.6.3/libnm-util/dbus-helpers.c 2006-10-14 01:33:36.000000000 -0300
@@ -476,6 +476,83 @@ nmu_security_deserialize_wpa_eap (DBusMe
return TRUE;
}
+dbus_bool_t
+nmu_security_serialize_leap (DBusMessageIter *iter,
+ const char *username,
+ const char *passwd,
+ const char *key_mgmt)
+{
+ const char *fake_username = "";
+ const char *fake_passwd = "";
+
+ g_return_val_if_fail (iter != NULL, FALSE);
+ g_return_val_if_fail (key_mgmt != NULL, FALSE);
+
+ /* Second arg: Username (STRING) */
+ dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, username? &username : &fake_username);
+
+ /* Third arg: Password (STRING) */
+ dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, passwd? &passwd : &fake_passwd);
+
+ /* Fourth arg: Key management (STRING) */
+ dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &key_mgmt);
+}
+
+dbus_bool_t
+nmu_security_serialize_leap_with_cipher (DBusMessageIter *iter,
+ const char *username,
+ const char *passwd,
+ const char *key_mgmt)
+{
+ g_return_val_if_fail (iter != NULL, FALSE);
+
+ /* First arg: WE Cipher (INT32) */
+ we_cipher_append_helper (iter, NM_AUTH_TYPE_LEAP);
+
+ return nmu_security_serialize_leap (iter, username, passwd, key_mgmt);
+}
+
+dbus_bool_t
+nmu_security_deserialize_leap (DBusMessageIter *iter,
+ char **username,
+ char **passwd,
+ char **key_mgmt)
+{
+ char * dbus_username;
+ char * dbus_password;
+ char * dbus_key_mgmt;
+
+ g_return_val_if_fail (iter != NULL, FALSE);
+ g_return_val_if_fail (username != NULL, FALSE);
+ g_return_val_if_fail (*username == NULL, FALSE);
+ g_return_val_if_fail (passwd != NULL, FALSE);
+ g_return_val_if_fail (*passwd == NULL, FALSE);
+ g_return_val_if_fail (key_mgmt != NULL, FALSE);
+ g_return_val_if_fail (*key_mgmt == NULL, FALSE);
+
+ /* Second arg: Username (STRING) */
+ g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_STRING, FALSE);
+ dbus_message_iter_get_basic (iter, &dbus_username);
+ g_return_val_if_fail (dbus_username != NULL, FALSE);
+
+ /* Third arg: Password (STRING) */
+ g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
+ g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_STRING, FALSE);
+ dbus_message_iter_get_basic (iter, &dbus_password);
+ g_return_val_if_fail (dbus_password != NULL, FALSE);
+
+ /* Fourth arg: Password (STRING) */
+ g_return_val_if_fail (dbus_message_iter_next (iter), FALSE);
+ g_return_val_if_fail (dbus_message_iter_get_arg_type (iter) == DBUS_TYPE_STRING, FALSE);
+ dbus_message_iter_get_basic (iter, &dbus_key_mgmt);
+ g_return_val_if_fail (dbus_key_mgmt != NULL, FALSE);
+
+ *username = strlen (dbus_username) > 0 ? dbus_username : NULL;
+ *passwd = strlen (dbus_password) > 0 ? dbus_password : NULL;
+ *key_mgmt = strlen (dbus_key_mgmt) > 0 ? dbus_key_mgmt : NULL;
+
+ return TRUE;
+}
/*
* nmu_create_dbus_error_message
diff -pruN NetworkManager-0.6.3.orig/libnm-util/dbus-helpers.h NetworkManager-0.6.3/libnm-util/dbus-helpers.h
--- NetworkManager-0.6.3.orig/libnm-util/dbus-helpers.h 2006-03-22 16:52:06.000000000 -0300
+++ NetworkManager-0.6.3/libnm-util/dbus-helpers.h 2006-10-14 01:33:36.000000000 -0300
@@ -100,6 +100,20 @@ dbus_bool_t nmu_security_deserialize_wpa
char **client_cert_file,
char **ca_cert_file,
int *wpa_version);
+dbus_bool_t nmu_security_serialize_leap (DBusMessageIter *iter,
+ const char *username,
+ const char *passwd,
+ const char *key_mgmt);
+
+dbus_bool_t nmu_security_serialize_leap_with_cipher (DBusMessageIter *iter,
+ const char *username,
+ const char *passwd,
+ const char *key_mgmt);
+
+dbus_bool_t nmu_security_deserialize_leap (DBusMessageIter *iter,
+ char **username,
+ char **passwd,
+ char **key_mgmt);
DBusMessage * nmu_create_dbus_error_message (DBusMessage *message,
const char *exception_namespace,
diff -pruN NetworkManager-0.6.3.orig/src/Makefile.am NetworkManager-0.6.3/src/Makefile.am
--- NetworkManager-0.6.3.orig/src/Makefile.am 2006-05-24 12:07:39.000000000 -0300
+++ NetworkManager-0.6.3/src/Makefile.am 2006-10-14 01:33:57.000000000 -0300
@@ -62,6 +62,8 @@ NetworkManager_SOURCES = \
nm-ap-security-wpa-eap.h \
nm-ap-security-wpa-psk.c \
nm-ap-security-wpa-psk.h \
+ nm-ap-security-leap.c \
+ nm-ap-security-leap.h \
kernel-types.h \
wpa.c \
wpa.h \
diff -pruN NetworkManager-0.6.3.orig/src/NetworkManagerAP.c NetworkManager-0.6.3/src/NetworkManagerAP.c
--- NetworkManager-0.6.3.orig/src/NetworkManagerAP.c 2006-03-09 17:55:46.000000000 -0300
+++ NetworkManager-0.6.3/src/NetworkManagerAP.c 2006-10-14 01:33:36.000000000 -0300
@@ -595,7 +595,10 @@ static guint32 add_capabilities_from_cip
caps |= NM_802_11_CAP_KEY_MGMT_802_1X;
caps &= ~NM_802_11_CAP_PROTO_NONE;
}
-
+ if (cipher == NM_AUTH_TYPE_LEAP)
+ {
+ caps &= ~NM_802_11_CAP_PROTO_NONE;
+ }
return caps;
}
diff -pruN NetworkManager-0.6.3.orig/src/nm-ap-security.c NetworkManager-0.6.3/src/nm-ap-security.c
--- NetworkManager-0.6.3.orig/src/nm-ap-security.c 2006-03-27 12:14:06.000000000 -0300
+++ NetworkManager-0.6.3/src/nm-ap-security.c 2006-10-14 01:33:36.000000000 -0300
@@ -29,6 +29,7 @@
#include "nm-ap-security-wep.h"
#include "nm-ap-security-wpa-psk.h"
#include "nm-ap-security-wpa-eap.h"
+#include "nm-ap-security-leap.h"
#include "nm-device-802-11-wireless.h"
#include "wpa_ctrl.h"
#include "nm-utils.h"
@@ -96,6 +97,10 @@ nm_ap_security_new_deserialize (DBusMess
security = NM_AP_SECURITY (nm_ap_security_wpa_eap_new_deserialize (iter));
break;
+ case NM_AUTH_TYPE_LEAP:
+ security = NM_AP_SECURITY (nm_ap_security_leap_new_deserialize (iter));
+ break;
+
default:
nm_warning ("Unmatched cipher %d", we_cipher);
break;
@@ -115,6 +120,7 @@ out:
#define WPA_EAP (NM_802_11_CAP_PROTO_WPA | NM_802_11_CAP_KEY_MGMT_802_1X)
#define WEP_WEP104 (NM_802_11_CAP_PROTO_WEP | NM_802_11_CAP_CIPHER_WEP104)
#define WEP_WEP40 (NM_802_11_CAP_PROTO_WEP | NM_802_11_CAP_CIPHER_WEP40)
+#define LEAP (NM_802_11_CAP_KEY_MGMT_802_1X)
NMAPSecurity *
nm_ap_security_new_from_ap (NMAccessPoint *ap)
{
@@ -135,6 +141,8 @@ nm_ap_security_new_from_ap (NMAccessPoin
security = NM_AP_SECURITY (nm_ap_security_wep_new_from_ap (ap, IW_AUTH_CIPHER_WEP104));
else if ((caps & WEP_WEP40) == WEP_WEP40)
security = NM_AP_SECURITY (nm_ap_security_wep_new_from_ap (ap, IW_AUTH_CIPHER_WEP40));
+ else if ((caps & LEAP) == LEAP)
+ security = NM_AP_SECURITY (nm_ap_security_leap_new_from_ap (ap));
else if (!nm_ap_get_encrypted (ap))
security = nm_ap_security_new (IW_AUTH_CIPHER_NONE);
@@ -180,7 +188,8 @@ nm_ap_security_set_we_cipher (NMAPSecuri
|| (we_cipher == IW_AUTH_CIPHER_WEP104)
|| (we_cipher == IW_AUTH_CIPHER_TKIP)
|| (we_cipher == IW_AUTH_CIPHER_CCMP)
- || (we_cipher == NM_AUTH_TYPE_WPA_EAP));
+ || (we_cipher == NM_AUTH_TYPE_WPA_EAP)
+ || (we_cipher == NM_AUTH_TYPE_LEAP));
self->priv->we_cipher = we_cipher;
}
diff -pruN NetworkManager-0.6.3.orig/src/nm-ap-security-leap.c NetworkManager-0.6.3/src/nm-ap-security-leap.c
--- NetworkManager-0.6.3.orig/src/nm-ap-security-leap.c 1969-12-31 21:00:00.000000000 -0300
+++ NetworkManager-0.6.3/src/nm-ap-security-leap.c 2006-10-14 01:33:36.000000000 -0300
@@ -0,0 +1,218 @@
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Thiago Jung Bauermann <thiago bauermann gmail com>
+ */
+
+/* This file is heavily based on nm-ap-security-wpa-eap.c */
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <dbus/dbus.h>
+#include <iwlib.h>
+
+#include "nm-ap-security.h"
+#include "nm-ap-security-leap.h"
+#include "nm-ap-security-private.h"
+#include "dbus-helpers.h"
+#include "nm-device-802-11-wireless.h"
+#include "NetworkManagerUtils.h"
+
+#define NM_AP_SECURITY_LEAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_AP_SECURITY_LEAP, NMAPSecurityLEAPPrivate))
+
+struct _NMAPSecurityLEAPPrivate
+{
+ char * username;
+ char * key_mgmt;
+};
+
+
+NMAPSecurityLEAP *
+nm_ap_security_leap_new_deserialize (DBusMessageIter *iter)
+{
+ NMAPSecurityLEAP * security = NULL;
+ char * username = NULL;
+ char * password = NULL;
+ char * key_mgmt = NULL;
+
+ g_return_val_if_fail (iter != NULL, NULL);
+
+ if (!nmu_security_deserialize_leap (iter, &username, &password, &key_mgmt))
+ goto out;
+
+ /* Success, build up our security object */
+ security = g_object_new (NM_TYPE_AP_SECURITY_LEAP, NULL);
+ nm_ap_security_set_we_cipher (NM_AP_SECURITY (security), NM_AUTH_TYPE_LEAP);
+ if (password)
+ nm_ap_security_set_key (NM_AP_SECURITY (security), password, strlen(password));
+ if (username)
+ security->priv->username = g_strdup (username);
+ if (key_mgmt)
+ security->priv->key_mgmt = g_strdup (key_mgmt);
+
+ nm_ap_security_set_description (NM_AP_SECURITY (security), _("LEAP"));
+
+out:
+ return security;
+}
+
+
+NMAPSecurityLEAP *
+nm_ap_security_leap_new_from_ap (NMAccessPoint *ap)
+{
+ NMAPSecurityLEAP * security = NULL;
+ guint32 caps;
+
+ g_return_val_if_fail (ap != NULL, NULL);
+
+ security = g_object_new (NM_TYPE_AP_SECURITY_LEAP, NULL);
+ nm_ap_security_set_we_cipher (NM_AP_SECURITY (security), NM_AUTH_TYPE_LEAP);
+ nm_ap_security_set_description (NM_AP_SECURITY (security), _("LEAP"));
+
+ return security;
+}
+
+
+static int
+real_serialize (NMAPSecurity *instance, DBusMessageIter *iter)
+{
+ NMAPSecurityLEAP * self = NM_AP_SECURITY_LEAP (instance);
+
+ if (!nmu_security_serialize_leap (iter, self->priv->username,
+ nm_ap_security_get_key(instance), self->priv->key_mgmt))
+ return -1;
+ return 0;
+}
+
+static gboolean
+real_write_supplicant_config (NMAPSecurity *instance,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+ gboolean user_created)
+{
+ NMAPSecurityLEAP * self = NM_AP_SECURITY_LEAP (instance);
+ gboolean success = FALSE;
+ char * msg;
+ const char * password = nm_ap_security_get_key(instance);
+
+ g_return_val_if_fail (nm_ap_security_get_we_cipher (instance) == NM_AUTH_TYPE_LEAP, FALSE);
+
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i proto WPA", nwid))
+ goto out;
+
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i key_mgmt %s",
+ nwid, self->priv->key_mgmt))
+ goto out;
+
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i eap LEAP", nwid))
+ goto out;
+
+ if (self->priv->username && strlen (self->priv->username) > 0)
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i identity \"%s\"",
+ nwid, self->priv->username))
+ goto out;
+
+ if (password && strlen (password) > 0)
+ {
+ msg = g_strdup_printf ("SET_NETWORK %i password <password>", nwid);
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, msg, "SET_NETWORK %i password \"%s\"",
+ nwid, password))
+ {
+ g_free (msg);
+ goto out;
+ }
+ g_free (msg);
+ }
+
+ success = TRUE;
+
+out:
+ return success;
+}
+
+static guint32
+real_get_default_capabilities (NMAPSecurity *instance)
+{
+ NMAPSecurityLEAP *self = NM_AP_SECURITY_LEAP (instance);
+ guint32 caps = NM_802_11_CAP_NONE;
+
+ caps |= NM_802_11_CAP_KEY_MGMT_802_1X;
+
+ return caps;
+}
+
+static NMAPSecurity *
+real_copy_constructor (NMAPSecurity *instance)
+{
+ NMAPSecurityLEAP * dst = g_object_new (NM_TYPE_AP_SECURITY_LEAP, NULL);
+ NMAPSecurityLEAP * self = NM_AP_SECURITY_LEAP (instance);
+
+ dst->priv->username = self->priv->username;
+ dst->priv->key_mgmt = self->priv->key_mgmt;
+
+ nm_ap_security_copy_properties (NM_AP_SECURITY (self), NM_AP_SECURITY (dst));
+
+ return NM_AP_SECURITY (dst);
+}
+
+
+static void
+nm_ap_security_leap_init (NMAPSecurityLEAP * self)
+{
+ self->priv = NM_AP_SECURITY_LEAP_GET_PRIVATE (self);
+ self->priv->username = NULL;
+ self->priv->key_mgmt = NULL;
+}
+
+
+static void
+nm_ap_security_leap_class_init (NMAPSecurityLEAPClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ NMAPSecurityClass *par_class = NM_AP_SECURITY_CLASS (klass);
+
+ par_class->copy_constructor_func = real_copy_constructor;
+ par_class->serialize_func = real_serialize;
+ par_class->write_supplicant_config_func = real_write_supplicant_config;
+ par_class->get_default_capabilities_func = real_get_default_capabilities;
+
+ g_type_class_add_private (object_class, sizeof (NMAPSecurityLEAPPrivate));
+}
+
+
+GType
+nm_ap_security_leap_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (NMAPSecurityLEAPClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) nm_ap_security_leap_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (NMAPSecurityLEAP),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) nm_ap_security_leap_init,
+ NULL /* value_table */
+ };
+ type = g_type_register_static (NM_TYPE_AP_SECURITY,
+ "NMAPSecurityLEAP",
+ &info, 0);
+ }
+ return type;
+}
diff -pruN NetworkManager-0.6.3.orig/src/nm-ap-security-leap.h NetworkManager-0.6.3/src/nm-ap-security-leap.h
--- NetworkManager-0.6.3.orig/src/nm-ap-security-leap.h 1969-12-31 21:00:00.000000000 -0300
+++ NetworkManager-0.6.3/src/nm-ap-security-leap.h 2006-10-14 01:33:36.000000000 -0300
@@ -0,0 +1,61 @@
+/* NetworkManager -- Network link manager
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2006 Thiago Jung Bauermann <thiago bauermann gmail com>
+ */
+
+/* This file is heavily based on nm-ap-security-wpa-eap.h */
+
+#ifndef NM_AP_SECURITY_LEAP_H
+#define NM_AP_SECURITY_LEAP_H
+
+#include <glib-object.h>
+#include <dbus/dbus.h>
+#include "nm-ap-security.h"
+
+#define NM_TYPE_AP_SECURITY_LEAP (nm_ap_security_leap_get_type ())
+#define NM_AP_SECURITY_LEAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_AP_SECURITY_LEAP, NMAPSecurityLEAP))
+#define NM_AP_SECURITY_LEAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_AP_SECURITY_LEAP, NMAPSecurityLEAPClass))
+#define NM_IS_AP_SECURITY_LEAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_AP_SECURITY_LEAP))
+#define NM_IS_AP_SECURITY_LEAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AP_SECURITY_LEAP))
+#define NM_AP_SECURITY_LEAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AP_SECURITY_LEAP, NMAPSecurityLEAPClass))
+
+typedef struct _NMAPSecurityLEAP NMAPSecurityLEAP;
+typedef struct _NMAPSecurityLEAPClass NMAPSecurityLEAPClass;
+typedef struct _NMAPSecurityLEAPPrivate NMAPSecurityLEAPPrivate;
+
+struct _NMAPSecurityLEAP
+{
+ NMAPSecurity parent;
+
+ /*< private >*/
+ NMAPSecurityLEAPPrivate *priv;
+};
+
+struct _NMAPSecurityLEAPClass
+{
+ NMAPSecurityClass parent;
+};
+
+
+GType nm_ap_security_leap_get_type (void);
+
+NMAPSecurityLEAP * nm_ap_security_leap_new_deserialize (DBusMessageIter *iter);
+
+struct NMAccessPoint;
+NMAPSecurityLEAP * nm_ap_security_leap_new_from_ap (struct NMAccessPoint *ap);
+
+#endif /* NM_AP_SECURITY_LEAP_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]