[PATCH 4/4] dbus: Add D-Bus method for current authentication mode

Paul Stewart pstew at google.com
Fri Mar 11 12:56:07 EST 2011


In this case, the only time the property changes is when we enter and
leave the COMPLETED state, so I'll put something in there.  Thanks.

--
Paul

On Fri, Mar 11, 2011 at 8:58 AM, Dan Williams <dcbw at redhat.com> wrote:
> On Thu, 2011-03-10 at 11:04 -0800, Paul Stewart wrote:
>> Chooses between EAP and non-EAP authentication modes and
>> uses the appropriate method to retrieve the name.
>
> Don't forget to add the bits that emit property-changed events when the
> auth mode changes inside the supplicant.  You'll probably have to add
> some more notify functions internally for that.
>
> Having a property without emitting change events for it is generally not
> useful since you have to continuously poll for it, instead of simply
> getting it once and then listening for change events.
>
> Dan
>
>> Signed-off-by: Paul Stewart <pstew at google.com>
>> ---
>>  wpa_supplicant/dbus/dbus_new.c          |    4 +++
>>  wpa_supplicant/dbus/dbus_new_handlers.c |   39 +++++++++++++++++++++++++++++++
>>  wpa_supplicant/dbus/dbus_new_handlers.h |    3 ++
>>  wpa_supplicant/dbus/dbus_new_helpers.h  |    1 +
>>  4 files changed, 47 insertions(+), 0 deletions(-)
>>
>> diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
>> index c66640a..7562c94 100644
>> --- a/wpa_supplicant/dbus/dbus_new.c
>> +++ b/wpa_supplicant/dbus/dbus_new.c
>> @@ -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
>> diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
>> index 5402bff..3f129a0 100644
>> --- a/wpa_supplicant/dbus/dbus_new_handlers.c
>> +++ b/wpa_supplicant/dbus/dbus_new_handlers.c
>> @@ -2192,6 +2192,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
>>   * @wpa_s: wpa_supplicant structure for a network interface
>> diff --git a/wpa_supplicant/dbus/dbus_new_handlers.h b/wpa_supplicant/dbus/dbus_new_handlers.h
>> index 3cdf9cb..119d15d 100644
>> --- a/wpa_supplicant/dbus/dbus_new_handlers.h
>> +++ b/wpa_supplicant/dbus/dbus_new_handlers.h
>> @@ -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);
>>
>> diff --git a/wpa_supplicant/dbus/dbus_new_helpers.h b/wpa_supplicant/dbus/dbus_new_helpers.h
>> index 8db7a37..7038b63 100644
>> --- a/wpa_supplicant/dbus/dbus_new_helpers.h
>> +++ b/wpa_supplicant/dbus/dbus_new_helpers.h
>> @@ -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"
>
>
>


More information about the HostAP mailing list