|
@@ -247,7 +247,14 @@ static void net_slirp_timer_mod(void *timer, int64_t expire_timer,
|
|
|
timer_mod(&t->timer, expire_timer);
|
|
|
}
|
|
|
|
|
|
-static void net_slirp_register_poll_fd(int fd, void *opaque)
|
|
|
+#if !SLIRP_CHECK_VERSION(4, 9, 0)
|
|
|
+# define slirp_os_socket int
|
|
|
+# define slirp_pollfds_fill_socket slirp_pollfds_fill
|
|
|
+# define register_poll_socket register_poll_fd
|
|
|
+# define unregister_poll_socket unregister_poll_fd
|
|
|
+#endif
|
|
|
+
|
|
|
+static void net_slirp_register_poll_sock(slirp_os_socket fd, void *opaque)
|
|
|
{
|
|
|
#ifdef WIN32
|
|
|
AioContext *ctxt = qemu_get_aio_context();
|
|
@@ -260,7 +267,7 @@ static void net_slirp_register_poll_fd(int fd, void *opaque)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-static void net_slirp_unregister_poll_fd(int fd, void *opaque)
|
|
|
+static void net_slirp_unregister_poll_sock(slirp_os_socket fd, void *opaque)
|
|
|
{
|
|
|
#ifdef WIN32
|
|
|
if (WSAEventSelect(fd, NULL, 0) != 0) {
|
|
@@ -286,8 +293,8 @@ static const SlirpCb slirp_cb = {
|
|
|
#endif
|
|
|
.timer_free = net_slirp_timer_free,
|
|
|
.timer_mod = net_slirp_timer_mod,
|
|
|
- .register_poll_fd = net_slirp_register_poll_fd,
|
|
|
- .unregister_poll_fd = net_slirp_unregister_poll_fd,
|
|
|
+ .register_poll_socket = net_slirp_register_poll_sock,
|
|
|
+ .unregister_poll_socket = net_slirp_unregister_poll_sock,
|
|
|
.notify = net_slirp_notify,
|
|
|
};
|
|
|
|
|
@@ -314,7 +321,7 @@ static int slirp_poll_to_gio(int events)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int net_slirp_add_poll(int fd, int events, void *opaque)
|
|
|
+static int net_slirp_add_poll(slirp_os_socket fd, int events, void *opaque)
|
|
|
{
|
|
|
GArray *pollfds = opaque;
|
|
|
GPollFD pfd = {
|
|
@@ -363,8 +370,8 @@ static void net_slirp_poll_notify(Notifier *notifier, void *data)
|
|
|
|
|
|
switch (poll->state) {
|
|
|
case MAIN_LOOP_POLL_FILL:
|
|
|
- slirp_pollfds_fill(s->slirp, &poll->timeout,
|
|
|
- net_slirp_add_poll, poll->pollfds);
|
|
|
+ slirp_pollfds_fill_socket(s->slirp, &poll->timeout,
|
|
|
+ net_slirp_add_poll, poll->pollfds);
|
|
|
break;
|
|
|
case MAIN_LOOP_POLL_OK:
|
|
|
case MAIN_LOOP_POLL_ERR:
|
|
@@ -629,7 +636,9 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
|
|
|
|
|
s = DO_UPCAST(SlirpState, nc, nc);
|
|
|
|
|
|
- cfg.version = SLIRP_CHECK_VERSION(4,7,0) ? 4 : 1;
|
|
|
+ cfg.version =
|
|
|
+ SLIRP_CHECK_VERSION(4, 9, 0) ? 6 :
|
|
|
+ SLIRP_CHECK_VERSION(4, 7, 0) ? 4 : 1;
|
|
|
cfg.restricted = restricted;
|
|
|
cfg.in_enabled = ipv4;
|
|
|
cfg.vnetwork = net;
|