关于hostapd的调试
对于hostapd和wpa_supplicant 的调试时,希望显示更多的调试信息。
未改动代码时,可以将hostapd 进程拉起时所跟的参数加上"-dd"。
即使这样,也不能满足我们对详细log信息的需要,查看代码,wpa_printf打印信息没有输出,更改如下:
make中增加
#add by hbg, 2017-12-27
CONFIG_DEBUG_SYSLOG=y
在/lib/netifd/hostapd.sh中运行wpa_supplicant时加入参数"-s"可以增加打印信息(对应代码中的wpa_msg)
eg:
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: Associated with 78:00:00:00:00:ad
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: WPA: Key negotiation completed with 78:00:00:00:00:ad [PTK=CCMP GTK=CCMP]
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: CTRL-EVENT-CONNECTED - Connection to 78:00:00:00:00:ad completed [id=0 id_str=]
修改文件/src/utils/wpa_debug.c
static int wpa_debug_syslog = 1;
使得记录log日志开关打开。
在/lib/netifd/wireless/mac80211.sh中运行hostapd时加入参数"-dd"可以增加打印信息(对应代码中的wpa_msg)
Tue Dec 26 10:07:55 2017 daemon.notice hostapd: wlan0: AP-STA-CONNECTED 78:c2:c0:e0:00:06
一直以为wpa_printf没有起效,其实已经起效了,修改完后:
当_wpa_print中修改成这样子时
#ifdef CONFIG_DEBUG_SYSLOG
if (wpa_debug_syslog) {
syslog(syslog_priority(level),"%s", fmt);
//vsyslog(syslog_priority(level), fmt, ap);
} else {
#endif /* CONFIG_DEBUG_SYSLOG */
串口中调试信息如下:
Mon Dec 25 15:53:52 2017 daemon.err hostapd: Configuration file: %s
Mon Dec 25 15:53:52 2017 kern.info kernel: [ 4439.320000] device wlan0 entered promiscuous mode
Mon Dec 25 15:53:52 2017 daemon.notice hostapd: %s: interface state %s->%s
Mon Dec 25 15:53:52 2017 daemon.err hostapd: Using interface %s with hwaddr %02x:%02x:%02x:%02x:%02x:%02x and ssid "%s"
Mon Dec 25 15:53:53 2017 kern.info kernel: [ 4440.010000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:53:53 2017 kern.info kernel: [ 4440.020000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:53:53 2017 daemon.notice hostapd: %s: interface state %s->%s
Mon Dec 25 15:53:53 2017 daemon.notice hostapd: %s%s
Mon Dec 25 15:53:53 2017 daemon.notice netifd: Network device 'wlan0' link is up
Mon Dec 25 15:53:54 2017 daemon.notice hostapd: %s
未修改 wpa_printf时打印如下:
Mon Dec 25 15:45:26 2017 daemon.err hostapd: Configuration file: /var/run/hostapd-phy0.conf
Mon Dec 25 15:45:26 2017 daemon.notice hostapd: wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
Mon Dec 25 15:45:26 2017 kern.info kernel: [ 3933.670000] device wlan0 entered promiscuous mode
Mon Dec 25 15:45:26 2017 daemon.err hostapd: Using interface wlan0 with hwaddr 78:00:00:00:00:ad and ssid "mytvws_hbg"
Mon Dec 25 15:45:27 2017 kern.info kernel: [ 3934.490000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:45:27 2017 kern.info kernel: [ 3934.490000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:45:27 2017 daemon.notice hostapd: wlan0: interface state COUNTRY_UPDATE->ENABLED
Mon Dec 25 15:45:27 2017 daemon.notice hostapd: wlan0: AP-ENABLED
Mon Dec 25 15:45:27 2017 daemon.notice netifd: Network device 'wlan0' link is up
说明 wpa_printf功能已经生效,可以输出更多的调试信息。
但是还有一个问题,就是只能打印出MSG_INFO,MSG_WARNING,MSG_ERROR三个等级的调试信息。
enum {
MSG_EXCESSIVE, // 0
MSG_MSGDUMP, // 1
MSG_DEBUG, // 2
MSG_INFO, // 3
MSG_WARNING, // 4
MSG_ERROR // 5
};
由相关的enum可以看出,低等级的未能打印出来。
再继续查看源代码:
#define wpa_printf(level, ...) \
do { \
if (level >= CONFIG_MSG_MIN_PRIORITY) \
_wpa_printf(level, __VA_ARGS__); \
} while(0)
红色部分也必须满足才可以,而一直错误得认为CONFIG_MSG_MIN_PRIORITY 值为0
在同一个文件中(/src/utils/wpa_debug.c)开始处有如下宏定义:
#ifndef CONFIG_MSG_MIN_PRIORITY
#define CONFIG_MSG_MIN_PRIORITY 0
#endif
其实在其他地方中已经对其另外定义了值。
在hostapd的Makefile中定义如下:
STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY)
TARGET_CPPFLAGS := \
-I$(STAGING_DIR)/usr/include/libnl-tiny \
-I$(PKG_BUILD_DIR)/src/crypto \
$(TARGET_CPPFLAGS) \
-DCONFIG_LIBNL20 \
-D_GNU_SOURCE \
$(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
可见与 CONFIG_WPA_MSG_MIN_PRIORITY变量有关。
继续搜索词变量:
可见与 CONFIG_WPA_MSG_MIN_PRIORITY变量有关。
继续搜索词变量:
hbg@root:~$ grep "CONFIG_WPA_MSG_MIN_PRIORITY" -r *
package/network/services/hostapd/Makefile:STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY)
package/network/services/hostapd/Makefile: $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
tmp/.config.old:CONFIG_WPA_MSG_MIN_PRIORITY=3
tmp/.config:CONFIG_WPA_MSG_MIN_PRIORITY=3
可见CONFIG_MSG_MIN_PRIORITY变量的值也是3,因此就解释了为什么只能打印出MSG_INFO,MSG_WARNING,MSG_ERROR三个等级的调试信息。
因此还需要修改./config中的等级
CONFIG_WPA_MSG_MIN_PRIORITY=2
才能打印出更多的调试信息。
关于hostapd的调试的更多相关文章
- openwrt 更改 debug 等级(hostapd)
https://wiki.openwrt.org/doc/devel/debugging 调试hostapd,其中hostapd的调试等级如下: # Levels (minimum value for ...
- hostapd源代码分析(一):网络接口和BSS的初始化
[转]hostapd源代码分析(一):网络接口和BSS的初始化 原文链接:http://blog.csdn.net/qq_21949217/article/details/46004349 最近在做一 ...
- [转载]Android开发常用调试技术记录
ANDROID 调试技术: 1)Ps 指令 ls –l /proc/27/ cat /proc/27/cmdline #cmdline文件表示了这个进程所在的命令行. cat /proc/ ...
- zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210
//zz//####################################################################### zz-rtl8188eu的linux-usb ...
- hostapd阅读(openwrt)-3
从官网下载相对而言比较干净的源码版本http://w1.fi/hostapd/,然后将其移植到openwrt下,方便在源码阅读时候进行调试编译,移植的过程总结如下心得. 1. openwrt编译与cl ...
- C# Web应用调试开启外部访问
在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- 写出易调试的SQL(修订版)
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
随机推荐
- Web项目发布步骤总结
1.在开发好项目,打包成war格式 2.购买云服务器,建议去阿里云购买(ecs),教程如下 http://jingyan.baidu.com/article/4e5b3e195ae68a91901e2 ...
- I/O exception (java.net.SocketException) caught when processing request: Connect
Exception [一个故障引发的话题] 最近,项目中的短信模块收到一个故障日志,要求我协助调查一下: 2010-05-07 09:22:07,221 [?:?] INFO httpclient. ...
- 【1】【leetcode-76】 最小覆盖子串
最小覆盖子串(hard) (不会) 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", ...
- C# RestoreDirectory
OpenFileDialog与SaveFileDialog都有RestoreDirectory属性,这个属性默认是false,打开一 个文件后,那么系统默认目录就会指向刚才打开的文件.如果设为true ...
- Spring使用事务增加的注解实现方
以下是我的文件结构 步骤1:配置数据源 <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDa ...
- Session 起航 登录会话和注销请求 重定向和转发
[LoginServlet] @WebServlet(name="loginServlet",urlPatterns = "/login") public cl ...
- 测试四则运算2:Right-BICEP
n6个值得测试的具体部位,他们能够提高你的测试技巧 nRight-结果是否正确? nB-是否所有的边界条件都是正确的? nI-能查一下反向关联吗 nC-能用其他手段交叉检查一下结果吗? nE-你是否可 ...
- python中的*和**的用途
def function_with_one_star(*t): print(t, type(t)) def function_with_two_stars(**d) print(d, ty ...
- Jupyter 同时支持python2, python3
从docker hub 下载了一个 tensorFlow 镜像,但是里面只支持python2.7 kernel, 不支持python3 kernel. 1. Notebook的右上角点new 只看到 ...
- Kaldi阅读并更改代码
Common utilities base/kaldi-common.h 几乎所有Kaldi程序都会include该头文件. 该头文件include了一些其他位于base/目录的头文件,主要提供: 错 ...