We already export TCA_BPF_TAG resp. TCA_ACT_BPF_TAG from kernel commit
f1f7714ea51c ("bpf: rework prog_digest into prog_tag"), thus also dump
it when filter/actions are shown.

Signed-off-by: Daniel Borkmann <dan...@iogearbox.net>
---
 tc/f_bpf.c | 9 +++++++++
 tc/m_bpf.c | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/tc/f_bpf.c b/tc/f_bpf.c
index c4764d8..df8a259 100644
--- a/tc/f_bpf.c
+++ b/tc/f_bpf.c
@@ -216,6 +216,15 @@ static int bpf_print_opt(struct filter_util *qu, FILE *f,
                bpf_print_ops(f, tb[TCA_BPF_OPS],
                              rta_getattr_u16(tb[TCA_BPF_OPS_LEN]));
 
+       if (tb[TCA_BPF_TAG]) {
+               SPRINT_BUF(b);
+
+               fprintf(f, "tag %s ",
+                       hexstring_n2a(RTA_DATA(tb[TCA_BPF_TAG]),
+                                     RTA_PAYLOAD(tb[TCA_BPF_TAG]),
+                                     b, sizeof(b)));
+       }
+
        if (tb[TCA_BPF_POLICE]) {
                fprintf(f, "\n");
                tc_print_police(f, tb[TCA_BPF_POLICE]);
diff --git a/tc/m_bpf.c b/tc/m_bpf.c
index f043ae4..1ddc334 100644
--- a/tc/m_bpf.c
+++ b/tc/m_bpf.c
@@ -177,6 +177,15 @@ static int bpf_print_opt(struct action_util *au, FILE *f, 
struct rtattr *arg)
                fprintf(f, " ");
        }
 
+       if (tb[TCA_ACT_BPF_TAG]) {
+               SPRINT_BUF(b);
+
+               fprintf(f, "tag %s ",
+                       hexstring_n2a(RTA_DATA(tb[TCA_ACT_BPF_TAG]),
+                                     RTA_PAYLOAD(tb[TCA_ACT_BPF_TAG]),
+                                     b, sizeof(b)));
+       }
+
        fprintf(f, "default-action %s\n", action_n2a(parm->action));
        fprintf(f, "\tindex %u ref %d bind %d", parm->index, parm->refcnt,
                parm->bindcnt);
-- 
1.9.3

Reply via email to