从官网下载相对而言比较干净的源码版本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. 恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合

    在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类. @Data @AllArgsConstructor public class Employee { private Inte ...

  2. js语法基础入门(1)

    1.基础入门 1.1.hello world 1.1.1.JavaScript是什么? JavaScript是一门跨平台.面向对象的轻量级脚本语言,在web开发中被广泛应用 1.1.2.JavaScr ...

  3. 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

    1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...

  4. 解决wpf项目中无法添加OpenFileDialog 实例的问题

    直接添加引用:using Microsoft.Win32; 或者放置鼠标于OpenFileDialog OpenFileDialog ofd = new OpenFileDialog(); 操作点击

  5. Python3笔记014 - 3.5 跳转语句

    第3章 流程控制语句 3.5 跳转语句 1.break 语句 while 条件表达式1: 语句块1 if 条件表达式2: break for 迭代变量 in 对象: 语句块1 if 条件表达式: br ...

  6. html通过css,js实现div悬浮效果总汇,如原生JS实现滚动到一定位置实现div悬浮

    在我们的实际开发中,经常会遇到页面中需要悬浮效果,比如最早的客服联系,对联悬浮广告等,今天为大家介绍一些如何实现div悬浮的效果. 传统的fixed实现: 通过css中的属性position参数设为f ...

  7. vs遇到的字符串问题

    原以为自己的字符串已经理解不错了, 今天又被vs搞了. 情景就不说了, 直接说结果: 有两种情况 1 当文件是存储为gbk或者utf-8的时候, 中文字符存储永远是gbk的值. ‘按’字的gbk编码 ...

  8. Django---进阶5

    目录 单表操作 必知必会13条 测试脚本 查看内部sql语句的方式 神奇的双下划线查询 一对多外键增删改查 多对多外键增删改查 正反向的概念 多表查询 子查询(基于对象的跨表查询) 联表查询(基于双下 ...

  9. webpack正式、测试环境接口地址本地运行及打包命令配置

    声明:本文由w3h5原创,转载请注明出处:<webpack正式.测试环境接口地址本地运行及打包命令配置> https://www.w3h5.com/post/521.html 为了方便开发 ...

  10. 利用SignalR实施响应股票数据波动

    1.新建ASP.NET Web应用程序,  选择Empty模板. 2.创建Stock.cs类 public class Stock { /// <summary> /// 价格 /// & ...