]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-ipv4acd: set defend window in timeout event and state is IPV4ACD_STATE_STARTED
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 20 Jun 2021 17:45:45 +0000 (02:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 30 Jun 2021 15:49:02 +0000 (00:49 +0900)
src/libsystemd-network/sd-ipv4acd.c

index d763ba8e62e52def12a8d950f8f6445147a86ef0..699e2baf6d168fc765493ba8e2723cf852fd9a4a 100644 (file)
@@ -229,20 +229,20 @@ static int ipv4acd_on_timeout(sd_event_source *s, uint64_t usec, void *userdata)
         switch (acd->state) {
 
         case IPV4ACD_STATE_STARTED:
+                acd->defend_window = 0;
+
                 ipv4acd_set_state(acd, IPV4ACD_STATE_WAITING_PROBE, true);
 
                 if (acd->n_conflict >= MAX_CONFLICTS) {
                         char ts[FORMAT_TIMESPAN_MAX];
-                        log_ipv4acd(acd, "Max conflicts reached, delaying by %s", format_timespan(ts, sizeof(ts), RATE_LIMIT_INTERVAL_USEC, 0));
 
+                        log_ipv4acd(acd, "Max conflicts reached, delaying by %s",
+                                    format_timespan(ts, sizeof(ts), RATE_LIMIT_INTERVAL_USEC, 0));
                         r = ipv4acd_set_next_wakeup(acd, RATE_LIMIT_INTERVAL_USEC, PROBE_WAIT_USEC);
-                        if (r < 0)
-                                goto fail;
-                } else {
+                } else
                         r = ipv4acd_set_next_wakeup(acd, 0, PROBE_WAIT_USEC);
-                        if (r < 0)
-                                goto fail;
-                }
+                if (r < 0)
+                        goto fail;
 
                 break;
 
@@ -530,7 +530,6 @@ int sd_ipv4acd_start(sd_ipv4acd *acd, bool reset_conflicts) {
                 return r;
 
         CLOSE_AND_REPLACE(acd->fd, r);
-        acd->defend_window = 0;
 
         if (reset_conflicts)
                 acd->n_conflict = 0;