aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWeilun Du <wdu@google.com>2023-03-08 21:43:45 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-03-08 21:43:45 +0000
commit1475a12601d9ace9a80ca47d5ce7ed2b02dfb201 (patch)
treedc892bc1bc10d44b468d2926920c98041e377004
parent1d202fd6bdfc0426ba296accec0f3dd5eeea6767 (diff)
parent518926a2cb79d95d5d725014933964eb6e38e9c2 (diff)
downloadwpa_supplicant_8-emu-master-dev.tar.gz
-rw-r--r--src/drivers/driver_virtio_wifi.c29
-rw-r--r--src/drivers/driver_virtio_wifi.h4
2 files changed, 21 insertions, 12 deletions
diff --git a/src/drivers/driver_virtio_wifi.c b/src/drivers/driver_virtio_wifi.c
index 04f636f4..8dee37d2 100644
--- a/src/drivers/driver_virtio_wifi.c
+++ b/src/drivers/driver_virtio_wifi.c
@@ -135,13 +135,17 @@ static void handle_read(int sock, void *eloop_ctx, void *sock_ctx)
handle_frame(drv, buf, len);
}
-void set_virtio_sock(int sock)
+int set_virtio_sock(int sock)
{
- priv_drv->sock = sock;
- if (priv_drv->sock > 0 &&
- eloop_register_read_sock(priv_drv->sock, handle_read, priv_drv, NULL)) {
- wpa_printf(MSG_ERROR, "virtio_wifi: Could not register read socket for eapol");
+ if (priv_drv) {
+ priv_drv->sock = sock;
+ if (priv_drv->sock > 0 &&
+ !eloop_register_read_sock(priv_drv->sock, handle_read, priv_drv, NULL)) {
+ return 0;
+ }
+ wpa_printf(MSG_ERROR, "virtio_wifi: Could not register read socket for eloop");
}
+ return -1;
}
static void handle_ctrl_cmds(int sock, void *eloop_ctx, void *sock_ctx)
@@ -169,13 +173,18 @@ static void handle_ctrl_cmds(int sock, void *eloop_ctx, void *sock_ctx)
}
}
-void set_virtio_ctrl_sock(int sock)
+int set_virtio_ctrl_sock(int sock)
{
- priv_drv->ctrl_sock = sock;
- if (priv_drv->ctrl_sock > 0 &&
- eloop_register_read_sock(priv_drv->ctrl_sock, handle_ctrl_cmds, priv_drv, NULL)) {
- wpa_printf(MSG_ERROR, "virtio_wifi: Could not register control socket for eapol");
+ if (priv_drv) {
+ priv_drv->ctrl_sock = sock;
+ if (priv_drv->ctrl_sock > 0 &&
+ !eloop_register_read_sock(priv_drv->ctrl_sock, handle_ctrl_cmds,
+ priv_drv, NULL)) {
+ return 0;
+ }
+ wpa_printf(MSG_ERROR, "virtio_wifi: Could not register control socket for eloop.");
}
+ return -1;
}
struct virtio_wifi_key_data get_active_ptk() {
diff --git a/src/drivers/driver_virtio_wifi.h b/src/drivers/driver_virtio_wifi.h
index aeb9cced..22e2a303 100644
--- a/src/drivers/driver_virtio_wifi.h
+++ b/src/drivers/driver_virtio_wifi.h
@@ -6,8 +6,8 @@
#ifndef DRIVER_VIRTIO_WIFI_H
#define DRIVER_VIRTIO_WIFI_H
-extern void set_virtio_sock(int sock);
-extern void set_virtio_ctrl_sock(int sock);
+extern int set_virtio_sock(int sock);
+extern int set_virtio_ctrl_sock(int sock);
#define MAX_KEY_MATERIAL_LEN 32 /* max key length is 32 bytes */