diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-02-10 17:45:24 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2020-03-02 15:46:28 +0900 |
commit | 2a0963311795677a43fdb2b9ae9c3dfbfee83ac6 (patch) | |
tree | 29eea74c4398c12527672dcb232f489ea2487010 /src/network/tc/qdisc.c | |
parent | ed87ce1d5d93e10fb712e3839606248a7d20a1ce (diff) | |
download | systemd-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.c | 20 |
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; |