/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "macro.h" #include "networkd-link.h" #include "networkd-network.h" #include "qdisc.h" #include "tc.h" #include "tclass.h" int link_request_traffic_control(Link *link) { TClass *tclass; QDisc *qdisc; int r; assert(link); assert(link->network); link->tc_configured = false; HASHMAP_FOREACH(qdisc, link->network->qdiscs_by_section) { r = link_request_qdisc(link, qdisc); if (r < 0) return r; } HASHMAP_FOREACH(tclass, link->network->tclasses_by_section) { r = link_request_tclass(link, tclass); if (r < 0) return r; } if (link->tc_messages == 0) { link->tc_configured = true; link_check_ready(link); } else { log_link_debug(link, "Setting traffic control"); link_set_state(link, LINK_STATE_CONFIGURING); } return 0; }