]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ipv4acd: introduce new "started" state
authorLennart Poettering <lennart@poettering.net>
Mon, 23 May 2016 16:06:33 +0000 (18:06 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 26 May 2016 13:34:42 +0000 (15:34 +0200)
This state is active immediately after the state engine was started, but before
the first timer hits.

This way multiple _start() invocations on the same object are always detected
correctly.

src/libsystemd-network/sd-ipv4acd.c

index 163d0f9199ce90774efc0f5c51d9c0568727d755..59b87f42b7b26652e46f804dc7eff729df6a1ea1 100644 (file)
@@ -57,6 +57,7 @@
 
 typedef enum IPv4ACDState {
         IPV4ACD_STATE_INIT,
+        IPV4ACD_STATE_STARTED,
         IPV4ACD_STATE_WAITING_PROBE,
         IPV4ACD_STATE_PROBING,
         IPV4ACD_STATE_WAITING_ANNOUNCE,
@@ -240,7 +241,7 @@ static int ipv4acd_on_timeout(sd_event_source *s, uint64_t usec, void *userdata)
 
         switch (ll->state) {
 
-        case IPV4ACD_STATE_INIT:
+        case IPV4ACD_STATE_STARTED:
                 ipv4acd_set_state(ll, IPV4ACD_STATE_WAITING_PROBE, true);
 
                 if (ll->n_conflict >= MAX_CONFLICTS) {
@@ -521,6 +522,7 @@ int sd_ipv4acd_start(sd_ipv4acd *ll) {
         if (r < 0)
                 goto fail;
 
+        ipv4acd_set_state(ll, IPV4ACD_STATE_STARTED, true);
         return 0;
 
 fail: