]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: introduce link_serialize_ipv4ll()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 2 Oct 2020 09:24:07 +0000 (18:24 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 6 Oct 2020 17:50:50 +0000 (02:50 +0900)
src/network/networkd-ipv4ll.c
src/network/networkd-ipv4ll.h
src/network/networkd-link.c

index ca59c86a7b70baf3c5b7a0c8c74bb62937244ef0..d7e4f7b233b1c8d6644214dc0345c1158394511f 100644 (file)
@@ -195,6 +195,28 @@ int ipv4ll_configure(Link *link) {
         return 0;
 }
 
+int link_serialize_ipv4ll(Link *link, FILE *f) {
+        struct in_addr address;
+        int r;
+
+        assert(link);
+
+        if (!link->ipv4ll)
+                return 0;
+
+        r = sd_ipv4ll_get_address(link->ipv4ll, &address);
+        if (r == -ENOENT)
+                return 0;
+        if (r < 0)
+                return r;
+
+        fputs("IPV4LL_ADDRESS=", f);
+        serialize_in_addrs(f, &address, 1, false, NULL);
+        fputc('\n', f);
+
+        return 0;
+}
+
 int link_deserialize_ipv4ll(Link *link, const char *ipv4ll_address) {
         union in_addr_union address;
         int r;
index 0d2cec84c67d6f18ddbd4bf89ce541de5249e064..82f67bc1e29b4d974277a6fd358734e578476684 100644 (file)
@@ -8,6 +8,7 @@
 typedef struct Link Link;
 
 int ipv4ll_configure(Link *link);
+int link_serialize_ipv4ll(Link *link, FILE *f);
 int link_deserialize_ipv4ll(Link *link, const char *ipv4ll_address);
 
 CONFIG_PARSER_PROTOTYPE(config_parse_ipv4ll);
index 98bd4e80d59a9731982c04c5399814d2fa716b44..db0165469952fef3ac61734ac7207072a2ace861 100644 (file)
@@ -3511,16 +3511,9 @@ int link_save(Link *link) {
         } else
                 (void) unlink(link->lease_file);
 
-        if (link->ipv4ll) {
-                struct in_addr address;
-
-                r = sd_ipv4ll_get_address(link->ipv4ll, &address);
-                if (r >= 0) {
-                        fputs("IPV4LL_ADDRESS=", f);
-                        serialize_in_addrs(f, &address, 1, false, NULL);
-                        fputc('\n', f);
-                }
-        }
+        r = link_serialize_ipv4ll(link, f);
+        if (r < 0)
+                goto fail;
 
         if (link->dhcp6_client) {
                 _cleanup_free_ char *duid = NULL;