- 14
- 0
- 约5.27千字
- 约 6页
- 2021-10-13 发布于湖北
- 举报
wpa_supplicant 初始化流程分析
1. 启动命令 wpa supplicant 在启动时,启动命令可以
带有很多参数,目前我们的启动命令如下:
wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0
-c/data/wifi/wpa_supplicant.conf
-f/data/wifi/wpa_log.txtwpa_supplicant 对于启动命令带的参
数,用了两个数据结构来保存,
一个是 wpa_params, 另一个是 wpa_interface.
这主要是考虑到 wpa_supplicant 是可以同时支持多个网络
接口的。
wpa_params 数据结构主要记录与网络接口无关的一些参数
设置。
而每一个网络接口就用一个 wpa_interface 数据结构来记录。
在启动命令行中, 可以用 -N 来指定将要描述一个新的网络接
口,对于一个新的网络接口,可以用下面六个参数描述:
-ilt;ifnamegt; : 网络接口名称 -clt;confgt;: 配置文件名
称
-Clt;ctrl_intfgt;: 控制接口名称
-Dlt;drivergt;: 驱动类型
-plt;driver_paramgt;: 驱动参数
-blt;br_ifnamegt;: 桥接口名称 2. wpa_supplicant 初始化
流程 2.1. main() 函数: 在这个函数中,主要做了四件事。
a.
解析命令行传进的参数。
b.
调用 wpa_supplicant_init() 函数,做 wpa_supplicant 的初始
化工作。
c.
调用 wpa_supplicant_add_iface() 函数,增加网络接口。
d.
调用 wpa_supplicant_run() 函数,让 wpa_supplicant 真正的
run 起来。 2.2. wpa_supplicant_init() 函数: a.
打开 debug 文件。
b.
注册 EAP peer 方法。
c.
申请 wpa_global 内存,该数据结构作为统领其他数据结构
的一个核心, 主要包括四个部分:
wpa_supplicant *ifaces
/* 每个网络接口都有一个对应的 wpa_supplicant 数据结
构,该指针指向最近加入的一个, 在 wpa_supplicant 数据结
构中有指针指向 next*/
wpa_params params
/* 启动命令行中带的通用的参数 */
ctrl_iface_global_priv *ctrl_iface
/*global 的控制接口 */
ctrl_iface_dbus_priv *dbus_ctrl_iface
/*dbus 的控制接口 */
d.
设置 wpa_global 中的 wpa_params 中的参数。
e.
调用 eloop_init 函数将全局变量 eloop 中的 user_data 指针
指向 wpa_global 。
f.
调用 wpa_supplicant_global_ctrl_iface_init 函数初始化
global 控制接口。
g.
调用 wpa_supplicant_dbus_ctrl_iface_init
原创力文档

文档评论(0)