我想详细了解nl80211
和cfg80211
是如何工作的,例如:功能流程以及nl80211
如何与网络工具交互,例如wpa_supplicant
和 iw
。
最佳答案
为了能够从用户空间控制无线驱动程序,使用了内核和用户空间之间的一些 IPC 通信过程。
- 首先使用了具有供应商相关 API 的
ioctl
。 - 1996 年,Jean Tourrilhes 创造了 wireless extensions (我们或 WEXT)。
The Wireless Extension (WE) is a generic API allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANs.
2006 年,John Linville 创建了 mac80211和 Johannes Berg 创建了 cfg80211和 nl80211 .它一起旨在取代无线扩展。
+-------------+ | | | Userspace | | | +-------------+ ^ - - - | - - - - | nl80211 v +-------------+ | | | cfg80211 | | | +-------------+ +-------------+ | | | mac80211 | | driver | | | +-------------+
重要的一点是nl80211/cfg80211/mac80211不再使用ioctl,他们使用netlink .
因此,像 iw 这样的工具, hostapd或 wpa_supplicant使用一些 netlink 库(如 libnl 或 libnl-tiny )和 netlink 接口(interface)公共(public) header ,这当然是 nl80211.h .
没有那么多文档,但我建议你阅读 libnl documentation然后是 iw source code (因为我使用 libnl)。
关于c - nl80211库和cfg80211是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456235/