drv->has_capability and GET_CAPABILITY

Dan Williams dcbw at redhat.com
Mon Aug 21 06:33:13 EDT 2006


Hi,

wpa_supplicant_ctrl_iface_get_capability() seems to assume that an
interface that fails the capability check has _all_ capabilities.  If
the return value from wpa_drv_get_capa() is -1, then for a request for
'pairwise' the control interface will return "CCMP TKIP NONE".

In the get_capa() functions of both wext and ndis drivers, -1 is
returned from wpa_drv_get_capa() if:

	if (!drv->has_capability)
		return -1;

If drv->has_capability is 0, that usually means that wpa_supplicant
couldn't determine what the capabilities of the interface are, or the
driver is old.  The wext driver only sets has_capability if the driver
is WE-18 or later.  If my reading is right, any driver compiled for WE <
18 will report through the control interface that it supports WPA.  Is
that correct?

It seems that if wpa_supplicant cannot determine what capabilities the
interface supports, it reports support for all capabilities.  That seems
broken to me, but probably was added as a kludge to allow older,
non-standard drivers to use WPA even though they did not report
capabilities correctly, or for pre-WE WPA support.  The problem I have
is that I cannot rely on wpa_supplicant to reliably report what the
capabilities for an interface are then.

What I'd like to do in the dbus control interface is diverge from the
socket/UDP control interface and be more conservative in reporting
capabilities.  But then the interfaces differ.  Does that sound fine?

Thanks,
Dan




More information about the HostAP mailing list