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

  

 

 

 

  

 

 

 

 

 

 

 

posted @ 2022-04-13 20:51  bug快递员  阅读(343)  评论(0编辑  收藏  举报