android_wifi读书笔记之5-WPA_SUPPLICANT分析

本文详细分析了WPA_SUPPLICANT在Android中的作用,它作为WiFi驱动和用户之间的中转站,支持多种无线协议和加密认证。内容涵盖了wpa_supplicant的上行接口(如DBus、Socket)、下行接口(如ioctl、Netlink、Packet)以及如何通过wpa_supplicant驱动与kernel通信。此外,还讨论了nl80211接口取代wext接口的原因和nl80211驱动的接口实现。
摘要由CSDN通过智能技术生成

本文为读书笔记,整理自网络文献和源码

5 WPA_SUPPLICANT分析

5.1、WPA_SUPPLICANT 分析1:

参考文献:

http://www.cnblogs.com/chenbin7/p/3266032.html

http://blog.chinaunix.net/uid-26585427-id-4051479.html

wpa_supplicant软件架构分析http://blog.csdn.net/fxfzz/article/details/6176414

wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。

wpa_supplicant.c

首先定义一个驱动操作数组externstructwpa_driver_ops*wpa_supplicant_drivers[],然后是系列wpa_supplicant_XXX()方法,很多方法里面调用 wpa_drv_XXX()方法,这些方法是wpa_supplicant_i.h中实现的方法。几乎每个方法都需要一个wpa_supplicant结构,对其进行所有的控制和通信操作。

Wpa_supplicant_i.h

其中定义了一个重要数据结构wpa_supplicant,其中有一个重要的driver成 员,它是wpa_driver_ops类型,可以被用来调用抽象层的接口。接下来是系列方法声明,这些方法声明在wpa_supplicant.c中实现,然后就是wpa_drv_XXX方法,这些方法就是在 wpa_supplicant.c中被wpa_supplicant_xxx方法调用的,而这些wpa_drv_xxx方法也都有一个wpa_supplicant结构的变量指针,用来调用封装的抽象接口,而这些抽象接口的实现在driver_wext.c中(如果使用的汉斯WEXT驱动)。

这里要注意的是:在wpa_suppliant.c文件中定义的很多方法是在该头文件中声明的,而不是在wpa_supplicant.h中声明的。

 

上行接口:

wpa_supplicant提供两种方式的上行接口。一种基于传统dbus机制实现与其他进程间的IPC通信;另一种通过Unix domain socket机制实现进程间的IPC通信。

(1)  Dbus

(2)  Socket

该接口主要在文件”wpa_ctrl.h”,“wpa_ctrl.c”,“ctrl_iface_unix.c”,“ctrl_iface.h”和“ctrl_iface.c”实现。

        1. “wpa_ctrl.h”,“wpa_ctrl.c”完成对controlinterface的封装,对外提供统一的接口。其主要的工作是通过Unix domainsocket建立一个controlinterface 的client结点,与作为server的wpa_supplicant结点通信。

wpa_supplicant 提供两种由外部模块获取信息的方式:一种是外部模块通过发送request 命令然后获取response的问答模式,另一种是wpa_supplicant主动向外部发送event事件,由外部模块监听接收。

一般的常用做法是外部模块通过调用wpa_ctrl_open()两次,分别建立两个controlinterface接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值