多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
WPAS难度较大的一个重要原因是其注释较少,很多变量的含义没有任何解释。笔者也为此大伤脑筋。不得以,只能通过查看WPAS代码的历史版本来寻根溯源。经过实践,笔者总结了利用git来查询WPAS历史版本信息的一些步骤,分别如下。 用git clone命令下载WPAS官方代码。 ~~~ git clone git://w1.fi/srv/git/hostap.git ~~~ 以下命令的含义是查询use_monitor在driver_nl80211.c中的变化情况。 ~~~ git blame src/drivers/driver_nl80211.c | grep use_monitor ~~~ 因为use_monitor定义于该文件中,所以用git blame去查看它。得到的结果如图4-3所示。 :-: ![](http://img.blog.csdn.net/20140309205125421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5ub3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图4-3 git blame结果 图4-3中的第一行显示了use_monitor最早出现的那个patch的情况,其对应的commit id是a11241fa。接着,再通过命令git log a11241fa可查看当时的commit信息,结果如图4-4所示。 :-: ![](http://img.blog.csdn.net/20140309205143484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5ub3N0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图4-4 git log结果 图4-4展示了a11241fa对应的commit消息。由于提交者一般会在该消息中添加注释性内容。所以可通过研究这些内容来了解代码中某些变量的含义。 下面正式开始WPAS的代码分析之旅。首先是WPAS的初始化流程分析。 [1]注意,wpa_supplicant项目中还包含一个名为hostapd程序的代码,它实现了AP的功能。本书不拟讨论hostpad的代码。 [2] wpa_supplicant项目的官方地址为http://hostap.epitest.fi/ [3]根据审稿专家的反馈,wpa_supplicant仅支持Linux Wireless Extension V19以后的版本。