/****************************************************************************
* wpa_supplicant drivers 查看跟踪
* 说明:
* 最近调试wifi的时候由于wpa_supplicant仅仅支持wext,但是芯片移植手册上
* 却要使用nl80211模式,总是找不到查询方法,于是今天跟wpa_supplicant代码的
* 时候发现通过-h参数就可以查看到。
*
* 2016-6-29 深圳 南山平山村 曾剑锋
****************************************************************************/ static void usage(void)
{
int i;
printf("%s\n\n%s\n"
"usage:\n"
" wpa_supplicant [-BddhKLqqstuvW] [-P<pid file>] "
"[-g<global ctrl>] \\\n"
" -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] "
"[-p<driver_param>] \\\n"
" [-b<br_ifname>] [-f<debug file>] [-e<entropy file>] "
"\\\n"
" [-o<override driver>] [-O<override ctrl>] \\\n"
" [-N -i<ifname> -c<conf> [-C<ctrl>] "
"[-D<driver>] \\\n"
" [-p<driver_param>] [-b<br_ifname>] ...]\n"
"\n"
"drivers:\n",
wpa_supplicant_version, wpa_supplicant_license); for (i = ; wpa_drivers[i]; i++) { ------------------------------+
printf(" %s = %s\n", |
wpa_drivers[i]->name, |
wpa_drivers[i]->desc); |
} |
|
#ifndef CONFIG_NO_STDOUT_DEBUG |
printf("options:\n" |
" -b = optional bridge interface name\n" |
" -B = run daemon in the background\n" |
" -c = Configuration file\n" |
" -C = ctrl_interface parameter (only used if -c is not)\n" |
" -i = interface name\n" |
" -d = increase debugging verbosity (-dd even more)\n" |
" -D = driver name (can be multiple drivers: nl80211,wext)\n" |
" -e = entropy file\n"); |
#ifdef CONFIG_DEBUG_FILE |
printf(" -f = log output to debug file instead of stdout\n"); |
#endif /* CONFIG_DEBUG_FILE */ |
printf(" -g = global ctrl_interface\n" |
" -K = include keys (passwords, etc.) in debug output\n"); |
#ifdef CONFIG_DEBUG_SYSLOG |
printf(" -s = log output to syslog instead of stdout\n"); |
#endif /* CONFIG_DEBUG_SYSLOG */ |
#ifdef CONFIG_DEBUG_LINUX_TRACING |
printf(" -T = record to Linux tracing in addition to logging\n"); |
printf(" (records all messages regardless of debug verbosity)\n"); |
#endif /* CONFIG_DEBUG_LINUX_TRACING */ |
printf(" -t = include timestamp in debug messages\n" |
" -h = show this help text\n" |
" -L = show license (BSD)\n" |
" -o = override driver parameter for new interfaces\n" |
" -O = override ctrl_interface parameter for new interfaces\n" |
" -p = driver parameters\n" |
" -P = PID file\n" |
" -q = decrease debugging verbosity (-qq even less)\n"); |
#ifdef CONFIG_DBUS |
printf(" -u = enable DBus control interface\n"); |
#endif /* CONFIG_DBUS */ |
printf(" -v = show version\n" |
" -W = wait for a control interface monitor before starting\n" |
" -N = start describing new interface\n"); |
|
printf("example:\n" |
" wpa_supplicant -D%s -iwlan0 -c/etc/wpa_supplicant.conf\n", |
wpa_drivers[i] ? wpa_drivers[i]->name : "wext"); |
#endif /* CONFIG_NO_STDOUT_DEBUG */ |
} |
|
|
struct wpa_driver_ops *wpa_drivers[] = <------------------------------+
{
#ifdef CONFIG_DRIVER_WEXT
&wpa_driver_wext_ops, ------+
#endif /* CONFIG_DRIVER_WEXT */ |
#ifdef CONFIG_DRIVER_NL80211 |
&wpa_driver_nl80211_ops, ------*-------------------------------------+
#endif /* CONFIG_DRIVER_NL80211 */ | |
...... | |
NULL | |
}; | |
| |
#ifdef CONFIG_DRIVER_WEXT V |
extern struct wpa_driver_ops wpa_driver_wext_ops; /* driver_wext.c */ ----+ |
#endif /* CONFIG_DRIVER_WEXT */ | |
#ifdef CONFIG_DRIVER_NL80211 v-----------------------------------*-+
extern struct wpa_driver_ops wpa_driver_nl80211_ops; /* driver_nl80211.c */ | |
#endif /* CONFIG_DRIVER_NL80211 */ | |
| |
const struct wpa_driver_ops wpa_driver_wext_ops = { <--------------+ |
.name = "wext", |
.desc = "Linux wireless extensions (generic)", |
.get_bssid = wpa_driver_wext_get_bssid, |
.get_ssid = wpa_driver_wext_get_ssid, |
.set_key = wpa_driver_wext_set_key, |
.set_countermeasures = wpa_driver_wext_set_countermeasures, |
.scan2 = wpa_driver_wext_scan, |
.get_scan_results2 = wpa_driver_wext_get_scan_results, |
.deauthenticate = wpa_driver_wext_deauthenticate, |
.disassociate = wpa_driver_wext_disassociate, |
.associate = wpa_driver_wext_associate, |
.init = wpa_driver_wext_init, |
.deinit = wpa_driver_wext_deinit, |
.add_pmkid = wpa_driver_wext_add_pmkid, |
.remove_pmkid = wpa_driver_wext_remove_pmkid, |
.flush_pmkid = wpa_driver_wext_flush_pmkid, |
.get_capa = wpa_driver_wext_get_capa, |
.set_operstate = wpa_driver_wext_set_operstate, |
.get_radio_name = wext_get_radio_name, |
#ifdef ANDROID |
.sched_scan = wext_sched_scan, |
.stop_sched_scan = wext_stop_sched_scan, |
#endif /* ANDROID */ |
}; |
|
const struct wpa_driver_ops wpa_driver_nl80211_ops = { <---------------+
.name = "nl80211",
.desc = "Linux nl80211/cfg80211",
.get_bssid = wpa_driver_nl80211_get_bssid,
.get_ssid = wpa_driver_nl80211_get_ssid,
.set_key = wpa_driver_nl80211_set_key,
.scan2 = wpa_driver_nl80211_scan,
.sched_scan = wpa_driver_nl80211_sched_scan,
.stop_sched_scan = wpa_driver_nl80211_stop_sched_scan,
.get_scan_results2 = wpa_driver_nl80211_get_scan_results,
.deauthenticate = wpa_driver_nl80211_deauthenticate,
.disassociate = wpa_driver_nl80211_disassociate,
.authenticate = wpa_driver_nl80211_authenticate,
.associate = wpa_driver_nl80211_associate,
.global_init = nl80211_global_init,
.global_deinit = nl80211_global_deinit,
.init2 = wpa_driver_nl80211_init,
.deinit = wpa_driver_nl80211_deinit,
.get_capa = wpa_driver_nl80211_get_capa,
.set_operstate = wpa_driver_nl80211_set_operstate,
.set_supp_port = wpa_driver_nl80211_set_supp_port,
.set_country = wpa_driver_nl80211_set_country,
.set_ap = wpa_driver_nl80211_set_ap,
.if_add = wpa_driver_nl80211_if_add,
.if_remove = wpa_driver_nl80211_if_remove,
.send_mlme = wpa_driver_nl80211_send_mlme,
.get_hw_feature_data = wpa_driver_nl80211_get_hw_feature_data,
.sta_add = wpa_driver_nl80211_sta_add,
.sta_remove = wpa_driver_nl80211_sta_remove,
.hapd_send_eapol = wpa_driver_nl80211_hapd_send_eapol,
.sta_set_flags = wpa_driver_nl80211_sta_set_flags,
#ifdef HOSTAPD
.hapd_init = i802_init,
.hapd_deinit = i802_deinit,
.set_wds_sta = i802_set_wds_sta,
#endif /* HOSTAPD */
#if defined(HOSTAPD) || defined(CONFIG_AP)
.get_seqnum = i802_get_seqnum,
.flush = i802_flush,
.get_inact_sec = i802_get_inact_sec,
.sta_clear_stats = i802_sta_clear_stats,
.set_rts = i802_set_rts,
.set_frag = i802_set_frag,
.set_tx_queue_params = i802_set_tx_queue_params,
.set_sta_vlan = i802_set_sta_vlan,
.sta_deauth = i802_sta_deauth,
.sta_disassoc = i802_sta_disassoc,
#endif /* HOSTAPD || CONFIG_AP */
.read_sta_data = i802_read_sta_data,
.set_freq = i802_set_freq,
.send_action = wpa_driver_nl80211_send_action,
.send_action_cancel_wait = wpa_driver_nl80211_send_action_cancel_wait,
.remain_on_channel = wpa_driver_nl80211_remain_on_channel,
.cancel_remain_on_channel =
wpa_driver_nl80211_cancel_remain_on_channel,
.probe_req_report = wpa_driver_nl80211_probe_req_report,
.deinit_ap = wpa_driver_nl80211_deinit_ap,
.deinit_p2p_cli = wpa_driver_nl80211_deinit_p2p_cli,
.resume = wpa_driver_nl80211_resume,
.send_ft_action = nl80211_send_ft_action,
.signal_monitor = nl80211_signal_monitor,
.signal_poll = nl80211_signal_poll,
.send_frame = nl80211_send_frame,
.shared_freq = wpa_driver_nl80211_shared_freq,
.set_param = nl80211_set_param,
.get_radio_name = nl80211_get_radio_name,
.add_pmkid = nl80211_add_pmkid,
.remove_pmkid = nl80211_remove_pmkid,
.flush_pmkid = nl80211_flush_pmkid,
.set_rekey_info = nl80211_set_rekey_info,
.poll_client = nl80211_poll_client,
.set_p2p_powersave = nl80211_set_p2p_powersave,
#ifdef CONFIG_TDLS
.send_tdls_mgmt = nl80211_send_tdls_mgmt,
.tdls_oper = nl80211_tdls_oper,
#endif /* CONFIG_TDLS */
#ifdef ANDROID_P2P
.set_noa = wpa_driver_set_p2p_noa,
.get_noa = wpa_driver_get_p2p_noa,
.set_ap_wps_ie = wpa_driver_set_ap_wps_p2p_ie,
#endif
#ifdef ANDROID
.driver_cmd = wpa_driver_nl80211_driver_cmd,
#endif
}; /**
*
* root@android:/ # wpa_supplicant
* wpa_supplicant v2.0-devel-4.2.2_rtw_r8680.20130821
* Copyright (c) 2003-2012, Jouni Malinen <j@w1.fi> and contributors
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
*
* This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)
*
* usage:
* wpa_supplicant [-BddhKLqqstuvW] [-P<pid file>] [-g<global ctrl>] \
* -i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
* [-b<br_ifname>] [-f<debug file>] [-e<entropy file>] \
* [-o<override driver>] [-O<override ctrl>] \
* [-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
* [-p<driver_param>] [-b<br_ifname>] ...]
*
* drivers:
* wext = Linux wireless extensions (generic) <-------------------
* nl80211 = Linux nl80211/cfg80211 <-------------------
* options:
* -b = optional bridge interface name
* -B = run daemon in the background
* -c = Configuration file
* -C = ctrl_interface parameter (only used if -c is not)
* -i = interface name
* -d = increase debugging verbosity (-dd even more)
* -D = driver name (can be multiple drivers: nl80211,wext)
* -e = entropy file
* -g = global ctrl_interface
* -K = include keys (passwords, etc.) in debug output
* -t = include timestamp in debug messages
* -h = show this help text
* -L = show license (BSD)
* -o = override driver parameter for new interfaces
* -O = override ctrl_interface parameter for new interfaces
* -p = driver parameters
* -P = PID file
* -q = decrease debugging verbosity (-qq even less)
* -v = show version
* -W = wait for a control interface monitor before starting
* -N = start describing new interface
* example:
* wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
* 255|root@android:/ #
*
*/

wpa_supplicant drivers 查看跟踪的更多相关文章

  1. mysql通过查看跟踪日志跟踪执行的sql语句

    在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可. 开启mysql的日志log方法: wind ...

  2. 如何查看跟踪查看LINUX内核中的源码

    我的博客:www.while0.com 最近看LINUX书籍时,根据书中代码找相应的函数或者结构定义相当吃力,根据网上资料按以下方法查找速度较快. 1.安装ctags 在源代码目录下运行 ctags ...

  3. git跟踪远程分支,查看本地分支追踪和远程分支的关系

    跟踪远程分支 如果用git push指令时,当前分支没有跟踪远程分支(没有和远程分支建立联系),那么就会git就会报错 There is no tracking information for the ...

  4. Trace-语句启动Profiler中暂停的跟踪会出现什么状况

    2016-09-08 22:09 整理,未发布Profiler创建客户端跟踪.常规页不保存文件.不勾选服务器处理跟踪数据:事件选择RPC:Completed和SQL:BatchCompleted,列筛 ...

  5. Trace-如何跟踪某个Job的开销

    1.背景 下面是从以往Profiler收集的跟踪文件中提取Job有关数据 ;with cte as( Duration_ms ,CPU CPU_ms,Reads,Writes,StartTime,En ...

  6. SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  7. 使用sql server profilter跟踪sql

    最近在研究EF延迟加载和贪婪加载的用法时,想要查看Linq生成的sql.一开始通过VS-->调试-->窗口-->IntelliTrace事件,来查看生成的sql,并不是十分准确.然后 ...

  8. 【转】SQL Server中关于跟踪(Trace)那点事

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案. 简 ...

  9. 【转】mysql如何跟踪执行的sql语句

    转自http://blog.csdn.net/testcs_dn/article/details/18791815 在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? ...

随机推荐

  1. SSH常见问题集锦

    /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 ser ...

  2. 【Kubernetes】Kubernetes的Service外部访问方式:NodePort和LoadBalancer

    Kubernetes的Pod的寿命是有限的,它们不会复活,因此尽管每个Pod都有自己的IP地址,但是这些IP地址是不可靠的,会随着Pod的消亡而消失. 这就带来一个问题,如果一些Pod的集合(称之为b ...

  3. xftp向ubuntu传输文件错误

    xftp向ubuntu传输文件错误原因: 登陆用户对文件夹没有权限. 解决方法:授予权限 chmod 777 该目录名

  4. BZOJ1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草

    数轴上n<=1000个点,从p出发以任意顺序走到所有的点,求到达每个点的时间之和的最小值. 好题!看起来水水的实际易错! 显然的结论是经过一个区间点之后肯定落在左端点或右端点上,谁没事最后还往中 ...

  5. 三、fs文件操作模块

    fs模块用于文件的读写等操作. 该模块有如下这些方法: 1.fs.stat() : 检测是文件还是目录 const fs = require('fs'); fs.stat('test.html',fu ...

  6. HDU3430 (置换群循环节+中国剩余定理)

    题意:给出n张牌,标号为1-n,然后给出两个序列,序列1表示序列1,2,3,4……,n洗一次牌后到达的,序列2表示目标序列,问初始序列按序列1的洗牌方式洗几次能到达序列2的情况,如果不能到达输出-1. ...

  7. MySQL基础架构

    前段时间订阅了<Mysql实战45讲>(从原理到实战),新的一年为自己充充电.对于这部分内容,我所知道的只来源于我大学里学习的课程<数据库原理>,在大学里学习的只是简单的查询, ...

  8. [bzoj3998][TJOI2015]弦论_后缀自动机

    弦论 bzoj-3998 TJOI-2015 题目大意:给定一个字符串,求其$k$小子串. 注释:$1\le length \le 5\cdot 10^5$,$1\le k\le 10^9$. 想法: ...

  9. 通过简单的两数相加体会hashmap的好处

    目录 引入题目:两数相加 HashMap相关知识: Map集合 Map集合的特点 Map常用子类 HashMap集合 LinkedHashMap集合 Map集合的常用方法 Map集合的第一种遍历方式: ...

  10. Linux命令chattr和lsattr

    先看字面解释: chattr:chattr - change file attributes on a Linux file system lsattr - list file attributes ...