From: Yu Watanabe Date: Thu, 29 Apr 2021 23:08:23 +0000 (+0900) Subject: network: introduce link_activate() X-Git-Tag: v249-rc1~314^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04952b25e81a137c9357fcf499527c6b713d50b9;p=thirdparty%2Fsystemd.git network: introduce link_activate() --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 7da08c5430f..8b8c3852203 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1780,7 +1780,7 @@ static void link_drop(Link *link) { link_detach_from_manager(link); } -static int link_joined(Link *link) { +int link_activate(Link *link) { int r; assert(link); @@ -1798,10 +1798,8 @@ static int link_joined(Link *link) { _fallthrough_; case ACTIVATION_POLICY_ALWAYS_UP: r = link_up(link); - if (r < 0) { - link_enter_failed(link); + if (r < 0) return r; - } break; case ACTIVATION_POLICY_DOWN: if (link->activated) @@ -1809,16 +1807,27 @@ static int link_joined(Link *link) { _fallthrough_; case ACTIVATION_POLICY_ALWAYS_DOWN: r = link_down(link, NULL); - if (r < 0) { - link_enter_failed(link); + if (r < 0) return r; - } break; default: break; } link->activated = true; + return 0; +} + +static int link_joined(Link *link) { + int r; + + assert(link); + assert(link->network); + + r = link_activate(link); + if (r < 0) + return r; + if (link->network->bridge) { r = link_set_bridge(link); if (r < 0) diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index 541231b4b94..b560dde0dca 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -210,6 +210,7 @@ int link_get(Manager *m, int ifindex, Link **ret); int link_up(Link *link); int link_down(Link *link, link_netlink_message_handler_t callback); +int link_activate(Link *link); void link_enter_failed(Link *link);