]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-network: add sd_network_link_get_required_operstate_for_online()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 6 Mar 2019 05:45:17 +0000 (14:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 13 Mar 2019 05:29:03 +0000 (14:29 +0900)
It reads $REQUIRED_OPER_STATE_FOR_ONLINE in serialized link data.

src/libsystemd/sd-network/sd-network.c
src/systemd/sd-network.h

index 812826fe3dbd9ac752feff1ac57319a90ad29fc6..2d715043e11fa1a0cfff17e8af01baa988ca1a6a 100644 (file)
@@ -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);
 }
index cc6bca9f5ee60abd72c9561364072bb491d6ed3c..166c30185a1e67515bb0cf0cd916fcd83abd693a 100644 (file)
@@ -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: