From 775a412bf83f6bc0c5c02091ee06cf649b34c593 Mon Sep 17 00:00:00 2001 From: Pavel Dovgalyuk Date: Wed, 12 Sep 2018 11:20:07 +0300 Subject: [PATCH] slirp: fix ipv6 timers ICMP implementation for IPv6 uses timers based on virtual clock. This is incorrect because this service is not related to the guest state, and its events should not be recorded and replayed. This patch changes using virtual clock to the new virtual_ext clock. Signed-off-by: Pavel Dovgalyuk Message-Id: <20180912082007.3228.91491.stgit@pasha-VirtualBox> Reviewed-by: Samuel Thibault Signed-off-by: Paolo Bonzini --- slirp/ip6_icmp.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/slirp/ip6_icmp.c b/slirp/ip6_icmp.c index ee333d05a2..3f41187cfe 100644 --- a/slirp/ip6_icmp.c +++ b/slirp/ip6_icmp.c @@ -17,7 +17,7 @@ static void ra_timer_handler(void *opaque) { Slirp *slirp = opaque; timer_mod(slirp->ra_timer, - qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + NDP_Interval); + qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_EXT) + NDP_Interval); ndp_send_ra(slirp); } @@ -27,9 +27,10 @@ void icmp6_init(Slirp *slirp) return; } - slirp->ra_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL, ra_timer_handler, slirp); + slirp->ra_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL_EXT, + ra_timer_handler, slirp); timer_mod(slirp->ra_timer, - qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + NDP_Interval); + qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_EXT) + NDP_Interval); } void icmp6_cleanup(Slirp *slirp)