From: Tom Gundersen Date: Mon, 28 Sep 2015 11:30:10 +0000 (+0200) Subject: networkd: address - introduce address_is_ready() X-Git-Tag: v228~206^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ce6c77ebf12f80c807ad7589a1fb565fabc6a543;p=thirdparty%2Fsystemd.git networkd: address - introduce address_is_ready() Checks that a given address is not tentative nor deprecated. --- diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 48715972b6e..316ae2e4cb2 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -738,3 +738,9 @@ int config_parse_label(const char *unit, return 0; } + +bool address_is_ready(const Address *a) { + assert(a); + + return !(a->flags & (IFA_F_TENTATIVE | IFA_F_DEPRECATED)); +} diff --git a/src/network/networkd-address.h b/src/network/networkd-address.h index 22ac5e95c1b..425344fe48e 100644 --- a/src/network/networkd-address.h +++ b/src/network/networkd-address.h @@ -67,6 +67,7 @@ int address_configure(Address *address, Link *link, sd_netlink_message_handler_t int address_update(Address *address, Link *link, sd_netlink_message_handler_t callback); int address_remove(Address *address, Link *link, sd_netlink_message_handler_t callback); bool address_equal(Address *a1, Address *a2); +bool address_is_ready(const Address *a); DEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free); #define _cleanup_address_free_ _cleanup_(address_freep) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 78853c8cca9..755d9c919d0 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2275,7 +2275,7 @@ static void link_update_operstate(Link *link) { /* if we have carrier, check what addresses we have */ SET_FOREACH(address, link->addresses, i) { - if (address->flags & (IFA_F_TENTATIVE | IFA_F_DEPRECATED)) + if (!address_is_ready(address)) continue; if (address->scope < scope)