From: Petr Machata <petrm@nvidia.com>
To: Gioele Barabucci <gioele@svario.it>
Cc: <netdev@vger.kernel.org>, Stephen Hemminger <stephen@networkplumber.org>
Subject: Re: [iproute2 04/22] tc/tc_util: Read class names from provided path, /etc/, /usr
Date: Thu, 20 Jul 2023 12:10:50 +0200 [thread overview]
Message-ID: <878rba98fl.fsf@nvidia.com> (raw)
In-Reply-To: <20230719185106.17614-5-gioele@svario.it>
Gioele Barabucci <gioele@svario.it> writes:
> Signed-off-by: Gioele Barabucci <gioele@svario.it>
> ---
> tc/tc_util.c | 18 +++++++++++++-----
> 1 file changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/tc/tc_util.c b/tc/tc_util.c
> index ed9efa70..e6235291 100644
> --- a/tc/tc_util.c
> +++ b/tc/tc_util.c
> @@ -28,7 +28,8 @@
>
> static struct db_names *cls_names;
>
> -#define NAMES_DB "/etc/iproute2/tc_cls"
> +#define NAMES_DB_USR "/usr/lib/iproute2/tc_cls"
> +#define NAMES_DB_ETC "/etc/iproute2/tc_cls"
Is there a reason that these don't use CONF_USR_DIR and CONF_ETC_DIR?
I thought maybe the caller uses those and this is just a hardcoded
fallback, but that's not the case.
>
> int cls_names_init(char *path)
> {
> @@ -38,11 +39,18 @@ int cls_names_init(char *path)
> if (!cls_names)
> return -1;
>
> - ret = db_names_load(cls_names, path ?: NAMES_DB);
> - if (ret == -ENOENT && path) {
> - fprintf(stderr, "Can't open class names file: %s\n", path);
> - return -1;
> + if (path) {
> + ret = db_names_load(cls_names, path);
> + if (ret == -ENOENT) {
> + fprintf(stderr, "Can't open class names file: %s\n", path);
> + return -1;
The caller always calls cls_uninit(), even for failures, so this
technically does not leak. Not great, but let's keep it as is,
fixing this is clearly out of scope.
> + }
> }
> +
> + ret = db_names_load(cls_names, NAMES_DB_ETC);
> + if (ret == -ENOENT)
> + ret = db_names_load(cls_names, NAMES_DB_USR);
> +
> if (ret) {
> db_names_free(cls_names);
> cls_names = NULL;
Otherwise looking good. In fact IMHO clearer than the old code.
next prev parent reply other threads:[~2023-07-20 10:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-19 18:50 [iproute2 00/22] Support for stateless configuration (read from /etc and /usr) Gioele Barabucci
2023-07-19 18:50 ` [iproute2 01/22] Makefile: Rename CONFDIR to CONF_ETC_DIR Gioele Barabucci
2023-07-19 18:50 ` [iproute2 02/22] Makefile: Add CONF_USR_DIR for system-installed configuration files Gioele Barabucci
2023-07-19 18:50 ` [iproute2 03/22] include/utils.h: Use /usr/lib/iproute2 as default CONF_USR_DIR Gioele Barabucci
2023-07-19 18:50 ` [iproute2 04/22] tc/tc_util: Read class names from provided path, /etc/, /usr Gioele Barabucci
2023-07-20 10:10 ` Petr Machata [this message]
2023-07-20 10:44 ` Gioele Barabucci
2023-07-20 11:33 ` Petr Machata
2023-07-19 18:50 ` [iproute2 05/22] tc/m_ematch: Read ematch from /etc and /usr Gioele Barabucci
2023-07-20 11:49 ` Petr Machata
2023-07-19 18:50 ` [iproute2 06/22] lib/bpf_legacy: bpf_hash_init: Relay returned value Gioele Barabucci
2023-07-19 18:50 ` [iproute2 07/22] lib/bpf_legacy: Read bpf_pinning from /etc and /usr Gioele Barabucci
2023-07-19 18:50 ` [iproute2 08/22] lib/rt_names: rtnl_hash_initialize: Relay returned value Gioele Barabucci
2023-07-19 18:50 ` [iproute2 09/22] lib/rt_names: rtnl_tab_initialize: " Gioele Barabucci
2023-07-19 18:50 ` [iproute2 10/22] lib/rt_names: Read rt_protos from /etc and /usr Gioele Barabucci
2023-07-19 18:50 ` [iproute2 11/22] lib/rt_names: Read rt_scopes " Gioele Barabucci
2023-07-19 18:50 ` [iproute2 12/22] lib/rt_names: Read rt_names " Gioele Barabucci
2023-07-19 18:50 ` [iproute2 13/22] lib/rt_names: Read rt_tables " Gioele Barabucci
2023-07-19 18:50 ` [iproute2 14/22] lib/rt_names: Read rt_dsfield " Gioele Barabucci
2023-07-19 18:50 ` [iproute2 15/22] lib/rt_names: Read group " Gioele Barabucci
2023-07-19 18:51 ` [iproute2 16/22] lib/rt_names: Read nl_protos " Gioele Barabucci
2023-07-19 18:51 ` [iproute2 17/22] lib/rt_names: Read rt_protos.d/* " Gioele Barabucci
2023-07-19 18:51 ` [iproute2 18/22] lib/rt_names: Read rt_protos.d/* using rtnl_tab_initialize_dir Gioele Barabucci
2023-07-19 18:51 ` [iproute2 19/22] lib/rt_names: Read protodown_reasons.d/* " Gioele Barabucci
2023-07-19 18:51 ` [iproute2 20/22] lib/rt_names: Read rt_tables.d/* using rtnl_hash_initialize_dir Gioele Barabucci
2023-07-19 18:51 ` [iproute2 21/22] man: Document lookup of configuration files in /etc and /usr Gioele Barabucci
2023-07-19 18:51 ` [iproute2 22/22] Makefile: Install default configuration files in /usr Gioele Barabucci
2023-07-19 21:36 ` [iproute2 00/22] Support for stateless configuration (read from /etc and /usr) Stephen Hemminger
2023-07-20 6:05 ` Gioele Barabucci
2023-07-20 11:56 ` Petr Machata
2023-07-25 1:40 ` Stephen Hemminger
2023-07-25 6:01 ` Gioele Barabucci
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878rba98fl.fsf@nvidia.com \
--to=petrm@nvidia.com \
--cc=gioele@svario.it \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.