从官网下载相对而言比较干净的源码版本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. LQR算法如何跟随变化的期望状态

    开门见山,通过LQR的能量函数可以看出,LQR算法是将状态量控制到零(关于能量函数请看我的随笔:LQR要点),但实际控制中我们希望状态量能够跟随期望值 下面将会解决如何用LQR算法跟随变化的期望值: ...

  2. Python实用笔记 (17)模块

    一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块. 现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲 ...

  3. 学习 Spring Boot 知识看这一篇就够了

    从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...

  4. 2020年学习目标之一——emacs

    这两天在虚机里面安装了centos7(gnome),决定后续自己的学习一直在这个里面进行,对于编辑器我最后选择了emacs,新手一枚,不过正好也算是今年的一项学习目标吧,加油! (完)

  5. NLP(一)

    “自然语言处理”(Natural Language Processing 简称 NLP)包含所有用计算机对自然语言进行的操作. 自然语言工具包(NLTK) 语言处理任务与相应 NLTK 模块以及功能描 ...

  6. Golang协程池(workpool)实现

    背景 因与工作相关,所以本文中的数据都进行了更改,但逻辑是一样的. 笔者的服务ServerA会请求服务ServerH获取一些数据,但ServerH的接口有个N秒内只能请求M次的限制,并返回false. ...

  7. Netty 源码解析(二):Netty 的 Channel

    本文首发于微信公众号[猿灯塔],转载引用请说明出处 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty源码解析(一):开始 当前:Netty 源码解析(二): Netty 的 Channel ...

  8. SQL注入原理及代码分析(一)

    前言 我们都知道,学安全,懂SQL注入是重中之重,因为即使是现在SQL注入漏洞依然存在,只是相对于之前现在挖SQL注入变的困难了.而且知识点比较多,所以在这里总结一下.通过构造有缺陷的代码,来理解常见 ...

  9. POJ 3463 Sightseeing 题解

    题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...

  10. CVE-2020-5902 F5 BIG-IP 远程代码执行RCE

    cve-2020-5902 : RCE:curl -v -k 'https://[F5 Host]/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd. ...