]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: return 1 on start and 0 if ipv4ll is already started
authorDan Streetman <ddstreet@canonical.com>
Sat, 2 May 2020 13:56:33 +0000 (09:56 -0400)
committerDan Streetman <ddstreet@canonical.com>
Tue, 26 May 2020 13:52:50 +0000 (09:52 -0400)
Instead of -EBUSY, return 0 from sd_ipv4ll_start() if it's already started,
and change successful start return value to 1.

This matches sd_ndisc_start() behavior; 1 indicates successful start, and
0 indicates already started.

src/libsystemd-network/sd-ipv4ll.c
src/libsystemd-network/test-ipv4ll.c
src/libsystemd-network/test-ndisc-rs.c

index aa1ece41d25cb5e7b9fdc332ee1c018aa712cb6b..4f4d9ebe87719add28630b590dcc4057f4d61349 100644 (file)
@@ -252,12 +252,14 @@ static int ipv4ll_start_internal(sd_ipv4ll *ll, bool reset_generation) {
                 return r;
         }
 
-        return 0;
+        return 1;
 }
 
 int sd_ipv4ll_start(sd_ipv4ll *ll) {
         assert_return(ll, -EINVAL);
-        assert_return(sd_ipv4ll_is_running(ll) == 0, -EBUSY);
+
+        if (sd_ipv4ll_is_running(ll))
+                return 0;
 
         return ipv4ll_start_internal(ll, true);
 }
index 2f319bf7d9d07b94d80953008fc21e9f0b51c23b..6051e65820455a759ca9e41fb5f1484028238dc9 100644 (file)
@@ -159,10 +159,10 @@ static void test_basic_request(sd_event *e) {
         assert_se(sd_ipv4ll_start(ll) == -EINVAL);
 
         assert_se(sd_ipv4ll_set_ifindex(ll, 1) == 0);
-        assert_se(sd_ipv4ll_start(ll) == 0);
+        assert_se(sd_ipv4ll_start(ll) == 1);
 
         sd_event_run(e, (uint64_t) -1);
-        assert_se(sd_ipv4ll_start(ll) == -EBUSY);
+        assert_se(sd_ipv4ll_start(ll) == 0);
 
         assert_se(sd_ipv4ll_is_running(ll));
 
index c8ee1ec31d24b7436b640dadb61aa59578082270..9fc902645c8a9aedb77208de61e874f7beb36940 100644 (file)
@@ -297,6 +297,7 @@ static void test_rs(void) {
 
         assert_se(sd_ndisc_stop(nd) >= 0);
         assert_se(sd_ndisc_start(nd) >= 0);
+        assert_se(sd_ndisc_start(nd) >= 0);
         assert_se(sd_ndisc_stop(nd) >= 0);
 
         assert_se(sd_ndisc_start(nd) >= 0);