diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index c6101b1cfc8..4100e92ae0a 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -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; diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index d3e0640c4ae..0eb8f298dc9 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -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); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index f2314e65f2c..cfc6d188e9b 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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; /************************************************************/