-static int ipv4ll_address_update(Link *link, bool deprecate) {
- int r;
- struct in_addr addr;
-
- assert(link);
-
- r = sd_ipv4ll_get_address(link->ipv4ll, &addr);
- if (r >= 0) {
- _cleanup_address_free_ Address *address = NULL;
-
- log_debug_link(link, "IPv4 link-local %s %u.%u.%u.%u",
- deprecate ? "deprecate" : "approve",
- ADDRESS_FMT_VAL(addr));
-
- r = address_new_dynamic(&address);
- if (r < 0) {
- log_error_link(link, "Could not allocate address: %s", strerror(-r));
- return r;
- }
-
- address->family = AF_INET;
- address->in_addr.in = addr;
- address->prefixlen = 16;
- address->scope = RT_SCOPE_LINK;
- address->cinfo.ifa_prefered = deprecate ? 0 : CACHE_INFO_INFINITY_LIFE_TIME;
- address->broadcast.s_addr = address->in_addr.in.s_addr | htonl(0xfffffffflu >> address->prefixlen);
-
- address_update(address, link, &address_update_handler);
- }
-
- return 0;
-
-}
-