]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network/teql: wait for corresponding teql interface to be available
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 6 Aug 2022 03:32:23 +0000 (12:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 9 Aug 2022 10:37:49 +0000 (19:37 +0900)
src/network/tc/teql.c

index 1422860f55dcc5825de92c17b7ad0c96bf796aa0..9fd9e090069e752d3c64232f6f749fdd679a179a 100644 (file)
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include "macro.h"
+#include "networkd-link.h"
 #include "parse-util.h"
 #include "string-util.h"
 #include "teql.h"
@@ -17,9 +18,24 @@ static int trivial_link_equalizer_verify(QDisc *qdisc) {
         return free_and_replace(qdisc->tca_kind, tca_kind);
 }
 
+static int trivial_link_equalizer_is_ready(QDisc *qdisc, Link *link) {
+        Link *teql;
+
+        assert(qdisc);
+        assert(qdisc->tca_kind);
+        assert(link);
+        assert(link->manager);
+
+        if (link_get_by_name(link->manager, qdisc->tca_kind, &teql) < 0)
+                return false;
+
+        return link_is_ready_to_configure(teql, /* allow_unmanaged = */ true);
+}
+
 const QDiscVTable teql_vtable = {
         .object_size = sizeof(TrivialLinkEqualizer),
         .verify = trivial_link_equalizer_verify,
+        .is_ready = trivial_link_equalizer_is_ready,
 };
 
 int config_parse_trivial_link_equalizer_id(