为什么我需要两个不同的wpa_supplicant连接(wpa_cli-ctrl_conn和mon_conn)

Bartlomiej Grzeskowiak

我正在编写自己的C库来管理Linux中的wlan。我基于wpa_cli接口,但我无法理解,为什么它们使用两个wpa_ctrl结构:

static struct wpa_ctrl *ctrl_conn;
static struct wpa_ctrl *mon_conn;

当我仅打开并附加ctrl_conn吗?

象征主义

wpa_cli以两种方式起作用:交互式非交互式

出现提示时,您将以wpa_cli交互方式使用,反之亦然。

这是交互模式:

$ wpa_cli -i wlan0
wpa_cli v2.1
Copyright (c) 2004-2014, Jouni Malinen <[email protected]> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.

Interactive mode

> status
wpa_state=INACTIVE
address=98:fc:11:d1:89:68
uuid=0cb62eb3-776e-55d2-a4f9-983cdd3e48d2

并且是非交互模式:

$ wpa_cli -i wlan0 status
wpa_state=INACTIVE
address=98:fc:11:d1:89:68
uuid=0cb62eb3-776e-55d2-a4f9-983cdd3e48d2

似乎在使用交互模式时,请同时wpa_cli使用ctrl_connmon_connctrl_conn仅用于发送命令,并mon_conn用于获取事件(即,它是通过附加的事件wpa_ctrl_attach())。

当您使用非交互模式下,wpa_cli仅使用ctrl_conn,因为没有返回的事件。

如果您打算使用wpa_supplicant事件(希望您会这样做),我认为最好使用两个不同的连接,如wpa_ctrl_request() 有关msg_cb参数注释中所述

/**
 * wpa_ctrl_request - Send a command to wpa_supplicant/hostapd
 * @ctrl: Control interface data from wpa_ctrl_open()
 * @cmd: Command; usually, ASCII text, e.g., "PING"
 * @cmd_len: Length of the cmd in bytes
 * @reply: Buffer for the response
 * @reply_len: Reply buffer length
 * @msg_cb: Callback function for unsolicited messages or %NULL if not used
 * Returns: 0 on success, -1 on error (send or receive failed), -2 on timeout
 *
 * This function is used to send commands to wpa_supplicant/hostapd. Received
 * response will be written to reply and reply_len is set to the actual length
 * of the reply. This function will block for up to two seconds while waiting
 * for the reply. If unsolicited messages are received, the blocking time may
 * be longer.
 *
 * msg_cb can be used to register a callback function that will be called for
 * unsolicited messages received while waiting for the command response. These
 * messages may be received if wpa_ctrl_request() is called at the same time as
 * wpa_supplicant/hostapd is sending such a message. This can happen only if
 * the program has used wpa_ctrl_attach() to register itself as a monitor for
 * event messages. Alternatively to msg_cb, programs can register two control
 * interface connections and use one of them for commands and the other one for
 * receiving event messages, in other words, call wpa_ctrl_attach() only for
 * the control interface connection that will be used for event messages.
 */
int wpa_ctrl_request(struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len,
             char *reply, size_t *reply_len,
             void (*msg_cb)(char *msg, size_t len));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

已成功初始化wpa_supplicant,但我尚未连接,并且无法访问wpa_cli

来自分类Dev

Linux和Android之间的wpa_supplicant wifi直接连接

来自分类Dev

使用 wpa_supplicant 和 dhclient 在 WiFi 连接的 IP 旁边显示主机名

来自分类Dev

wpa_supplicant和网络管理工具

来自分类Dev

wpa_supplicant / WiFi Direct:wpa_cli命令p2p_find返回失败

来自分类Dev

wpa_cli如何区分WEP共享和WEP开放?

来自分类Dev

为什么我仍需要两个不同的Visual Studio和Xamarin Studio解决方案(* .sln)文件?

来自分类Dev

wpa_supplicant无法从配置文件中设置essid和其他参数

来自分类Dev

无法使用wpa_supplicant连接

来自分类Dev

无法使用wpa_supplicant连接

来自分类Dev

wpa_supplicant不再连接到eduroam

来自分类Dev

SQLAlchemy 中的 conn.execute('some string') 和 conn.execute(text('some string')) 有什么区别?

来自分类Dev

wpa_supplicant噩梦

来自分类Dev

NetworkManager与wpa_supplicant

来自分类Dev

Rasberry pi无法连接到wpa_supplicant-wpa_ctrl_open:没有这样的文件或目录

来自分类Dev

WPA_Supplicant 和 Netplan 的 YAML 文件(如果有)之间的交互 - 20.04 无线网络

来自分类Dev

WiFi错误wpa_supplicant

来自分类Dev

帮助设置wpa_supplicant

来自分类Dev

为什么我从system.out.println()和system.exit()得到两个不同的值?

来自分类Dev

如何在Ubuntu 10.04上使用wpa_supplicant连接

来自分类Dev

无法连接到wpa_supplicant:wlan0-重试

来自分类Dev

无法使用wpa_supplicant连接到wifi

来自分类Dev

wpa_supplicant:如何从脚本连接到特定的ESSID?

来自分类Dev

如何在ubuntu 10.04上使用wpa_supplicant连接

来自分类Dev

wpa_supplicant在连接时给出rfkill错误?

来自分类Dev

无法使用wpa_supplicant启动Wlan连接?

来自分类Dev

随后对wpa_supplicant的调用失败-无法连接到wifi

来自分类Dev

如何防止wpa_supplicant连接到网络

来自分类Dev

无法使用wpa_supplicant连接到wifi

Related 相关文章

  1. 1

    已成功初始化wpa_supplicant,但我尚未连接,并且无法访问wpa_cli

  2. 2

    Linux和Android之间的wpa_supplicant wifi直接连接

  3. 3

    使用 wpa_supplicant 和 dhclient 在 WiFi 连接的 IP 旁边显示主机名

  4. 4

    wpa_supplicant和网络管理工具

  5. 5

    wpa_supplicant / WiFi Direct:wpa_cli命令p2p_find返回失败

  6. 6

    wpa_cli如何区分WEP共享和WEP开放?

  7. 7

    为什么我仍需要两个不同的Visual Studio和Xamarin Studio解决方案(* .sln)文件?

  8. 8

    wpa_supplicant无法从配置文件中设置essid和其他参数

  9. 9

    无法使用wpa_supplicant连接

  10. 10

    无法使用wpa_supplicant连接

  11. 11

    wpa_supplicant不再连接到eduroam

  12. 12

    SQLAlchemy 中的 conn.execute('some string') 和 conn.execute(text('some string')) 有什么区别?

  13. 13

    wpa_supplicant噩梦

  14. 14

    NetworkManager与wpa_supplicant

  15. 15

    Rasberry pi无法连接到wpa_supplicant-wpa_ctrl_open:没有这样的文件或目录

  16. 16

    WPA_Supplicant 和 Netplan 的 YAML 文件(如果有)之间的交互 - 20.04 无线网络

  17. 17

    WiFi错误wpa_supplicant

  18. 18

    帮助设置wpa_supplicant

  19. 19

    为什么我从system.out.println()和system.exit()得到两个不同的值?

  20. 20

    如何在Ubuntu 10.04上使用wpa_supplicant连接

  21. 21

    无法连接到wpa_supplicant:wlan0-重试

  22. 22

    无法使用wpa_supplicant连接到wifi

  23. 23

    wpa_supplicant:如何从脚本连接到特定的ESSID?

  24. 24

    如何在ubuntu 10.04上使用wpa_supplicant连接

  25. 25

    wpa_supplicant在连接时给出rfkill错误?

  26. 26

    无法使用wpa_supplicant启动Wlan连接?

  27. 27

    随后对wpa_supplicant的调用失败-无法连接到wifi

  28. 28

    如何防止wpa_supplicant连接到网络

  29. 29

    无法使用wpa_supplicant连接到wifi

热门标签

归档