Replace strong dependency on QEMU. Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- slirp/libslirp.h | 1 + net/slirp.c | 6 ++++++ slirp/slirp.c | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/slirp/libslirp.h b/slirp/libslirp.h index 36d5fb9163..16ced2aa0f 100644 --- a/slirp/libslirp.h +++ b/slirp/libslirp.h @@ -7,6 +7,7 @@ typedef struct Slirp Slirp; typedef struct SlirpCb { void (*output)(void *opaque, const uint8_t *pkt, int pkt_len); + int (*chr_write_all)(void *chr, const void *buf, size_t len); } SlirpCb; diff --git a/net/slirp.c b/net/slirp.c index 233f66b1ef..5c1f676487 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -140,8 +140,14 @@ static NetClientInfo net_slirp_info = { .cleanup = net_slirp_cleanup, }; +static int net_slirp_chr_write_all(void *chr, const void *buf, size_t len) +{ + return qemu_chr_fe_write_all(chr, buf, len); +} + static SlirpCb slirp_cb = { .output = net_slirp_output, + .chr_write_all = net_slirp_chr_write_all, }; static int net_slirp_init(NetClientState *peer, const char *model, diff --git a/slirp/slirp.c b/slirp/slirp.c index 7213915bf3..4e809e5d7f 100644 --- a/slirp/slirp.c +++ b/slirp/slirp.c @@ -1099,7 +1099,7 @@ ssize_t slirp_send(struct socket *so, const void *buf, size_t len, int flags) if (so->s == -1 && so->chardev) { /* XXX this blocks entire thread. Rewrite to use * qemu_chr_fe_write and background I/O callbacks */ - qemu_chr_fe_write_all(so->chardev, buf, len); + so->slirp->cb->chr_write_all(so->chardev, buf, len); return len; } -- 2.19.1.708.g4ede3d42df