From: Daniel Machon <daniel.machon@microchip.com>
To: <netdev@vger.kernel.org>
Cc: <dsahern@kernel.org>, <stephen@networkplumber.org>,
<petrm@nvidia.com>, <UNGLinuxDriver@microchip.com>,
<daniel.machon@microchip.com>
Subject: [PATCH iproute2-next v3 05/12] dcb: app: modify dcb_app_print_filtered() for dcb-rewr reuse
Date: Tue, 6 Jun 2023 09:19:40 +0200 [thread overview]
Message-ID: <20230510-dcb-rewr-v3-5-60a766f72e61@microchip.com> (raw)
In-Reply-To: <20230510-dcb-rewr-v3-0-60a766f72e61@microchip.com>
Where dcb-app requires protocol to be the printed key, dcb-rewr requires
it to be the priority. Adapt existing dcb-app print functions for this.
dcb_app_print_filtered() has been modified, to take two callbacks; one
for printing the entire string (pid and prio), and one for the pid type
(dec, hex, dscp, pcp). This saves us for making one dedicated function
for each pid type for both app and rewr.
Also, printing the colon is now expected to be handled by the
print_pid_prio() callback.
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
---
dcb/dcb_app.c | 37 ++++++++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 11 deletions(-)
diff --git a/dcb/dcb_app.c b/dcb/dcb_app.c
index a8f3424db9f7..aa248cc40bdf 100644
--- a/dcb/dcb_app.c
+++ b/dcb/dcb_app.c
@@ -434,7 +434,9 @@ static int dcb_app_print_pid_pcp(__u16 protocol)
static void dcb_app_print_filtered(const struct dcb_app_table *tab,
bool (*filter)(const struct dcb_app *),
- int (*print_key)(__u16 protocol),
+ void (*print_pid_prio)(int (*print_pid)(__u16),
+ const struct dcb_app *),
+ int (*print_pid)(__u16 protocol),
const char *json_name,
const char *fp_name)
{
@@ -453,8 +455,8 @@ static void dcb_app_print_filtered(const struct dcb_app_table *tab,
}
open_json_array(PRINT_JSON, NULL);
- print_key(app->protocol);
- print_uint(PRINT_ANY, NULL, ":%u ", app->priority);
+ print_pid_prio(print_pid, app);
+ print_string(PRINT_ANY, NULL, "%s", " ");
close_json_array(PRINT_JSON, NULL);
}
@@ -464,9 +466,17 @@ static void dcb_app_print_filtered(const struct dcb_app_table *tab,
}
}
+static void dcb_app_print_pid_prio(int (*print_pid)(__u16 protocol),
+ const struct dcb_app *app)
+{
+ print_pid(app->protocol);
+ print_uint(PRINT_ANY, NULL, ":%u", app->priority);
+}
+
static void dcb_app_print_ethtype_prio(const struct dcb_app_table *tab)
{
- dcb_app_print_filtered(tab, dcb_app_is_ethtype, dcb_app_print_pid_hex,
+ dcb_app_print_filtered(tab, dcb_app_is_ethtype,
+ dcb_app_print_pid_prio, dcb_app_print_pid_hex,
"ethtype_prio", "ethtype-prio");
}
@@ -474,8 +484,9 @@ static void dcb_app_print_pcp_prio(const struct dcb *dcb,
const struct dcb_app_table *tab)
{
dcb_app_print_filtered(tab, dcb_app_is_pcp,
- dcb->numeric ? dcb_app_print_pid_dec
- : dcb_app_print_pid_pcp,
+ dcb_app_print_pid_prio,
+ dcb->numeric ? dcb_app_print_pid_dec :
+ dcb_app_print_pid_pcp,
"pcp_prio", "pcp-prio");
}
@@ -483,26 +494,30 @@ static void dcb_app_print_dscp_prio(const struct dcb *dcb,
const struct dcb_app_table *tab)
{
dcb_app_print_filtered(tab, dcb_app_is_dscp,
- dcb->numeric ? dcb_app_print_pid_dec
- : dcb_app_print_pid_dscp,
+ dcb_app_print_pid_prio,
+ dcb->numeric ? dcb_app_print_pid_dec :
+ dcb_app_print_pid_dscp,
"dscp_prio", "dscp-prio");
}
static void dcb_app_print_stream_port_prio(const struct dcb_app_table *tab)
{
- dcb_app_print_filtered(tab, dcb_app_is_stream_port, dcb_app_print_pid_dec,
+ dcb_app_print_filtered(tab, dcb_app_is_stream_port,
+ dcb_app_print_pid_prio, dcb_app_print_pid_dec,
"stream_port_prio", "stream-port-prio");
}
static void dcb_app_print_dgram_port_prio(const struct dcb_app_table *tab)
{
- dcb_app_print_filtered(tab, dcb_app_is_dgram_port, dcb_app_print_pid_dec,
+ dcb_app_print_filtered(tab, dcb_app_is_dgram_port,
+ dcb_app_print_pid_prio, dcb_app_print_pid_dec,
"dgram_port_prio", "dgram-port-prio");
}
static void dcb_app_print_port_prio(const struct dcb_app_table *tab)
{
- dcb_app_print_filtered(tab, dcb_app_is_port, dcb_app_print_pid_dec,
+ dcb_app_print_filtered(tab, dcb_app_is_port,
+ dcb_app_print_pid_prio, dcb_app_print_pid_dec,
"port_prio", "port-prio");
}
--
2.34.1
next prev parent reply other threads:[~2023-06-06 7:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-06 7:19 [PATCH iproute2-next v3 00/12] Introduce new dcb-rewr subcommand Daniel Machon
2023-06-06 7:19 ` [PATCH iproute2-next v3 01/12] dcb: app: add new dcbnl attribute field Daniel Machon
2023-06-06 15:00 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 02/12] dcb: app: replace occurrences of %d with %u for printing unsigned int Daniel Machon
2023-06-06 9:29 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 03/12] dcb: app: move colon printing out of callbacks Daniel Machon
2023-06-06 9:32 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 04/12] dcb: app: rename dcb_app_print_key_*() functions Daniel Machon
2023-06-06 9:34 ` Petr Machata
2023-06-06 7:19 ` Daniel Machon [this message]
2023-06-06 14:08 ` [PATCH iproute2-next v3 05/12] dcb: app: modify dcb_app_print_filtered() for dcb-rewr reuse Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 06/12] dcb: app: modify dcb_app_table_remove_replaced() " Daniel Machon
2023-06-06 13:10 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 07/12] dcb: app: expose functions required by dcb-rewr Daniel Machon
2023-06-06 13:11 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 08/12] dcb: rewr: add new dcb-rewr subcommand Daniel Machon
2023-06-06 13:17 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 09/12] dcb: rewr: add symbol for max DSCP value Daniel Machon
2023-06-06 13:14 ` Petr Machata
2023-06-06 7:19 ` [PATCH iproute2-next v3 10/12] man: dcb-rewr: add new manpage for dcb-rewr Daniel Machon
2023-06-06 7:19 ` [PATCH iproute2-next v3 11/12] man: dcb: add additional references under 'SEE ALSO' Daniel Machon
2023-06-06 7:19 ` [PATCH iproute2-next v3 12/12] man: dcb-app: clean up a few mistakes Daniel Machon
2023-06-09 21:50 ` [PATCH iproute2-next v3 00/12] Introduce new dcb-rewr subcommand patchwork-bot+netdevbpf
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=20230510-dcb-rewr-v3-5-60a766f72e61@microchip.com \
--to=daniel.machon@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=dsahern@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=petrm@nvidia.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).