/****************************************************************************
* 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. hdu 1501 基本搜索深搜

    #include<stdio.h> #include<string.h> char s1[300],s2[300],s[500]; int len1,len2,len3,fla ...

  2. [转]android 如何获取第三方app的sha1值

    对于android 应用的sha1值和md5值的获取,如果是我们自己的应用,不论是获取测试的和正式的都是比较方便的.但是如何去获取别人开发的app的sha1和md5呢,并且我们只有apk有没有相关的文 ...

  3. poj2689素数问题

    打算重新刷一下数论题,忘了很多了,水平也很差,此题入手就不顺了,刷了一个早上,只是一个简单 的素数应用罢了.题意:找出区间长度不超过10^6的最近的素数和最远的素数(相邻的), 算法:数在int范围内 ...

  4. SQL SERVER 2012 第三章 T-SQL 基本语句 having子句

    SELECT ManagerID AS Manager,COUNT(*) AS Reports FROM Human.Resources.Employee2 WHERE EmployeeID !=5 ...

  5. 牛客网暑期ACM多校训练营(第九场) A题 FWT

    链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian ...

  6. Spring MVC异常处理实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-exception-handling-example.ht ...

  7. JVM监控工具:jps、jstat、jinfo、jmap、jhat、jstack使用介绍

    转载:http://outofmemory.cn/java/jvm/jvm-tools-jps-jstat-jinfo-jmap-jhat-jstack 一.jps(JVM Process Statu ...

  8. 【转】Wireshark技巧-过滤规则和显示规则

    原文: http://www.cnblogs.com/icez/p/3973873.html ----------------------------------------------------- ...

  9. Spring4.0MVC学习资料,注解自己主动扫描bean,自己主动注入bean(二)

    Spring4.0的新特性我们在上一章已经介绍过了. 包含它对jdk8的支持,Groovy Bean Definition DSL的支持.核心容器功能的改进,Web开发改进.測试框架改进等等.这张我们 ...

  10. Office WORD EXCEL批量查找和替换技巧实例

    1 删除多余的空行 如果是在WORD中,则查找^p^p替换为^p.   如果是在EXCEL里,则为全部选中,然后点击编辑,定位,定位条件,空值. 将全部选中空白的行,如图所示 再次点击编辑,删除,删除 ...