]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Add D-Bus method for current authentication mode
authorPaul Stewart <pstew@google.com>
Tue, 15 Mar 2011 11:53:56 +0000 (13:53 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 15 Mar 2011 11:53:56 +0000 (13:53 +0200)
Chooses between EAP and non-EAP authentication modes and
uses the appropriate method to retrieve the name.

Signed-off-by: Paul Stewart <pstew@google.com>
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/dbus/dbus_new_handlers.c
wpa_supplicant/dbus/dbus_new_handlers.h
wpa_supplicant/dbus/dbus_new_helpers.h

index c66640ade4773a725699858fde07dee513b1bad9..7562c94e7073ff3d35989048e3e9a977f2a919b2 100644 (file)
@@ -1388,6 +1388,10 @@ static const struct wpa_dbus_property_desc wpas_dbus_interface_properties[] = {
          (WPADBusPropertyAccessor) wpas_dbus_getter_current_network,
          NULL, R
        },
+       { "CurrentAuthMode", WPAS_DBUS_NEW_IFACE_INTERFACE, "s",
+         (WPADBusPropertyAccessor) wpas_dbus_getter_current_auth_mode,
+         NULL, R
+       },
        { "Blobs", WPAS_DBUS_NEW_IFACE_INTERFACE, "a{say}",
          (WPADBusPropertyAccessor) wpas_dbus_getter_blobs,
          NULL, R
index 5402bff600a76797c030ec15cee39740c237f213..3f129a092fe11843ebfff12bcc83ad183f49f689 100644 (file)
@@ -2191,6 +2191,45 @@ DBusMessage * wpas_dbus_getter_current_network(DBusMessage *message,
 }
 
 
+/**
+ * wpas_dbus_getter_current_auth_mode - Get current authentication type
+ * @message: Pointer to incoming dbus message
+ * @wpa_s: wpa_supplicant structure for a network interface
+ * Returns: A dbus message containing a string indicating the current
+ * authentication type.
+ *
+ * Getter for "CurrentAuthMode" property.
+ */
+DBusMessage * wpas_dbus_getter_current_auth_mode(DBusMessage *message,
+                                                struct wpa_supplicant *wpa_s)
+{
+       DBusMessage *reply;
+       const char *eap_mode;
+       const char *auth_mode;
+       char eap_mode_buf[WPAS_DBUS_AUTH_MODE_MAX];
+
+       if (wpa_s->wpa_state != WPA_COMPLETED) {
+               auth_mode = "INACTIVE";
+       } else if (wpa_s->key_mgmt == WPA_KEY_MGMT_IEEE8021X ||
+           wpa_s->key_mgmt == WPA_KEY_MGMT_IEEE8021X_NO_WPA) {
+               eap_mode = wpa_supplicant_get_eap_mode(wpa_s);
+               os_snprintf(eap_mode_buf, WPAS_DBUS_AUTH_MODE_MAX,
+                           "EAP-%s", eap_mode);
+               auth_mode = eap_mode_buf;
+
+       } else {
+               auth_mode = wpa_key_mgmt_txt(wpa_s->key_mgmt,
+                                            wpa_s->current_ssid->proto);
+       }
+
+       reply = wpas_dbus_simple_property_getter(message,
+                                                DBUS_TYPE_STRING,
+                                                &auth_mode);
+
+       return reply;
+}
+
+
 /**
  * wpas_dbus_getter_bridge_ifname - Get interface name
  * @message: Pointer to incoming dbus message
index 3cdf9cb1b2da90619db6262f2d88600fda7be51a..119d15d7668a8a4a7d02918fcad26dae5cd12adb 100644 (file)
@@ -125,6 +125,9 @@ DBusMessage * wpas_dbus_getter_current_bss(DBusMessage *message,
 DBusMessage * wpas_dbus_getter_current_network(DBusMessage *message,
                                               struct wpa_supplicant *wpa_s);
 
+DBusMessage * wpas_dbus_getter_current_auth_mode(DBusMessage *message,
+                                                struct wpa_supplicant *wpa_s);
+
 DBusMessage * wpas_dbus_getter_bsss(DBusMessage *message,
                                    struct wpa_supplicant *wpa_s);
 
index 8db7a373e54c73d3007c13217050d3afc4be0e0e..7038b634335ed570ea9748de05e9fc163794821d 100644 (file)
@@ -104,6 +104,7 @@ struct wpa_dbus_property_desc {
 #define WPAS_DBUS_OBJECT_PATH_MAX 150
 #define WPAS_DBUS_INTERFACE_MAX 150
 #define WPAS_DBUS_METHOD_SIGNAL_PROP_MAX 50
+#define WPAS_DBUS_AUTH_MODE_MAX 64
 
 #define WPA_DBUS_INTROSPECTION_INTERFACE "org.freedesktop.DBus.Introspectable"
 #define WPA_DBUS_INTROSPECTION_METHOD "Introspect"