Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Wen Liang <liangwen12year@gmail.com>
To: netdev@vger.kernel.org
Cc: stephen@networkplumber.org, dsahern@gmail.com, aclaudi@redhat.com
Subject: [PATCH iproute2 2/2] tc: u32: add json support in `print_raw`, `print_ipv4`, `print_ipv6`
Date: Mon, 6 Sep 2021 21:57:51 -0400 [thread overview]
Message-ID: <2b9f656b2864a1310d6239a32c57b2d84077b903.1630978600.git.liangwen12year@gmail.com> (raw)
In-Reply-To: <cover.1630978600.git.liangwen12year@gmail.com>
Signed-off-by: Wen Liang <liangwen12year@gmail.com>
---
tc/f_u32.c | 72 +++++++++++++++++++++++-------------------------------
1 file changed, 30 insertions(+), 42 deletions(-)
diff --git a/tc/f_u32.c b/tc/f_u32.c
index 136fb740..8558ab6d 100644
--- a/tc/f_u32.c
+++ b/tc/f_u32.c
@@ -828,19 +828,16 @@ static void print_ipv4(FILE *f, const struct tc_u32_key *key)
case 0:
switch (ntohl(key->mask)) {
case 0x0f000000:
- fprintf(f, "\n match IP ihl %u",
- ntohl(key->val) >> 24);
+ print_uint(PRINT_ANY, "match IP ihl", "\n match IP ihl %u", ntohl(key->val) >> 24);
return;
case 0x00ff0000:
- fprintf(f, "\n match IP dsfield %#x",
- ntohl(key->val) >> 16);
+ print_0xhex(PRINT_ANY, "match IP dsfield", "\n match IP dsfield %#x", ntohl(key->val) >> 16);
return;
}
break;
case 8:
if (ntohl(key->mask) == 0x00ff0000) {
- fprintf(f, "\n match IP protocol %d",
- ntohl(key->val) >> 16);
+ print_int(PRINT_ANY, "match IP protocol", "\n match IP protocol %d", ntohl(key->val) >> 16);
return;
}
break;
@@ -849,11 +846,12 @@ static void print_ipv4(FILE *f, const struct tc_u32_key *key)
int bits = mask2bits(key->mask);
if (bits >= 0) {
- fprintf(f, "\n %s %s/%d",
- key->off == 12 ? "match IP src" : "match IP dst",
- inet_ntop(AF_INET, &key->val,
- abuf, sizeof(abuf)),
- bits);
+ if (key->off == 12)
+ print_string(PRINT_ANY, "match IP", "\n %s ", "src");
+ else
+ print_string(PRINT_ANY, "match IP", "\n %s ", "dst");
+ print_string(PRINT_ANY, "IP Addr", "%s", inet_ntop(AF_INET, &key->val, abuf, sizeof(abuf)));
+ print_int(PRINT_ANY, "IP Addr prefix", "/%d", bits);
return;
}
}
@@ -862,18 +860,14 @@ static void print_ipv4(FILE *f, const struct tc_u32_key *key)
case 20:
switch (ntohl(key->mask)) {
case 0x0000ffff:
- fprintf(f, "\n match dport %u",
- ntohl(key->val) & 0xffff);
+ print_uint(PRINT_ANY, "match dport", "match dport %u", ntohl(key->val) & 0xffff);
return;
case 0xffff0000:
- fprintf(f, "\n match sport %u",
- ntohl(key->val) >> 16);
+ print_uint(PRINT_ANY, "match sport", "\n match sport %u", ntohl(key->val) >> 16);
return;
case 0xffffffff:
- fprintf(f, "\n match dport %u, match sport %u",
- ntohl(key->val) & 0xffff,
- ntohl(key->val) >> 16);
-
+ print_uint(PRINT_ANY, "match dport", "\n match dport %u, ", ntohl(key->val) & 0xffff);
+ print_uint(PRINT_ANY, "match sport", "match sport %u", ntohl(key->val) >> 16);
return;
}
/* XXX: Default print_raw */
@@ -888,19 +882,16 @@ static void print_ipv6(FILE *f, const struct tc_u32_key *key)
case 0:
switch (ntohl(key->mask)) {
case 0x0f000000:
- fprintf(f, "\n match IP ihl %u",
- ntohl(key->val) >> 24);
+ print_uint(PRINT_ANY, "match IP ihl", "\n match IP ihl %u", ntohl(key->val) >> 24);
return;
case 0x00ff0000:
- fprintf(f, "\n match IP dsfield %#x",
- ntohl(key->val) >> 16);
+ print_0xhex(PRINT_ANY, "match IP dsfield", "\n match IP dsfield %#x", ntohl(key->val) >> 16);
return;
}
break;
case 8:
if (ntohl(key->mask) == 0x00ff0000) {
- fprintf(f, "\n match IP protocol %d",
- ntohl(key->val) >> 16);
+ print_int(PRINT_ANY, "match IP protocol", "\n match IP protocol %d", ntohl(key->val) >> 16);
return;
}
break;
@@ -909,11 +900,12 @@ static void print_ipv6(FILE *f, const struct tc_u32_key *key)
int bits = mask2bits(key->mask);
if (bits >= 0) {
- fprintf(f, "\n %s %s/%d",
- key->off == 12 ? "match IP src" : "match IP dst",
- inet_ntop(AF_INET, &key->val,
- abuf, sizeof(abuf)),
- bits);
+ if (key->off == 12)
+ print_string(PRINT_ANY, "match IP", "\n %s ", "src");
+ else
+ print_string(PRINT_ANY, "match IP", "\n %s ", "dst");
+ print_string(PRINT_ANY, "IP Addr", "%s", inet_ntop(AF_INET, &key->val, abuf, sizeof(abuf)));
+ print_int(PRINT_ANY, "IP Addr prefix", "/%d", bits);
return;
}
}
@@ -922,17 +914,14 @@ static void print_ipv6(FILE *f, const struct tc_u32_key *key)
case 20:
switch (ntohl(key->mask)) {
case 0x0000ffff:
- fprintf(f, "\n match sport %u",
- ntohl(key->val) & 0xffff);
+ print_uint(PRINT_ANY, "match sport", "\n match sport %u", ntohl(key->val) & 0xffff);
return;
case 0xffff0000:
- fprintf(f, "\n match dport %u",
- ntohl(key->val) >> 16);
+ print_uint(PRINT_ANY, "match dport", "match dport %u", ntohl(key->val) >> 16);
return;
case 0xffffffff:
- fprintf(f, "\n match sport %u, match dport %u",
- ntohl(key->val) & 0xffff,
- ntohl(key->val) >> 16);
+ print_uint(PRINT_ANY, "match sport", "\n match sport %u, ", ntohl(key->val) & 0xffff);
+ print_uint(PRINT_ANY, "match dport", "match dport %u", ntohl(key->val) >> 16);
return;
}
@@ -942,11 +931,10 @@ static void print_ipv6(FILE *f, const struct tc_u32_key *key)
static void print_raw(FILE *f, const struct tc_u32_key *key)
{
- fprintf(f, "\n match %08x/%08x at %s%d",
- (unsigned int)ntohl(key->val),
- (unsigned int)ntohl(key->mask),
- key->offmask ? "nexthdr+" : "",
- key->off);
+ print_hex(PRINT_ANY, "match value", "\n match %08x", (unsigned int)ntohl(key->val));
+ print_hex(PRINT_ANY, "match mask", "/%08x ", (unsigned int)ntohl(key->mask));
+ print_string(PRINT_ANY, "match offmask", "at %s", key->offmask ? "nexthdr+" : "");
+ print_int(PRINT_ANY, "match off", "%d", key->off);
}
static const struct {
--
2.26.3
prev parent reply other threads:[~2021-09-07 1:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-07 1:57 [PATCH iproute2 0/2] add json support on tc u32 Wen Liang
2021-09-07 1:57 ` [PATCH iproute2 1/2] tc: u32: add support for json output Wen Liang
2021-09-07 15:46 ` Davide Caratti
2021-09-07 19:29 ` Stephen Hemminger
2021-09-07 19:32 ` Thorsten Glaser
2021-09-07 20:55 ` Stephen Hemminger
2021-09-08 1:18 ` David Ahern
2021-09-07 1:57 ` Wen Liang [this message]
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=2b9f656b2864a1310d6239a32c57b2d84077b903.1630978600.git.liangwen12year@gmail.com \
--to=liangwen12year@gmail.com \
--cc=aclaudi@redhat.com \
--cc=dsahern@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
--subject='Re: [PATCH iproute2 2/2] tc: u32: add json support in `print_raw`, `print_ipv4`, `print_ipv6`' \
/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
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).