From: Yu Watanabe Date: Wed, 6 Mar 2019 05:45:17 +0000 (+0900) Subject: sd-network: add sd_network_link_get_required_operstate_for_online() X-Git-Tag: v242-rc1~151^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=22eab27caa87088f59a8c0070958bb2a305dea6e;p=thirdparty%2Fsystemd.git sd-network: add sd_network_link_get_required_operstate_for_online() It reads $REQUIRED_OPER_STATE_FOR_ONLINE in serialized link data. --- diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c index 812826fe3db..2d715043e11 100644 --- a/src/libsystemd/sd-network/sd-network.c +++ b/src/libsystemd/sd-network/sd-network.c @@ -164,6 +164,27 @@ _public_ int sd_network_link_get_required_for_online(int ifindex) { return parse_boolean(s); } +_public_ int sd_network_link_get_required_operstate_for_online(int ifindex, char **state) { + _cleanup_free_ char *s = NULL; + int r; + + assert_return(state, -EINVAL); + + r = network_link_get_string(ifindex, "REQUIRED_OPER_STATE_FOR_ONLINE", &s); + if (r < 0) { + if (r != -ENODATA) + return r; + + /* For compatibility, assuming degraded. */ + s = strdup("degraded"); + if (!s) + return -ENOMEM; + } + + *state = TAKE_PTR(s); + return 0; +} + _public_ int sd_network_link_get_llmnr(int ifindex, char **llmnr) { return network_link_get_string(ifindex, "LLMNR", llmnr); } diff --git a/src/systemd/sd-network.h b/src/systemd/sd-network.h index cc6bca9f5ee..166c30185a1 100644 --- a/src/systemd/sd-network.h +++ b/src/systemd/sd-network.h @@ -89,6 +89,7 @@ int sd_network_link_get_setup_state(int ifindex, char **state); * -ENODATA: networkd is not aware of the link */ int sd_network_link_get_operational_state(int ifindex, char **state); +int sd_network_link_get_required_operstate_for_online(int ifindex, char **state); /* Indicates whether the network is relevant to being online. * Possible return codes: