dbus: Add global capabilities property
Otherwise it's difficult to determine if the supplicant was built with CONFIG_AP, CONFIG_IBSS_RSN, CONFIG_P2P, etc. CONFIG_AP and CONFIG_P2P can be inferred from the introspection data of the Interface object, but CONFIG_IBSS_RSN does not change the introspection data at all and thus it's impossible to determine whether the supplicant supports it without knowing its compile-time options. Signed-hostap: Dan Williams <dcbw@redhat.com> intended-for: hostap-1
This commit is contained in:
parent
817762d9c4
commit
1634ac0654
3 changed files with 46 additions and 0 deletions
|
@ -1950,6 +1950,10 @@ static const struct wpa_dbus_property_desc wpas_dbus_global_properties[] = {
|
|||
wpas_dbus_getter_eap_methods,
|
||||
NULL
|
||||
},
|
||||
{ "Capabilities", WPAS_DBUS_NEW_INTERFACE, "as",
|
||||
wpas_dbus_getter_global_capabilities,
|
||||
NULL
|
||||
},
|
||||
{ NULL, NULL, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -924,6 +924,44 @@ dbus_bool_t wpas_dbus_getter_eap_methods(DBusMessageIter *iter,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpas_dbus_getter_global_capabilities - Request supported global capabilities
|
||||
* @iter: Pointer to incoming dbus message iter
|
||||
* @error: Location to store error on failure
|
||||
* @user_data: Function specific data
|
||||
* Returns: TRUE on success, FALSE on failure
|
||||
*
|
||||
* Getter for "Capabilities" property. Handles requests by dbus clients to
|
||||
* return a list of strings with supported capabilities like AP, RSN IBSS,
|
||||
* and P2P that are determined at compile time.
|
||||
*/
|
||||
dbus_bool_t wpas_dbus_getter_global_capabilities(DBusMessageIter *iter,
|
||||
DBusError *error,
|
||||
void *user_data)
|
||||
{
|
||||
const char *capabilities[5] = { NULL, NULL, NULL, NULL, NULL };
|
||||
size_t num_items = 0;
|
||||
|
||||
#ifdef CONFIG_AP
|
||||
capabilities[num_items++] = "ap";
|
||||
#endif /* CONFIG_AP */
|
||||
#ifdef CONFIG_IBSS_RSN
|
||||
capabilities[num_items++] = "ibss-rsn";
|
||||
#endif /* CONFIG_IBSS_RSN */
|
||||
#ifdef CONFIG_P2P
|
||||
capabilities[num_items++] = "p2p";
|
||||
#endif /* CONFIG_P2P */
|
||||
#ifdef CONFIG_INTERWORKING
|
||||
capabilities[num_items++] = "interworking";
|
||||
#endif /* CONFIG_INTERWORKING */
|
||||
|
||||
return wpas_dbus_simple_array_property_getter(iter,
|
||||
DBUS_TYPE_STRING,
|
||||
capabilities,
|
||||
num_items, error);
|
||||
}
|
||||
|
||||
|
||||
static int wpas_dbus_get_scan_type(DBusMessage *message, DBusMessageIter *var,
|
||||
char **type, DBusMessage **reply)
|
||||
{
|
||||
|
|
|
@ -80,6 +80,10 @@ dbus_bool_t wpas_dbus_getter_interfaces(DBusMessageIter *iter,
|
|||
dbus_bool_t wpas_dbus_getter_eap_methods(DBusMessageIter *iter,
|
||||
DBusError *error, void *user_data);
|
||||
|
||||
dbus_bool_t wpas_dbus_getter_global_capabilities(DBusMessageIter *iter,
|
||||
DBusError *error,
|
||||
void *user_data);
|
||||
|
||||
DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
|
||||
struct wpa_supplicant *wpa_s);
|
||||
|
||||
|
|
Loading…
Reference in a new issue