From b3208e0fad3e8c4c0f7d02098991e9694ff617e1 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 26 Jan 2022 12:18:47 +0900 Subject: [PATCH] network: tc/teql: set tca_kind in verify() Then, qdisc_configure() can be simplified. --- src/network/tc/qdisc.c | 22 +++++----------------- src/network/tc/qdisc.h | 1 - src/network/tc/teql.c | 23 +++++++---------------- 3 files changed, 12 insertions(+), 34 deletions(-) diff --git a/src/network/tc/qdisc.c b/src/network/tc/qdisc.c index 11c092d4bf..d1b689793c 100644 --- a/src/network/tc/qdisc.c +++ b/src/network/tc/qdisc.c @@ -269,24 +269,12 @@ int qdisc_configure(Link *link, QDisc *qdisc) { if (r < 0) return log_link_debug_errno(link, r, "Could not create RTM_NEWQDISC message: %m"); - if (QDISC_VTABLE(qdisc)) { - if (QDISC_VTABLE(qdisc)->fill_tca_kind) { - r = QDISC_VTABLE(qdisc)->fill_tca_kind(link, qdisc, req); - if (r < 0) - return r; - } else { - r = sd_netlink_message_append_string(req, TCA_KIND, QDISC_VTABLE(qdisc)->tca_kind); - if (r < 0) - return r; - } + r = sd_netlink_message_append_string(req, TCA_KIND, qdisc_get_tca_kind(qdisc)); + if (r < 0) + return r; - if (QDISC_VTABLE(qdisc)->fill_message) { - r = QDISC_VTABLE(qdisc)->fill_message(link, qdisc, req); - if (r < 0) - return r; - } - } else { - r = sd_netlink_message_append_string(req, TCA_KIND, qdisc->tca_kind); + if (QDISC_VTABLE(qdisc) && QDISC_VTABLE(qdisc)->fill_message) { + r = QDISC_VTABLE(qdisc)->fill_message(link, qdisc, req); if (r < 0) return r; } diff --git a/src/network/tc/qdisc.h b/src/network/tc/qdisc.h index 29ceb50183..2fc1dc2b03 100644 --- a/src/network/tc/qdisc.h +++ b/src/network/tc/qdisc.h @@ -55,7 +55,6 @@ typedef struct QDiscVTable { const char *tca_kind; /* called in qdisc_new() */ int (*init)(QDisc *qdisc); - int (*fill_tca_kind)(Link *link, QDisc *qdisc, sd_netlink_message *m); int (*fill_message)(Link *link, QDisc *qdisc, sd_netlink_message *m); int (*verify)(QDisc *qdisc); } QDiscVTable; diff --git a/src/network/tc/teql.c b/src/network/tc/teql.c index 633a7827b4..1422860f55 100644 --- a/src/network/tc/teql.c +++ b/src/network/tc/teql.c @@ -1,34 +1,25 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "macro.h" -#include "netlink-util.h" #include "parse-util.h" -#include "stdio-util.h" #include "string-util.h" #include "teql.h" -static int trivial_link_equalizer_fill_tca_kind(Link *link, QDisc *qdisc, sd_netlink_message *req) { - char kind[STRLEN("teql") + DECIMAL_STR_MAX(unsigned)]; +static int trivial_link_equalizer_verify(QDisc *qdisc) { + _cleanup_free_ char *tca_kind = NULL; TrivialLinkEqualizer *teql; - int r; - - assert(link); - assert(qdisc); - assert(req); - teql = TEQL(qdisc); + teql = TEQL(ASSERT_PTR(qdisc)); - xsprintf(kind, "teql%u", teql->id); - r = sd_netlink_message_append_string(req, TCA_KIND, kind); - if (r < 0) - return log_link_error_errno(link, r, "Could not append TCA_KIND attribute: %m"); + if (asprintf(&tca_kind, "teql%u", teql->id) < 0) + return log_oom(); - return 0; + return free_and_replace(qdisc->tca_kind, tca_kind); } const QDiscVTable teql_vtable = { .object_size = sizeof(TrivialLinkEqualizer), - .fill_tca_kind = trivial_link_equalizer_fill_tca_kind, + .verify = trivial_link_equalizer_verify, }; int config_parse_trivial_link_equalizer_id( -- 2.25.1