0bee9ee7 | 09-Jun-2022 |
Augustin Cavalier <waddlesplash@gmail.com> |
openbsd_wlan: Refactor implementation of IEEE80211_IOC_SCAN_RESULTS.
* Do not allocate an equally-sized buffer for all scan results, but just alloca() a buffer for a single result, and copy this
openbsd_wlan: Refactor implementation of IEEE80211_IOC_SCAN_RESULTS.
* Do not allocate an equally-sized buffer for all scan results, but just alloca() a buffer for a single result, and copy this back to userland at the end of each iteration.
* Check remaining space correctly with respect to IE data.
May fix incorrect scan results or userland memory corruptions seen with the previous code. Also should be faster since it does not need to allocate large kernel-side temporary buffers.
show more ...
|
2f7936a6 | 09-Jun-2022 |
Augustin Cavalier <waddlesplash@gmail.com> |
openbsd_wlan: Add a Haiku-specific "FreeBSD-style" ioctl for joining networks.
In the long run it may make more sense to have Haiku-style ioctls for this purpose, but since we are currently coexisti
openbsd_wlan: Add a Haiku-specific "FreeBSD-style" ioctl for joining networks.
In the long run it may make more sense to have Haiku-style ioctls for this purpose, but since we are currently coexisting with FreeBSD-style ioctls, just add this as another FreeBSD-style ioctl for now (we already have two custom ones anyway.)
This ioctl pretty much just consists of the same parameters we pass to wpa_supplicant using the Haiku-specific constants already, with one notable difference: the PSK must be in proper WPA format, i.e. already hashed. Hence we will submit this ioctl, for now, from our own code in our wpa_supplicant port.
WPS is not implemented in this commit, but it could be if someone actually needs to connect to WPS networks for some reason...
Tested and verified as working along with the wpa_supplicant changes.
show more ...
|
bcb089f6 | 09-Jun-2022 |
Augustin Cavalier <waddlesplash@gmail.com> |
openbsd_wlan (and FreeBSD ieee80211_ioctl.h): Initial ioctl compatibility.
* Introduce IEEE80211_IOCTLS_ABBREVIATED to FreeBSD's ieee80211_ioctl.h, so that the FreeBSD header can be included alo
openbsd_wlan (and FreeBSD ieee80211_ioctl.h): Initial ioctl compatibility.
* Introduce IEEE80211_IOCTLS_ABBREVIATED to FreeBSD's ieee80211_ioctl.h, so that the FreeBSD header can be included along with the OpenBSD net80211 stack without triggering lots of errors, so we can use these structs in openbsd_wlan ieee80211_haiku.cpp.
* Implement basic ieee80211req handling machinery. We aren't going to handle anything but SIOCG80211 and SIOCS80211 in this method, so we can simplify it a bit at the same time.
* Implement IEEE80211_IOC_SCAN_RESULTS to return scan results from the OpenBSD WiFi stack in FreeBSD ioctl format.
This change adds two minor "features" (noted with #ifdefs) to the OpenBSD net80211 stack: one to specify what node index to return when returning known nodes (scan results), as this way we do not have to allocate a huge buffer to store the scan results in before sending them back to userland, but can instead get and convert a single one at a time.
(We store the converted values in kernel mode all at once, though, so this is not as efficient as it could be. More improvement possible.)
* Implement IEEE80211_IOC_BSSID and IEEE80211_IOC_SSID while we are at it. This actually may make joining open networks possible, but I didn't really test it. (They are used with SIOCG80211 to see what network the device is currently connecting/connected to.)
show more ...
|