From bf9492747df006a794f281d6c26ee38989b44d23 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Fri, 15 Nov 2024 15:22:06 +0100 Subject: ndp: Don't send unsolicited router advertisement if we can't, yet ndp_timer() is called right away on the first epoll_wait() cycle, when the communication channel to the guest isn't ready yet: 1.0038: NDP: sending unsolicited RA, next in 264s 1.0038: tap: failed to send 1 frames of 1 check that it's up before sending it. This effectively delays the first gratuitous router advertisement, which is probably a good idea given that we expect the guest to send a router solicitation right away. Fixes: 6e1e44293ef9 ("ndp: Send unsolicited Router Advertisements") Signed-off-by: Stefano Brivio Reviewed-by: David Gibson --- ndp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ndp.c b/ndp.c index 7ee44b2..1752d64 100644 --- a/ndp.c +++ b/ndp.c @@ -391,7 +391,7 @@ void ndp_timer(const struct ctx *c, const struct timespec *now) time_t max_rtr_adv_interval = DEFAULT_MAX_RTR_ADV_INTERVAL; time_t min_rtr_adv_interval, interval; - if (c->no_ra || now->tv_sec < next_ra) + if (c->fd_tap < 0 || c->no_ra || now->tv_sec < next_ra) return; /* We must advertise before the route's lifetime expires */ -- cgit v1.2.3