/****************************************************************************
* 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:/ #
*
*/

最新文章

  1. 【JavaScript吉光片羽】--- 滑动条
  2. Github团队开发示例(二)
  3. DFS序详解
  4. [刘阳Java]_MyBatis_动态SQL标签用法_第7讲
  5. MySQL注射的过滤绕过技巧[1]
  6. rabbitmq redis
  7. 利用闭包向post回调函数传参数
  8. MAC自带的SVN进行升级
  9. HDU 5303 Delicious Apples 美味苹果 (DP)
  10. Socket编程实践(4) --多进程并发server
  11. 设计模式理解(八)结构型——装饰者模式(记得加上UML图 --- 未完)
  12. Android WebView 打印 Console Log
  13. RSA加密解密及RSA签名和验证及证书
  14. Java JDK 版本的区别
  15. Git的4个阶段的撤销更改
  16. JS-获取class类名为某个的元素-【getClass】函数封装
  17. 【NOI2008】假面舞会
  18. 记录初次使用tesseract的过程
  19. vue.js引用出错-script代码块放在head和body中的区别
  20. 【简单算法】37.Shuffle an Array

热门文章

  1. 【Ts 4】ftp服务器搭建
  2. PHP统计目录中文件个数和文件大小
  3. 约分差束 例题 ZOJ 2770 火烧连营
  4. php之ThinkPHP的memcached类的修改
  5. linux 常见名词及命令(二)
  6. 洛谷——P2256 一中校运会之百米跑
  7. uva 10559
  8. 制作自己的网站第二步***在Linux上装上需要的软件以及部署项目配置**
  9. datatable使用介绍
  10. 从CLR GC到CoreCLR GC看.NET Core对云原生的支持