[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