summaryrefslogtreecommitdiff
path: root/src/network/tc/qdisc.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2020-02-10 17:45:24 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2020-03-02 15:46:28 +0900
commit2a0963311795677a43fdb2b9ae9c3dfbfee83ac6 (patch)
tree29eea74c4398c12527672dcb232f489ea2487010 /src/network/tc/qdisc.c
parented87ce1d5d93e10fb712e3839606248a7d20a1ce (diff)
downloadsystemd-2a0963311795677a43fdb2b9ae9c3dfbfee83ac6.tar.gz
network: tc: make Parent= take class id
Diffstat (limited to 'src/network/tc/qdisc.c')
-rw-r--r--src/network/tc/qdisc.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/network/tc/qdisc.c b/src/network/tc/qdisc.c
index 0619e894cc..988167f8b4 100644
--- a/src/network/tc/qdisc.c
+++ b/src/network/tc/qdisc.c
@@ -12,6 +12,8 @@
#include "qdisc.h"
#include "set.h"
#include "string-util.h"
+#include "strv.h"
+#include "tc-util.h"
const QDiscVTable * const qdisc_vtable[_QDISC_KIND_MAX] = {
[QDISC_KIND_CODEL] = &codel_vtable,
@@ -279,19 +281,21 @@ int config_parse_qdisc_parent(
qdisc->parent = TC_H_INGRESS;
qdisc->handle = TC_H_MAKE(TC_H_INGRESS, 0);
} else {
- log_syntax(unit, LOG_ERR, filename, line, r,
- "Failed to parse 'Parent=', ignoring assignment: %s",
- rvalue);
- return 0;
+ r = parse_handle(rvalue, &qdisc->parent);
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, r,
+ "Failed to parse 'Parent=', ignoring assignment: %s",
+ rvalue);
+ return 0;
+ }
}
- if (streq(rvalue, "root"))
- qdisc->tca_kind = mfree(qdisc->tca_kind);
- else {
+ if (STR_IN_SET(rvalue, "clsact", "ingress")) {
r = free_and_strdup(&qdisc->tca_kind, rvalue);
if (r < 0)
return log_oom();
- }
+ } else
+ qdisc->tca_kind = mfree(qdisc->tca_kind);
qdisc = NULL;