]> git.ipfire.org Git - thirdparty/libnftnl.git/commitdiff
set: use NFTNL_SET_ELEM_VERDICT to print verdict
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 4 Nov 2021 14:30:48 +0000 (15:30 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 4 Nov 2021 20:44:45 +0000 (21:44 +0100)
This patch reworks 228e8b174627 ("set_elem: Fix printing of verdict map
elements"), check if NFTNL_SET_ELEM_VERDICT is set then print the set
element verdict.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/set_elem.h
src/set.c
src/set_elem.c

index 503dcede2c0d212dec54e43570755c2ae020bfcd..76280051bb803134a7b8a579461a3df349bd94ab 100644 (file)
@@ -21,7 +21,6 @@ struct nftnl_set_elem {
 };
 
 int nftnl_set_elem_snprintf_default(char *buf, size_t size,
-                                   const struct nftnl_set_elem *e,
-                                   enum nft_data_types dtype);
+                                   const struct nftnl_set_elem *e);
 
 #endif
index 1c29dd26e88dcc8fb4e03ea62b06963dd8047639..c46f8277ff6870234388a7d647ed50b8f0018cf6 100644 (file)
--- a/src/set.c
+++ b/src/set.c
@@ -829,7 +829,7 @@ static int nftnl_set_snprintf_default(char *buf, size_t remain,
                SNPRINTF_BUFFER_SIZE(ret, remain, offset);
 
                ret = nftnl_set_elem_snprintf_default(buf + offset, remain,
-                                                     elem, s->data_type);
+                                                     elem);
                SNPRINTF_BUFFER_SIZE(ret, remain, offset);
        }
 
index edcc4a271b2485c6aaaececbc8e613f321081b05..12eadce1f8e0cc5638639760cdc1292b31e67b8c 100644 (file)
@@ -700,11 +700,9 @@ int nftnl_set_elem_parse_file(struct nftnl_set_elem *e, enum nftnl_parse_type ty
 }
 
 int nftnl_set_elem_snprintf_default(char *buf, size_t remain,
-                                   const struct nftnl_set_elem *e,
-                                   enum nft_data_types dtype)
+                                   const struct nftnl_set_elem *e)
 {
-       int dregtype = (dtype == NFT_DATA_VERDICT) ? DATA_VERDICT : DATA_VALUE;
-       int ret, offset = 0, i;
+       int ret, dregtype = DATA_VALUE, offset = 0, i;
 
        ret = snprintf(buf, remain, "element ");
        SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -725,6 +723,9 @@ int nftnl_set_elem_snprintf_default(char *buf, size_t remain,
        ret = snprintf(buf + offset, remain, " : ");
        SNPRINTF_BUFFER_SIZE(ret, remain, offset);
 
+       if (e->flags & (1 << NFTNL_SET_ELEM_VERDICT))
+               dregtype = DATA_VERDICT;
+
        ret = nftnl_data_reg_snprintf(buf + offset, remain, &e->data,
                                      DATA_F_NOPFX, dregtype);
        SNPRINTF_BUFFER_SIZE(ret, remain, offset);
@@ -761,9 +762,9 @@ static int nftnl_set_elem_cmd_snprintf(char *buf, size_t remain,
        if (type != NFTNL_OUTPUT_DEFAULT)
                return -1;
 
-       ret = nftnl_set_elem_snprintf_default(buf + offset, remain, e,
-                                             NFT_DATA_VALUE);
+       ret = nftnl_set_elem_snprintf_default(buf + offset, remain, e);
        SNPRINTF_BUFFER_SIZE(ret, remain, offset);
+
        return offset;
 }