From: Yu Watanabe Date: Fri, 15 Feb 2019 03:29:59 +0000 (+0900) Subject: network: introduce new operational state 'enslaved' X-Git-Tag: v242-rc1~302^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=14153d1b6e8725f995d9ad41e48daf67b140bf6a;p=thirdparty%2Fsystemd.git network: introduce new operational state 'enslaved' If an interface has IFF_SLAVE flag, then its operational state becomes not in 'degraded' or 'carrier', but the new 'enslaved' state. --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index adc33b3865f..22905e70790 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -301,6 +301,7 @@ static int link_enable_ipv6(Link *link) { void link_update_operstate(Link *link) { LinkOperationalState operstate; + assert(link); if (link->kernel_operstate == IF_OPER_DORMANT) @@ -342,6 +343,10 @@ void link_update_operstate(Link *link) { else operstate = LINK_OPERSTATE_OFF; + if (IN_SET(operstate, LINK_OPERSTATE_DEGRADED, LINK_OPERSTATE_CARRIER) && + link->flags & IFF_SLAVE) + operstate = LINK_OPERSTATE_ENSLAVED; + if (link->operstate != operstate) { link->operstate = operstate; link_send_changed(link, "OperationalState", NULL); @@ -4215,6 +4220,7 @@ static const char* const link_operstate_table[_LINK_OPERSTATE_MAX] = { [LINK_OPERSTATE_DORMANT] = "dormant", [LINK_OPERSTATE_CARRIER] = "carrier", [LINK_OPERSTATE_DEGRADED] = "degraded", + [LINK_OPERSTATE_ENSLAVED] = "enslaved", [LINK_OPERSTATE_ROUTABLE] = "routable", }; diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index dcb1ea68dd9..2bee3eb5001 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -34,6 +34,7 @@ typedef enum LinkOperationalState { LINK_OPERSTATE_DORMANT, LINK_OPERSTATE_CARRIER, LINK_OPERSTATE_DEGRADED, + LINK_OPERSTATE_ENSLAVED, LINK_OPERSTATE_ROUTABLE, _LINK_OPERSTATE_MAX, _LINK_OPERSTATE_INVALID = -1