1
This updates the code in net/slirp.c to be compatible with
1
Update the code in net/slirp.c to be compatible with
2
libslirp 4.8.0, which deprecated slirp_pollfds_fill()
2
libslirp 4.8.0, which deprecated slirp_pollfds_fill()
3
and started using slirp_os_socket type for sockets
3
and started using slirp_os_socket type for sockets
4
(which is a 64-bit integer on win64).
4
(which is a 64-bit integer on win64) for all callbacks
5
starting with version 6 of the interface.
5
6
6
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
7
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
7
---
8
---
8
I don't remember if this change has already been proposed.
9
v2: update other callbacks too, use version 6 of the interface
9
10
10
net/slirp.c | 11 ++++++++---
11
net/slirp.c | 25 +++++++++++++++++--------
11
1 file changed, 8 insertions(+), 3 deletions(-)
12
1 file changed, 17 insertions(+), 8 deletions(-)
12
13
13
diff --git a/net/slirp.c b/net/slirp.c
14
diff --git a/net/slirp.c b/net/slirp.c
14
index XXXXXXX..XXXXXXX 100644
15
index XXXXXXX..XXXXXXX 100644
15
--- a/net/slirp.c
16
--- a/net/slirp.c
16
+++ b/net/slirp.c
17
+++ b/net/slirp.c
18
@@ -XXX,XX +XXX,XX @@ static void net_slirp_timer_mod(void *timer, int64_t expire_timer,
19
timer_mod(&t->timer, expire_timer);
20
}
21
22
-static void net_slirp_register_poll_fd(int fd, void *opaque)
23
+#if !SLIRP_CHECK_VERSION(4,8,0)
24
+# define slirp_os_socket int
25
+# define slirp_pollfds_fill_socket slirp_pollfds_fill
26
+# define register_poll_sock register_poll_fd
27
+# define unregister_poll_sock unregister_poll_fd
28
+#endif
29
+
30
+static void net_slirp_register_poll_sock(slirp_os_socket fd, void *opaque)
31
{
32
#ifdef WIN32
33
AioContext *ctxt = qemu_get_aio_context();
34
@@ -XXX,XX +XXX,XX @@ static void net_slirp_register_poll_fd(int fd, void *opaque)
35
#endif
36
}
37
38
-static void net_slirp_unregister_poll_fd(int fd, void *opaque)
39
+static void net_slirp_unregister_poll_sock(slirp_os_socket fd, void *opaque)
40
{
41
#ifdef WIN32
42
if (WSAEventSelect(fd, NULL, 0) != 0) {
43
@@ -XXX,XX +XXX,XX @@ static const SlirpCb slirp_cb = {
44
#endif
45
.timer_free = net_slirp_timer_free,
46
.timer_mod = net_slirp_timer_mod,
47
- .register_poll_fd = net_slirp_register_poll_fd,
48
- .unregister_poll_fd = net_slirp_unregister_poll_fd,
49
+ .register_poll_socket = net_slirp_register_poll_sock,
50
+ .unregister_poll_socket = net_slirp_unregister_poll_sock,
51
.notify = net_slirp_notify,
52
};
53
17
@@ -XXX,XX +XXX,XX @@ static int slirp_poll_to_gio(int events)
54
@@ -XXX,XX +XXX,XX @@ static int slirp_poll_to_gio(int events)
18
return ret;
55
return ret;
19
}
56
}
20
57
21
-static int net_slirp_add_poll(int fd, int events, void *opaque)
58
-static int net_slirp_add_poll(int fd, int events, void *opaque)
22
+#if SLIRP_CONFIG_VERSION_MAX < 6 /* < 4.8.0 compatibility */
23
+# define slirp_os_socket int
24
+# define slirp_pollfds_fill_socket slirp_pollfds_fill
25
+#endif
26
+
27
+static int net_slirp_add_poll(slirp_os_socket fd, int events, void *opaque)
59
+static int net_slirp_add_poll(slirp_os_socket fd, int events, void *opaque)
28
{
60
{
29
GArray *pollfds = opaque;
61
GArray *pollfds = opaque;
30
GPollFD pfd = {
62
GPollFD pfd = {
31
@@ -XXX,XX +XXX,XX @@ static void net_slirp_poll_notify(Notifier *notifier, void *data)
63
@@ -XXX,XX +XXX,XX @@ static void net_slirp_poll_notify(Notifier *notifier, void *data)
...
...
37
+ slirp_pollfds_fill_socket(s->slirp, &poll->timeout,
69
+ slirp_pollfds_fill_socket(s->slirp, &poll->timeout,
38
+ net_slirp_add_poll, poll->pollfds);
70
+ net_slirp_add_poll, poll->pollfds);
39
break;
71
break;
40
case MAIN_LOOP_POLL_OK:
72
case MAIN_LOOP_POLL_OK:
41
case MAIN_LOOP_POLL_ERR:
73
case MAIN_LOOP_POLL_ERR:
74
@@ -XXX,XX +XXX,XX @@ static int net_slirp_init(NetClientState *peer, const char *model,
75
76
s = DO_UPCAST(SlirpState, nc, nc);
77
78
- cfg.version = SLIRP_CHECK_VERSION(4,7,0) ? 4 : 1;
79
+ cfg.version =
80
+ SLIRP_CHECK_VERSION(4,8,0) ? 6 :
81
+ SLIRP_CHECK_VERSION(4,7,0) ? 4 : 1;
82
cfg.restricted = restricted;
83
cfg.in_enabled = ipv4;
84
cfg.vnetwork = net;
42
--
85
--
43
2.39.5
86
2.39.5
diff view generated by jsdifflib