From 7b829a7b3b79ef0c1e2e06537b9850bdcf27827e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 28 Oct 2020 15:38:29 +0900 Subject: [PATCH] network: do not serialize/deserialize addresses The link state file is always removed when networkd is stopping. So, the deserialization logic does not work. Moreover, the ADDRESSES= entry is not used by sd-network, so serialization is also not necessary. --- src/network/networkd-address.c | 54 --------------------- src/network/networkd-address.h | 2 - src/network/networkd-link.c | 12 ----- test/test-network/systemd-networkd-tests.py | 1 - 4 files changed, 69 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 1bf6514a29..bf3c7b39a0 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -1248,60 +1248,6 @@ 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; -} - -int link_deserialize_addresses(Link *link, const char *addresses) { - int r; - - assert(link); - - for (const char *p = addresses;; ) { - _cleanup_(address_freep) Address *tmp = NULL; - _cleanup_free_ char *address_str = NULL; - - r = extract_first_word(&p, &address_str, NULL, 0); - if (r < 0) - return log_link_debug_errno(link, r, "Failed to parse ADDRESSES=: %m"); - if (r == 0) - return 0; - - r = address_new(&tmp); - if (r < 0) - return log_oom(); - - r = in_addr_prefix_from_string_auto(address_str, &tmp->family, &tmp->in_addr, &tmp->prefixlen); - if (r < 0) { - log_link_debug_errno(link, r, "Failed to parse address, ignoring: %s", address_str); - continue; - } - - r = address_add(link, tmp, NULL); - if (r < 0) - log_link_debug_errno(link, r, "Failed to add address %s, ignoring: %m", address_str); - } - - 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 8b0fb9b0df..22dcd081e7 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -62,8 +62,6 @@ 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 link_deserialize_addresses(Link *link, const char *addresses); bool link_address_is_dynamic(const Link *link, const Address *address); void ipv4_dad_unref(Link *link); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 31f292043d..5db118e77e 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2413,7 +2413,6 @@ int link_initialized(Link *link, sd_device *device) { static int link_load(Link *link) { _cleanup_free_ char *network_file = NULL, - *addresses = NULL, *routes = NULL; int r; @@ -2421,7 +2420,6 @@ static int link_load(Link *link) { r = parse_env_file(NULL, link->state_file, "NETWORK_FILE", &network_file, - "ADDRESSES", &addresses, "ROUTES", &routes); if (r < 0 && r != -ENOENT) return log_link_error_errno(link, r, "Failed to read %s: %m", link->state_file); @@ -2451,10 +2449,6 @@ static int link_load(Link *link) { network_file_fail: - r = link_deserialize_addresses(link, addresses); - if (r < 0) - log_link_warning_errno(link, r, "Failed to load addresses from %s, ignoring: %m", link->state_file); - r = link_deserialize_routes(link, routes); if (r < 0) log_link_warning_errno(link, r, "Failed to load routes from %s, ignoring: %m", link->state_file); @@ -3139,12 +3133,6 @@ int link_save(Link *link) { /************************************************************/ - r = link_serialize_addresses(link, f); - if (r < 0) - goto fail; - - /************************************************************/ - r = link_serialize_routes(link, f); if (r < 0) goto fail; diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 46c4bb7a95..bfc135a041 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -2891,7 +2891,6 @@ class NetworkdStateFileTests(unittest.TestCase, Utilities): self.assertRegex(data, r'LLMNR=no') self.assertRegex(data, r'MDNS=yes') self.assertRegex(data, r'DNSSEC=no') - self.assertRegex(data, r'ADDRESSES=192.168.(10.10|12.12)/24 192.168.(12.12|10.10)/24') check_output(*resolvectl_cmd, 'dns', 'dummy98', '10.10.10.12#ccc.com', '10.10.10.13', '1111:2222::3333', env=env) check_output(*resolvectl_cmd, 'domain', 'dummy98', 'hogehogehoge', '~foofoofoo', env=env)