mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
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.
This commit is contained in:
parent
7fcee28417
commit
14153d1b6e
@ -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",
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user