From: Patrik Flykt Date: Fri, 19 May 2017 13:22:46 +0000 (+0300) Subject: sd-ndisc.c: Move Router Solicitation sending after timer computaion X-Git-Tag: v234~159^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e82a19cb1833c64604c11f307a84cf998f4aeffe;p=platform%2Fupstream%2Fsystemd.git sd-ndisc.c: Move Router Solicitation sending after timer computaion Move ICMPv6 Router Solicitation sending after timer computation so that timers are already set up when the packet is being sent. This makes it possible to create a test that inspects Router Solicitation timer values when the Router Solicitation is sent out on the network. --- diff --git a/src/libsystemd-network/sd-ndisc.c b/src/libsystemd-network/sd-ndisc.c index 5dfe6ea..4bf558b 100644 --- a/src/libsystemd-network/sd-ndisc.c +++ b/src/libsystemd-network/sd-ndisc.c @@ -281,12 +281,6 @@ static int ndisc_timeout(sd_event_source *s, uint64_t usec, void *userdata) { assert(nd); assert(nd->event); - r = icmp6_send_router_solicitation(nd->fd, &nd->mac_addr); - if (r < 0) { - log_ndisc_errno(r, "Error sending Router Solicitation: %m"); - goto fail; - } - assert_se(sd_event_now(nd->event, clock_boottime_or_monotonic(), &time_now) >= 0); nd->timeout_event_source = sd_event_source_unref(nd->timeout_event_source); @@ -319,6 +313,12 @@ static int ndisc_timeout(sd_event_source *s, uint64_t usec, void *userdata) { goto fail; } + r = icmp6_send_router_solicitation(nd->fd, &nd->mac_addr); + if (r < 0) { + log_ndisc_errno(r, "Error sending Router Solicitation: %m"); + goto fail; + } + log_ndisc("Sent Router Solicitation, next solicitation in %s", format_timespan(time_string, FORMAT_TIMESPAN_MAX, nd->retransmit_time, USEC_PER_SEC));