在走读hostapd的代码的时候,总是被hostapd一些数据结构弄的一团糟。现把hostapd主要数据结构整理了一下,方便大家读代码的时候没有那么多困惑和烦恼,可以尽快熟悉代码,找到自己关注的地方。
struct hapd_interfaces 是总领数据结构。定义了配置文件加载,处理解析,control interface 初始化和去初始化,driver初始化,interface轮询处理,interface 数组。 这里interface一般指的是radio,一个radio对应一个interface,RTK方案中对应wlan0,wlan1。
struct hostapd_iface 是interface数据结构。其定义了radio级别的config参数,bss数组, hw相关的配置参数,WMM配置参数,interface enable & disable处理函数。如果其工作在station mode, 还有ap_list。
struct hostapd_data 是bss数据结构。一个bss对应一个SSID, RTK方案中对应wlan-vap0 类似虚接口。其数据结构中有这个bss从属的interface,radio级别的配置,bss级别的配置值,以及sta_list.
struct hostapd_config 是radio级别的配置
struct hostapd_bss_config 是bss级别的配置
struct hostapd_hw_modes 是和hardward相关的配置。其中定义了hw mode, rate, HT capabilities, MCS rate set, A-MPDU parameter, VHT capabilities, HE capabilitie,Array of supported channels等物理参数。 Channel 数据结构中记录了channel number, bandwidth, max_tx_power等信息。