hostapd 之hostapd_driver_init分析
NL80211使用
原文链接:https://blog.csdn.net/weixin_38503885/article/details/83108462
原文链接:https://blog.csdn.net/hello_programmer/article/details/42367547
原文链接:http://onestraw.github.io/linux/netlink-route-listen/
struct hostapd_iface 部分
1. hostapd_driver_init(interfaces.iface[i])
drv_priv 类型为void*
hapd_init调用的函数是i802_init(),根据返回值来看,其初始化的是bss,并且 struct wpa_driver_nl80211_data *drv = bss->drv;
i802_init()函数分析,返回值为struct i802_bss *bss
(1)wpa_driver_nl80211_drv_init()
1. nl80211_init_bss(bss)函数
这个函数中建立了和内核之间的通信,socket创建和连接
回调函数类型 原文链接 :http://onestraw.github.io/linux/netlink-route-listen/
1.1 nl80211_init_connect_handle(bss)函数
1.1.1 nl_create_handle()函数
创建和连接这两个函数都是netlink 的库函数,libnl
内核中有那么多socket,如何准确的与内核中想要连接的socket建立连接呢,与内核中要连接的socket标识相同即可。
从代码中的打印来看,猜测标识是“nl80211”
1.1.2 nl80211_register_eloop_read()函数
将handler函数注册到eloop表中,类型为read
handler函数:
2. wpa_driver_nl80211_finish_drv_init()函数
3. 创建eapol_tx_sock, eapol 后面再补充
(2) bridge相关
获取bridge名称,及其索引
(3)eapol rx