summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net.h3
-rw-r--r--net/tap.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/net.h b/net.h
index 4971fcbbb5..116bb80119 100644
--- a/net.h
+++ b/net.h
@@ -1,6 +1,7 @@
#ifndef QEMU_NET_H
#define QEMU_NET_H
+#include <stdbool.h>
#include "qemu-queue.h"
#include "qemu-common.h"
#include "qdict.h"
@@ -36,6 +37,7 @@ typedef enum {
NET_CLIENT_TYPE_DUMP
} net_client_type;
+typedef void (NetPoll)(VLANClientState *, bool enable);
typedef int (NetCanReceive)(VLANClientState *);
typedef ssize_t (NetReceive)(VLANClientState *, const uint8_t *, size_t);
typedef ssize_t (NetReceiveIOV)(VLANClientState *, const struct iovec *, int);
@@ -51,6 +53,7 @@ typedef struct NetClientInfo {
NetCanReceive *can_receive;
NetCleanup *cleanup;
LinkStatusChanged *link_status_changed;
+ NetPoll *poll;
} NetClientInfo;
struct VLANClientState {
diff --git a/net/tap.c b/net/tap.c
index 0d8b424123..d3492de116 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -262,6 +262,13 @@ static void tap_cleanup(VLANClientState *nc)
close(s->fd);
}
+static void tap_poll(VLANClientState *nc, bool enable)
+{
+ TAPState *s = DO_UPCAST(TAPState, nc, nc);
+ tap_read_poll(s, enable);
+ tap_write_poll(s, enable);
+}
+
/* fd support */
static NetClientInfo net_tap_info = {
@@ -270,6 +277,7 @@ static NetClientInfo net_tap_info = {
.receive = tap_receive,
.receive_raw = tap_receive_raw,
.receive_iov = tap_receive_iov,
+ .poll = tap_poll,
.cleanup = tap_cleanup,
};