Loading net/slirp.c +16 −9 Original line number Diff line number Diff line Loading @@ -161,44 +161,51 @@ static NetClientInfo net_slirp_info = { .cleanup = net_slirp_cleanup, }; static void net_slirp_guest_error(const char *msg) static void net_slirp_guest_error(const char *msg, void *opaque) { qemu_log_mask(LOG_GUEST_ERROR, "%s", msg); } static int64_t net_slirp_clock_get_ns(void) static int64_t net_slirp_clock_get_ns(void *opaque) { return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); } static void *net_slirp_timer_new(SlirpTimerCb cb, void *opaque) static void *net_slirp_timer_new(SlirpTimerCb cb, void *cb_opaque, void *opaque) { return timer_new_full(NULL, QEMU_CLOCK_VIRTUAL, SCALE_MS, QEMU_TIMER_ATTR_EXTERNAL, cb, opaque); cb, cb_opaque); } static void net_slirp_timer_free(void *timer) static void net_slirp_timer_free(void *timer, void *opaque) { timer_del(timer); timer_free(timer); } static void net_slirp_timer_mod(void *timer, int64_t expire_timer) static void net_slirp_timer_mod(void *timer, int64_t expire_timer, void *opaque) { timer_mod(timer, expire_timer); } static void net_slirp_register_poll_fd(int fd) static void net_slirp_register_poll_fd(int fd, void *opaque) { qemu_fd_register(fd); } static void net_slirp_unregister_poll_fd(int fd) static void net_slirp_unregister_poll_fd(int fd, void *opaque) { /* no qemu_fd_unregister */ } static void net_slirp_notify(void *opaque) { qemu_notify_event(); } static const SlirpCb slirp_cb = { .send_packet = net_slirp_send_packet, .guest_error = net_slirp_guest_error, Loading @@ -208,7 +215,7 @@ static const SlirpCb slirp_cb = { .timer_mod = net_slirp_timer_mod, .register_poll_fd = net_slirp_register_poll_fd, .unregister_poll_fd = net_slirp_unregister_poll_fd, .notify = qemu_notify_event, .notify = net_slirp_notify, }; static int slirp_poll_to_gio(int events) Loading slirp/dhcpv6.c +1 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ static int dhcpv6_parse_info_request(Slirp *slirp, uint8_t *odata, int olen, int len = odata[2] << 8 | odata[3]; if (len + 4 > olen) { slirp->cb->guest_error("Guest sent bad DHCPv6 packet!"); slirp->cb->guest_error("Guest sent bad DHCPv6 packet!", slirp->opaque); return -E2BIG; } Loading slirp/if.c +1 −1 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ diddit: */ void if_start(Slirp *slirp) { uint64_t now = slirp->cb->clock_get_ns(); uint64_t now = slirp->cb->clock_get_ns(slirp->opaque); bool from_batchq = false; struct mbuf *ifm, *ifm_next, *ifqt; Loading slirp/ip6_icmp.c +9 −6 Original line number Diff line number Diff line Loading @@ -14,7 +14,8 @@ static void ra_timer_handler(void *opaque) Slirp *slirp = opaque; slirp->cb->timer_mod(slirp->ra_timer, slirp->cb->clock_get_ns() / SCALE_MS + NDP_Interval); slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS + NDP_Interval, slirp->opaque); ndp_send_ra(slirp); } Loading @@ -24,9 +25,10 @@ void icmp6_init(Slirp *slirp) return; } slirp->ra_timer = slirp->cb->timer_new(ra_timer_handler, slirp); slirp->ra_timer = slirp->cb->timer_new(ra_timer_handler, slirp, slirp->opaque); slirp->cb->timer_mod(slirp->ra_timer, slirp->cb->clock_get_ns() / SCALE_MS + NDP_Interval); slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS + NDP_Interval, slirp->opaque); } void icmp6_cleanup(Slirp *slirp) Loading @@ -35,7 +37,7 @@ void icmp6_cleanup(Slirp *slirp) return; } slirp->cb->timer_free(slirp->ra_timer); slirp->cb->timer_free(slirp->ra_timer, slirp->opaque); } static void icmp6_send_echoreply(struct mbuf *m, Slirp *slirp, struct ip6 *ip, Loading Loading @@ -334,7 +336,8 @@ static void ndp_input(struct mbuf *m, Slirp *slirp, struct ip6 *ip, case ICMP6_NDP_RA: DEBUG_CALL(" type = Router Advertisement"); slirp->cb->guest_error("Warning: guest sent NDP RA, but shouldn't"); slirp->cb->guest_error("Warning: guest sent NDP RA, but shouldn't", slirp->opaque); break; case ICMP6_NDP_NS: Loading Loading @@ -368,7 +371,7 @@ static void ndp_input(struct mbuf *m, Slirp *slirp, struct ip6 *ip, case ICMP6_NDP_REDIRECT: DEBUG_CALL(" type = Redirect"); slirp->cb->guest_error( "Warning: guest sent NDP REDIRECT, but shouldn't"); "Warning: guest sent NDP REDIRECT, but shouldn't", slirp->opaque); break; } } Loading slirp/ip_icmp.c +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ static int icmp_send(struct socket *so, struct mbuf *m, int hlen) void icmp_detach(struct socket *so) { so->slirp->cb->unregister_poll_fd(so->s); so->slirp->cb->unregister_poll_fd(so->s, so->slirp->opaque); slirp_closesocket(so->s); sofree(so); } Loading Loading
net/slirp.c +16 −9 Original line number Diff line number Diff line Loading @@ -161,44 +161,51 @@ static NetClientInfo net_slirp_info = { .cleanup = net_slirp_cleanup, }; static void net_slirp_guest_error(const char *msg) static void net_slirp_guest_error(const char *msg, void *opaque) { qemu_log_mask(LOG_GUEST_ERROR, "%s", msg); } static int64_t net_slirp_clock_get_ns(void) static int64_t net_slirp_clock_get_ns(void *opaque) { return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); } static void *net_slirp_timer_new(SlirpTimerCb cb, void *opaque) static void *net_slirp_timer_new(SlirpTimerCb cb, void *cb_opaque, void *opaque) { return timer_new_full(NULL, QEMU_CLOCK_VIRTUAL, SCALE_MS, QEMU_TIMER_ATTR_EXTERNAL, cb, opaque); cb, cb_opaque); } static void net_slirp_timer_free(void *timer) static void net_slirp_timer_free(void *timer, void *opaque) { timer_del(timer); timer_free(timer); } static void net_slirp_timer_mod(void *timer, int64_t expire_timer) static void net_slirp_timer_mod(void *timer, int64_t expire_timer, void *opaque) { timer_mod(timer, expire_timer); } static void net_slirp_register_poll_fd(int fd) static void net_slirp_register_poll_fd(int fd, void *opaque) { qemu_fd_register(fd); } static void net_slirp_unregister_poll_fd(int fd) static void net_slirp_unregister_poll_fd(int fd, void *opaque) { /* no qemu_fd_unregister */ } static void net_slirp_notify(void *opaque) { qemu_notify_event(); } static const SlirpCb slirp_cb = { .send_packet = net_slirp_send_packet, .guest_error = net_slirp_guest_error, Loading @@ -208,7 +215,7 @@ static const SlirpCb slirp_cb = { .timer_mod = net_slirp_timer_mod, .register_poll_fd = net_slirp_register_poll_fd, .unregister_poll_fd = net_slirp_unregister_poll_fd, .notify = qemu_notify_event, .notify = net_slirp_notify, }; static int slirp_poll_to_gio(int events) Loading
slirp/dhcpv6.c +1 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ static int dhcpv6_parse_info_request(Slirp *slirp, uint8_t *odata, int olen, int len = odata[2] << 8 | odata[3]; if (len + 4 > olen) { slirp->cb->guest_error("Guest sent bad DHCPv6 packet!"); slirp->cb->guest_error("Guest sent bad DHCPv6 packet!", slirp->opaque); return -E2BIG; } Loading
slirp/if.c +1 −1 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ diddit: */ void if_start(Slirp *slirp) { uint64_t now = slirp->cb->clock_get_ns(); uint64_t now = slirp->cb->clock_get_ns(slirp->opaque); bool from_batchq = false; struct mbuf *ifm, *ifm_next, *ifqt; Loading
slirp/ip6_icmp.c +9 −6 Original line number Diff line number Diff line Loading @@ -14,7 +14,8 @@ static void ra_timer_handler(void *opaque) Slirp *slirp = opaque; slirp->cb->timer_mod(slirp->ra_timer, slirp->cb->clock_get_ns() / SCALE_MS + NDP_Interval); slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS + NDP_Interval, slirp->opaque); ndp_send_ra(slirp); } Loading @@ -24,9 +25,10 @@ void icmp6_init(Slirp *slirp) return; } slirp->ra_timer = slirp->cb->timer_new(ra_timer_handler, slirp); slirp->ra_timer = slirp->cb->timer_new(ra_timer_handler, slirp, slirp->opaque); slirp->cb->timer_mod(slirp->ra_timer, slirp->cb->clock_get_ns() / SCALE_MS + NDP_Interval); slirp->cb->clock_get_ns(slirp->opaque) / SCALE_MS + NDP_Interval, slirp->opaque); } void icmp6_cleanup(Slirp *slirp) Loading @@ -35,7 +37,7 @@ void icmp6_cleanup(Slirp *slirp) return; } slirp->cb->timer_free(slirp->ra_timer); slirp->cb->timer_free(slirp->ra_timer, slirp->opaque); } static void icmp6_send_echoreply(struct mbuf *m, Slirp *slirp, struct ip6 *ip, Loading Loading @@ -334,7 +336,8 @@ static void ndp_input(struct mbuf *m, Slirp *slirp, struct ip6 *ip, case ICMP6_NDP_RA: DEBUG_CALL(" type = Router Advertisement"); slirp->cb->guest_error("Warning: guest sent NDP RA, but shouldn't"); slirp->cb->guest_error("Warning: guest sent NDP RA, but shouldn't", slirp->opaque); break; case ICMP6_NDP_NS: Loading Loading @@ -368,7 +371,7 @@ static void ndp_input(struct mbuf *m, Slirp *slirp, struct ip6 *ip, case ICMP6_NDP_REDIRECT: DEBUG_CALL(" type = Redirect"); slirp->cb->guest_error( "Warning: guest sent NDP REDIRECT, but shouldn't"); "Warning: guest sent NDP REDIRECT, but shouldn't", slirp->opaque); break; } } Loading
slirp/ip_icmp.c +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ static int icmp_send(struct socket *so, struct mbuf *m, int hlen) void icmp_detach(struct socket *so) { so->slirp->cb->unregister_poll_fd(so->s); so->slirp->cb->unregister_poll_fd(so->s, so->slirp->opaque); slirp_closesocket(so->s); sofree(so); } Loading