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

index c6101b1cfc84a61c1dce0882f959f497c9d5cbed..4100e92ae0a6ae3983a898faf71b77bfa72290af 100644 (file)
@@ -1217,6 +1217,27 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message,
         return 1;
 }
 
+int link_serialize_addresses(Link *link, FILE *f) {
+        bool space = false;
+        Address *a;
+
+        assert(link);
+
+        fputs("ADDRESSES=", f);
+        SET_FOREACH(a, link->addresses) {
+                _cleanup_free_ char *address_str = NULL;
+
+                if (in_addr_to_string(a->family, &a->in_addr, &address_str) < 0)
+                        continue;
+
+                fprintf(f, "%s%s/%u", space ? " " : "", address_str, a->prefixlen);
+                space = true;
+        }
+        fputc('\n', f);
+
+        return 0;
+}
+
 static void static_address_on_acd(sd_ipv4acd *acd, int event, void *userdata) {
         _cleanup_free_ char *pretty = NULL;
         Address *address;
index d3e0640c4ae94232e5441ac831a5a499a6d91b75..0eb8f298dc9803b24cf64ffc0122b76fc8086b69 100644 (file)
@@ -77,6 +77,7 @@ DEFINE_NETWORK_SECTION_FUNCTIONS(Address, address_free);
 int link_set_addresses(Link *link);
 int link_drop_addresses(Link *link);
 int link_drop_foreign_addresses(Link *link);
+int link_serialize_addresses(Link *link, FILE *f);
 
 int manager_rtnl_process_address(sd_netlink *nl, sd_netlink_message *message, Manager *m);
 
index f2314e65f2cadc1ed576ee09f144d3619cd955e2..cfc6d188e9b02eba2b4ed1c5a091f934b1e75604 100644 (file)
@@ -3707,7 +3707,6 @@ int link_save(Link *link) {
         const char *admin_state, *oper_state, *carrier_state, *address_state;
         _cleanup_free_ char *temp_path = NULL;
         _cleanup_fclose_ FILE *f = NULL;
-        Address *a;
         int r;
 
         assert(link);
@@ -3925,19 +3924,9 @@ int link_save(Link *link) {
 
                 /************************************************************/
 
-                fputs("ADDRESSES=", f);
-                space = false;
-                SET_FOREACH(a, link->addresses) {
-                        _cleanup_free_ char *address_str = NULL;
-
-                        r = in_addr_to_string(a->family, &a->in_addr, &address_str);
-                        if (r < 0)
-                                goto fail;
-
-                        fprintf(f, "%s%s/%u", space ? " " : "", address_str, a->prefixlen);
-                        space = true;
-                }
-                fputc('\n', f);
+                r = link_serialize_addresses(link, f);
+                if (r < 0)
+                        goto fail;
 
                 /************************************************************/