diff options
-rw-r--r-- | src/drivers/driver_virtio_wifi.c | 29 | ||||
-rw-r--r-- | src/drivers/driver_virtio_wifi.h | 4 |
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 */ |