关于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: "微软雅黑", "宋体", ...
随机推荐
- Ubuntu 开启SSH服务以及有关设置:安装,指定端口号、免密登录、远程拷贝
本文所用系统为 Ubuntu 18.04 什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录.全名为:安全外壳协议.为Secure Shell的缩写.SSH为建立在应用 ...
- ACM-ICPC 2018 焦作赛区网络预赛 K Transport Ship (多重背包)
https://nanti.jisuanke.com/t/31720 题意 t组样例,n种船只,q个询问,接下来n行给你每种船只的信息:v[i]表示这个船只的载重,c[i]表示这种船只有2^(c[i] ...
- Linux命令(十三)make_makefile基础
1. 好处 一次编写,终身受益 2. 命名规则 makefile Makefile 3. 三要素 目标 依赖 规则命令 4. 第一版makefile 目标:依赖 tab键 规则命令 makefile: ...
- vue中nextTick
vue中nextTick可以拿到更新后的DOM元素 如果在mounted下不能准确拿到DOM元素,可以使用nextTick 在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue ...
- HTTP status constants
HTTP status constants value = ngx.HTTP_CONTINUE (100) (first added in the v0.9.20 release) value = n ...
- tomcat下的Cookie特殊符号问题
案例:在项目中通过Cookie方式临时存放检索条件,不小心在Cookie值中使用了特殊符号"@",导致在服务器端无法正确解析Cookie值.之所以说"不小心", ...
- C#正则表达式匹配
1.匹配所有带括号的字符串 string s = "aaaa(bbb)ccc(ddd)eeee"; string pattern = "\\(\\w+\\)"; ...
- PHP调用API接口实现天气查询功能
天气预报查询接口API,在这里我使用的是国家气象局天气预报接口 使用较多的还有:新浪天气预报接口.百度天气预报接口.google天气接口.Yahoo天气接口等等. 1.查询方式 根据地名查询各城市天气 ...
- Docker(四)Dockerfile入门
摘自: https://mp.weixin.qq.com/s/Im4axroExgrJoj05g_TQ-w 一.Docker的工作流程 Docker组件协作运行容器可以分为以下几个过程: Docker ...
- Kaldi阅读并更改代码
Common utilities base/kaldi-common.h 几乎所有Kaldi程序都会include该头文件. 该头文件include了一些其他位于base/目录的头文件,主要提供: 错 ...