Android: nl80211: Work around limited genl_ctrl_resolve()
Android ICS system/core/libnl_2 has very limited genl_ctrl_resolve() implementation that cannot handle names other than nlctrl. Work around that by implementing more complete genl_ctrl_resolve() functionality within driver_nl80211.c for Android builds. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
653c4893be
commit
b088cf82c9
1 changed files with 36 additions and 0 deletions
|
@ -2572,6 +2572,42 @@ static int wpa_driver_nl80211_capa(struct wpa_driver_nl80211_data *drv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
static int android_genl_ctrl_resolve(struct nl_handle *handle,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Android ICS has very minimal genl_ctrl_resolve() implementation, so
|
||||||
|
* need to work around that.
|
||||||
|
*/
|
||||||
|
struct nl_cache *cache = NULL;
|
||||||
|
struct genl_family *nl80211 = NULL;
|
||||||
|
int id = -1;
|
||||||
|
|
||||||
|
if (genl_ctrl_alloc_cache(handle, &cache) < 0) {
|
||||||
|
wpa_printf(MSG_ERROR, "nl80211: Failed to allocate generic "
|
||||||
|
"netlink cache");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
|
nl80211 = genl_ctrl_search_by_name(cache, name);
|
||||||
|
if (nl80211 == NULL)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
id = genl_family_get_id(nl80211);
|
||||||
|
|
||||||
|
fail:
|
||||||
|
if (nl80211)
|
||||||
|
genl_family_put(nl80211);
|
||||||
|
if (cache)
|
||||||
|
nl_cache_free(cache);
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
#define genl_ctrl_resolve android_genl_ctrl_resolve
|
||||||
|
#endif /* ANDROID */
|
||||||
|
|
||||||
|
|
||||||
static int wpa_driver_nl80211_init_nl_global(struct nl80211_global *global)
|
static int wpa_driver_nl80211_init_nl_global(struct nl80211_global *global)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
Loading…
Reference in a new issue