blob: 8a1c5b3a3b3a12ca94acaa695ab7f089bedbe06f [file] [log] [blame]
/* 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;
}