使用socket方式与wpa_supplicant通信
操作接口
struct wpa_ctrl {
#ifdef CONFIG_CTRL_IFACE_UDP
int s;
struct sockaddr_in local;
struct sockaddr_in dest;
char *cookie;
#endif /* CONFIG_CTRL_IFACE_UDP */
#ifdef CONFIG_CTRL_IFACE_UNIX
int s;
struct sockaddr_un local;
struct sockaddr_un dest;
#endif /* CONFIG_CTRL_IFACE_UNIX */
#ifdef CONFIG_CTRL_IFACE_NAMED_PIPE
HANDLE pipe;
#endif /* CONFIG_CTRL_IFACE_NAMED_PIPE */
};
/* 建立并初始化一个Unix domain socket的client结点,并与作为server的wpa_supplicant结点绑定 */
struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path);
/* 撤销并销毁已建立的Unix domain socket的client结点 */
void wpa_ctrl_close(struct wpa_ctrl *ctrl);
/* 用户模块直接调用该函数对wpa_supplicant发送命令并获取所需信息 */
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));
/* 注册 某个 control interface 作为 monitor interface */
int wpa_ctrl_attach(struct wpa_ctrl *ctrl);
/* 撤销某个 monitor interface 为 普通的 control interface */
int wpa_ctrl_detach(struct wpa_ctrl *ctrl);
/* 判断是否有挂起的event 事件 */
int wpa_ctrl_pending(struct wpa_ctrl *ctrl);
/* 获取挂起的event 事件 */
int wpa_ctrl_recv(struct wpa_ctrl *ctrl, char *reply, size_t *reply_len);
封装代码
wpa_supplicant通信接口(dbus/wpa_ctrl)说明
wpa_supplicant 移植及 linux 命令行模式配置无线上网
Linux之wpa_supplicant.conf文件详解
wpa_supplicant配置文件说明
wpa_supplicant demo 分析
wpa_supplicant的用法
WPA_Supplicant使用及配置