天嵌二次封装库使用手册  V2.1.2
wpa_ctrl.h 文件参考
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#include <sys/un.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <time.h>
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  wpa_ctrl
 控制接口库的内部结构 更多...
 

宏定义

#define CONFIG_CTRL_IFACE_CLIENT_DIR   "/tmp"
 配置客户端控制接口目录 更多...
 
#define CONFIG_CTRL_IFACE_CLIENT_PREFIX   "wpa_ctrl_"
 配置客户端控制接口前缀 更多...
 

函数

struct wpa_ctrlwpa_ctrl_open (const char *ctrl_path)
 打开wpa_supplicant/hostapd的控制接口 更多...
 
void wpa_ctrl_close (struct wpa_ctrl *ctrl)
 关闭wpa_supplicant/hostapd的控制接口 更多...
 
int wpa_ctrl_request (struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len, char *reply, size_t *reply_len)
 发送指令到wpa_supplicant/hostapd 更多...
 
int wpa_ctrl_attach (struct wpa_ctrl *ctrl)
 注册为控制接口的事件监视器 更多...
 
int wpa_ctrl_detach (struct wpa_ctrl *ctrl)
 从控制接口注销事件监视器 更多...
 
int wpa_ctrl_recv (struct wpa_ctrl *ctrl, char *reply, size_t *reply_len)
 接收挂起(pending)的控制接口消息 更多...
 
int wpa_ctrl_pending (struct wpa_ctrl *ctrl)
 检查是否存在挂起(pending)的事件消息 更多...
 
int wpa_ctrl_get_fd (struct wpa_ctrl *ctrl)
 获取控制接口使用的文件描述符 更多...
 
int wpa_ctrl_send (struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len)
 向wpa_supplicant/hostapd发送命令,但不会等待响应 更多...
 

详细描述

作者
owen (ouzij.nosp@m.ian@.nosp@m.embed.nosp@m.sky..nosp@m.net)
版本
1.0
日期
2021-08-27
修改日志:
Date Version Author Description
2021-08-27 1.0 owen 第一次发布,封装对wpa_cli的底层操作

在文件 wpa_ctrl.h 中定义.

宏定义说明

#define CONFIG_CTRL_IFACE_CLIENT_DIR   "/tmp"

配置客户端控制接口目录

在文件 wpa_ctrl.h28 行定义.

#define CONFIG_CTRL_IFACE_CLIENT_PREFIX   "wpa_ctrl_"

配置客户端控制接口前缀

在文件 wpa_ctrl.h29 行定义.

函数说明

int wpa_ctrl_attach ( struct wpa_ctrl ctrl)

注册为控制接口的事件监视器

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 成功时为0,失败时为-1,超时时为-2

此函数将控制接口连接注册为wpa_supplicant/hostapd事件的监视器。 成功调用wpa_ctrl_attach()后,控件接口连接开始接收可使用wpa_ctrl_recv()读取的事件消息。

void wpa_ctrl_close ( struct wpa_ctrl ctrl)

关闭wpa_supplicant/hostapd的控制接口

参数
ctrl由wpa_ctrl_open()返回的接口控制指针

此功能用于关闭控制接口。

int wpa_ctrl_detach ( struct wpa_ctrl ctrl)

从控制接口注销事件监视器

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 成功时为0,失败时为-1,超时时为-2

此函数用于取消将控制接口连接注册为wpa_supplicant/hostapd事件的监视器,即取消使用wpa_ctrl_attach()完成的注册。

int wpa_ctrl_get_fd ( struct wpa_ctrl ctrl)

获取控制接口使用的文件描述符

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 用于连接的文件描述符

返回的文件描述符不得直接用于发送或接收数据包;相反,必须为此使用库函数wpa_ctrl_request()和wpa_ctrl_recv()。

struct wpa_ctrl* wpa_ctrl_open ( const char *  ctrl_path)

打开wpa_supplicant/hostapd的控制接口

参数
ctrl_pathUNIX域套接字的路径;如果使用UDP套接字,则忽略。
返回
struct wpa_ctrl* 指向抽象控制接口数据的指针,失败时为NULL

此函数用于打开wpa_supplicant/hostapd的控制接口。 ctrl_path通常是/var/run/wpa_supplicant或/var/run/hostapd。 此路径在wpa_-supplicant/hostapd中配置,其他使用控制接口的程序需要使用匹配的路径配置。

int wpa_ctrl_pending ( struct wpa_ctrl ctrl)

检查是否存在挂起(pending)的事件消息

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 如果有挂起的消息,则返回1;如果没有,则返回0;如果出现错误,则返回-1

此函数将检查是否有任何挂起的控制接口消息可通过wpa_ctrl_recv()接收。 wpa_ctrl_pending()仅用于事件消息,即必须使用wpa_ctrl_attach()将控件接口注册为事件监视器。

int wpa_ctrl_recv ( struct wpa_ctrl ctrl,
char *  reply,
size_t *  reply_len 
)

接收挂起(pending)的控制接口消息

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
reply消息数据缓冲区
reply_len接收缓存区长度
返回
int 成功时为0,失败时为-1

此函数将接收挂起的控制接口消息。如果没有可用的消息,此功能将被阻止。 收到的响应将被写入reply,reply_len设置为回复的实际长度。 wpa_ctrl_recv()仅用于事件消息,即必须使用wpa_ctrl_attach()将控件接口注册为事件监视器。

int wpa_ctrl_request ( struct wpa_ctrl ctrl,
const char *  cmd,
size_t  cmd_len,
char *  reply,
size_t *  reply_len 
)

发送指令到wpa_supplicant/hostapd

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
cmd指令;通常为ASCII文本,例如“PING”
cmd_lencmd的字节长度
reply接收缓存区
reply_len接收缓存区长度
返回
int 成功时为0,错误时为-1(发送或接收失败),超时时为-2

此函数用于向wpa_supplicant/hostapd发送命令。 收到的响应将写入reply,reply_len设置为回复的实际长度。 在等待回复时,此功能最多会阻塞两秒钟。如果收到未经请求的消息,阻塞时间可能更长。

int wpa_ctrl_send ( struct wpa_ctrl ctrl,
const char *  cmd,
size_t  cmd_len 
)

向wpa_supplicant/hostapd发送命令,但不会等待响应

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
cmd指令;通常为ASCII文本,例如“PING”
cmd_lencmd的字节长度
返回
int 成功时为0,错误时为-1

此函数用于向wpa_supplicant/hostapd发送命令。但不会等待回复。