+ if (!link->network)
+ /* not currently managing this link
+ we track state changes, but don't log them
+ they will be logged if and when a network is
+ applied */
+ return 0;
+
+ if (flags_added & IFF_UP)
+ log_info_link(link, "link is up");
+ else if (flags_removed & IFF_UP)
+ log_info_link(link, "link is down");
+
+ if (flags_added & IFF_LOWER_UP)
+ log_debug_link(link, "link is lower up");
+ else if (flags_removed & IFF_LOWER_UP)
+ log_debug_link(link, "link is lower down");
+
+ if (flags_added & IFF_RUNNING)
+ log_debug_link(link, "link is running");
+ else if (flags_removed & IFF_RUNNING)
+ log_debug_link(link, "link is not running");
+
+ /* link flags are currently at most 18 bits, let's default to printing 20 */
+ if (flags_added & generic_flags)
+ log_debug_link(link, "unknown link flags gained: %#.5x (ignoring)",
+ flags_added & generic_flags);
+
+ if (flags_removed & generic_flags)
+ log_debug_link(link, "unknown link flags lost: %#.5x (ignoring)",
+ flags_removed & generic_flags);
+
+ if (carrier_gained) {
+ log_info_link(link, "gained carrier");
+
+ if (link->network->dhcp || link->network->ipv4ll) {
+ r = link_acquire_conf(link);
+ if (r < 0) {
+ log_warning_link(link, "Could not acquire configuration: %s", strerror(-r));
+ link_enter_failed(link);
+ return r;