从官网下载相对而言比较干净的源码版本http://w1.fi/hostapd/,然后将其移植到openwrt下,方便在源码阅读时候进行调试编译,移植的过程总结如下心得。

1. openwrt编译与clean均会先读取buildroot根目录下的.config文件,以确认哪些软件包与选项需要编译与清除,即使你针对某个包进行编译与clean,例如:

  make package/network/services/hostapd/clean V=s

  打印信息将会出现两次进入:make[2]: Entering directory `/work/to/buildroot/package/network/services/hostapd'

2. OP编译环境buildroot中常常会出现BUILD_VARIANT变量,该变量是在软件包定义控制器菜单里面定义的:

  例如openvpn:

define Package/openvpn/Default
TITLE:=Open source VPN solution using $()
SECTION:=net
CATEGORY:=Network
URL:=http://openvpn.net
SUBMENU:=VPN
MENU:=
DEPENDS:=+kmod-tun +OPENVPN_$()_ENABLE_LZO:liblzo +OPENVPN_$()_ENABLE_IPROUTE2:ip $()
VARIANT:=$()
MAINTAINER:=Mirko Vogt <mirko@openwrt.org>
endef

  然后buildroot根据.config读取编译目标与顺序,进行编译,从而带入该变量,该量适用于一个软件工程中包含多个组件的情况。

3. 关于openwrt下hostapd依赖问题说明

  a. DEPENDS:=@PACKAGE_hostapd表示只有变量PACKAGE_hostapd被定义了,该组件(包)才会显示菜单

  b. DEPENDS:=uhttpd表示只有选择了uhttpd,该组件(包)才会显示在菜单中,被选择,并且选择状态不能高于uhttpd(例如:uhttpd为模块-M,那么该组件最多也是模块或者不选择)

  c. DEPENDS:=+liblua表示该组件(包)被选择后,其依赖liblua也会被选择。

  d. DEPENDS:=+PACKAGE_arpd:libpcap, 选择该组件(包),如果arpd被成功选择了,将自动选择libpcap

4. 最后我们来看看openwrt下hostapd源码组织结构

  buildroot编译配置树: 

hostapd
├── Config.in
├── files
├── Makefile
└── patches

Config.in提供选择额外组件与功能选项,files为hostapd的相关配置文件、启动脚本等,根据上一篇文章,op下的hostapd是由netifd管理的,所以与常规的op启动配置有点不同,Makefile为功能选择主菜单配置,patches为hostapd官方或者感言提供的补丁。

hostapd源码树:

├── Android.mk
├── build_release
├── CONTRIBUTIONS
├── COPYING
├── doc
├── eap_example
├── hostapd
├── hs20
├── ipkg-ar71xx
├── mac80211_hwsim
├── patches
├── radius_example
├── README
├── src
├── tests
├── wlantest
├── wpadebug
├── wpaspy
└── wpa_supplicant

其中,本系列主要讨论hostapd,那么该源码树相关的有(http://w1.fi/wpa_supplicant/devel/dir_22f5a0c5f1f5dd1a61a0e5968e7769c4.html):

  hostapd:hostapd主程序与控制接口主程序源码。

  src: 主要是扩展组件:

├── ap
├── common
├── crypto
├── drivers
├── eap_common
├── eapol_auth
├── eapol_supp
├── eap_peer
├── eap_server
├── l2_packet
├── lib.rules
├── Makefile
├── p2p
├── pae
├── radius
├── rsn_supp
├── tls
├── utils
└── wps

  其它相关均为测试与认证客户端相关源码,暂时可以先不关心。

hostapd阅读(openwrt)-3的更多相关文章

  1. hostapd阅读(openwrt)-2

    深入追踪openwrt下的hostapd之后,发现openwrt无线管理机制格外的复杂,几乎所以的触发与回调均离不开ubus,关于ubus这里不作解释,先大概了解其用途即可(出门左转:https:// ...

  2. hostapd阅读(openwrt)-1

    好久没有来博客园写点东西了,这段时间主要搞了openwrt系统的移植,无线的校验等相关工作,鉴于我是一个懒惰的大龄菜鸟程序员,就先自我原谅自己了,好了废话少说,直奔主题--hostapd. 由于我主要 ...

  3. hostapd阅读(openwrt)-4

    接下来,咱们来看看hostapd的源码目录之hostapd,今天我们先分析整体功能,然后从main.c开始注释 hostapd下代码主要作用有:配置解析,环境初始化,控制接口建立,AP接口管理模块. ...

  4. 【openwrt】再设置

    https://wiki.openwrt.org/zh-cn/doc/uci/network https://wiki.openwrt.org/zh-cn/doc/uci/wireless https ...

  5. OpenWrt 路由器如何让 lan 口主机获得 ipv6 网络访问 -- 知乎

    本文转自知乎: OpenWrt 路由器如何让 lan 口主机获得 ipv6 网络访问? - mistforest的回答 - 知乎https://www.zhihu.com/question/29667 ...

  6. openwrt 更改 debug 等级(hostapd)

    https://wiki.openwrt.org/doc/devel/debugging 调试hostapd,其中hostapd的调试等级如下: # Levels (minimum value for ...

  7. OpenWrt笔记

    ## 1. OpenWrt目录结构说明 作者:辛勤的摆渡人 来源:CSDN 原文:https://blog.csdn.net/hunter168_wang/article/details/507805 ...

  8. CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记

    一:内核的编译. 1,linux 编译环境的搭建与源码的准备工作 2,常用软件的安装 (make menuconfig) 3,  针对TP-Link WR740N 一些软件的openwrt 的移植 4 ...

  9. OpenWrt——神奇的路由系统

    鉴于最近大家对这个系统比较感兴趣而且疑问很多所以本渣就整理下我对这个系统的理解和最实用的802.1x认证的理解.还望大家多多互相交流. 如果您时间紧张直接看最后的步骤,时间充裕的请仔细阅读,理解. O ...

随机推荐

  1. 入门大数据---Flink开发环境搭建

    一.安装 Scala 插件 Flink 分别提供了基于 Java 语言和 Scala 语言的 API ,如果想要使用 Scala 语言来开发 Flink 程序,可以通过在 IDEA 中安装 Scala ...

  2. Java多线程之synchronized详解

    目录 synchronized简介 同步的原理 对象头与锁的实现 锁的优化与升级 Monitor Record 锁的对比 synchronized简介 synchronized关键字,一般称之为&qu ...

  3. BootstrapDialog.confirm确认对话框

    1. 依赖文件: bootstrap.js bootstrap-dialog.js bootstrap.css bootstrap-dialog.css 2.代码 BootstrapDialog.co ...

  4. 2020-06-30 pol实现execl导入导出

    1.导入依赖 <!-- 解析表格 --> <dependency> <groupId>org.apache.poi</groupId> <arti ...

  5. Erlang模块inet翻译

    模块 inet 模块概述 访问TCP / IP协议. 描述 此模块提供对TCP/IP协议的访问. 另请参阅<ERTS用户指南:Inet配置>,以获取有关如何配置用于IP通信的Erlang运 ...

  6. C#客户端通过安全凭证调用webservice

    怎么解决给XML Web services 客户端加上安全凭据,从而实现调用安全的远程web方法?首先,有远程web服务Service继承自System.Web.Services.Protocols. ...

  7. day01微信小程序

    一.基本概要 1.一个程序接口,可以集成很多功能,也就是在程序上再次开发 腾讯:微信+小程序 阿里:支付宝  +小程序 小程序的使用量很多 2.为什么要微信小程序? 1.微信用户群体大 2.容易推广, ...

  8. 关于soapui的使用

      打开SoapUI软件,点击File -->NewSoapProject 创建测试项目 输入测试项目名称,点击OK保存 在测试项目上右击选择AddWSDL 输入所需要测试的接口地址,点击ok确 ...

  9. Guava RateLimiter限流器使用示例

    Guava中的RateLimiter可以限制单进程中某个方法的速率,本文主要介绍如何使用,实现原理请参考文档:推荐:超详细的Guava RateLimiter限流原理解析和推荐:RateLimiter ...

  10. Java 添加、下载、读取PDF附件信息(基于Spire.Cloud.SDK for Java)

    Spire.Cloud.SDK for Java提供了PdfAttachmentsApi接口添加附件addAttachment().下载附件downloadAttachment().获取附件信息get ...