All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH libnftnl 1/2] set: expose nftnl_set_elem_nlmsg_build()
@ 2021-11-04 21:38 Pablo Neira Ayuso
  2021-11-04 21:38 ` [PATCH libnftnl 2/2] set: use NFTNL_SET_ELEM_VERDICT to print verdict Pablo Neira Ayuso
  0 siblings, 1 reply; 2+ messages in thread
From: Pablo Neira Ayuso @ 2021-11-04 21:38 UTC (permalink / raw)
  To: netfilter-devel

Expose a function to build one single set element netlink message.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
 include/libnftnl/set.h | 2 ++
 src/libnftnl.map       | 4 ++++
 src/set_elem.c         | 9 +++++----
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/include/libnftnl/set.h b/include/libnftnl/set.h
index 1eae024c8523..e2e5795aa9b4 100644
--- a/include/libnftnl/set.h
+++ b/include/libnftnl/set.h
@@ -144,6 +144,8 @@ bool nftnl_set_elem_is_set(const struct nftnl_set_elem *s, uint16_t attr);
 #define nftnl_set_elem_nlmsg_build_hdr	nftnl_nlmsg_build_hdr
 void nftnl_set_elems_nlmsg_build_payload(struct nlmsghdr *nlh, struct nftnl_set *s);
 void nftnl_set_elem_nlmsg_build_payload(struct nlmsghdr *nlh, struct nftnl_set_elem *e);
+struct nlattr *nftnl_set_elem_nlmsg_build(struct nlmsghdr *nlh,
+					  struct nftnl_set_elem *elem, int i);
 
 int nftnl_set_elem_parse(struct nftnl_set_elem *e, enum nftnl_parse_type type,
 		       const char *data, struct nftnl_parse_err *err);
diff --git a/src/libnftnl.map b/src/libnftnl.map
index e707b89cfdfd..ad8f2af060ae 100644
--- a/src/libnftnl.map
+++ b/src/libnftnl.map
@@ -383,3 +383,7 @@ LIBNFTNL_16 {
   nftnl_expr_add_expr;
   nftnl_expr_expr_foreach;
 } LIBNFTNL_15;
+
+LIBNFTNL_17 {
+  nftnl_set_elem_nlmsg_build;
+} LIBNFTNL_16;
diff --git a/src/set_elem.c b/src/set_elem.c
index 90632a298312..edcc4a271b24 100644
--- a/src/set_elem.c
+++ b/src/set_elem.c
@@ -388,8 +388,9 @@ static void nftnl_set_elem_nlmsg_build_def(struct nlmsghdr *nlh,
 		mnl_attr_put_strz(nlh, NFTA_SET_ELEM_LIST_TABLE, s->table);
 }
 
-static struct nlattr *nftnl_set_elem_build(struct nlmsghdr *nlh,
-					      struct nftnl_set_elem *elem, int i)
+EXPORT_SYMBOL(nftnl_set_elem_nlmsg_build);
+struct nlattr *nftnl_set_elem_nlmsg_build(struct nlmsghdr *nlh,
+					  struct nftnl_set_elem *elem, int i)
 {
 	struct nlattr *nest2;
 
@@ -414,7 +415,7 @@ void nftnl_set_elems_nlmsg_build_payload(struct nlmsghdr *nlh, struct nftnl_set
 
 	nest1 = mnl_attr_nest_start(nlh, NFTA_SET_ELEM_LIST_ELEMENTS);
 	list_for_each_entry(elem, &s->element_list, head)
-		nftnl_set_elem_build(nlh, elem, ++i);
+		nftnl_set_elem_nlmsg_build(nlh, elem, ++i);
 
 	mnl_attr_nest_end(nlh, nest1);
 }
@@ -898,7 +899,7 @@ int nftnl_set_elems_nlmsg_build_payload_iter(struct nlmsghdr *nlh,
 	nest1 = mnl_attr_nest_start(nlh, NFTA_SET_ELEM_LIST_ELEMENTS);
 	elem = nftnl_set_elems_iter_next(iter);
 	while (elem != NULL) {
-		nest2 = nftnl_set_elem_build(nlh, elem, ++i);
+		nest2 = nftnl_set_elem_nlmsg_build(nlh, elem, ++i);
 		if (nftnl_attr_nest_overflow(nlh, nest1, nest2)) {
 			/* Go back to previous not to miss this element */
 			iter->cur = list_entry(iter->cur->head.prev,
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH libnftnl 2/2] set: use NFTNL_SET_ELEM_VERDICT to print verdict
  2021-11-04 21:38 [PATCH libnftnl 1/2] set: expose nftnl_set_elem_nlmsg_build() Pablo Neira Ayuso
@ 2021-11-04 21:38 ` Pablo Neira Ayuso
  0 siblings, 0 replies; 2+ messages in thread
From: Pablo Neira Ayuso @ 2021-11-04 21:38 UTC (permalink / raw)
  To: netfilter-devel

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 |  3 +--
 src/set.c          |  2 +-
 src/set_elem.c     | 13 +++++++------
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/set_elem.h b/include/set_elem.h
index 503dcede2c0d..76280051bb80 100644
--- a/include/set_elem.h
+++ b/include/set_elem.h
@@ -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
diff --git a/src/set.c b/src/set.c
index 1c29dd26e88d..c46f8277ff68 100644
--- 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);
 	}
 
diff --git a/src/set_elem.c b/src/set_elem.c
index edcc4a271b24..12eadce1f8e0 100644
--- a/src/set_elem.c
+++ b/src/set_elem.c
@@ -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;
 }
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-11-04 21:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 21:38 [PATCH libnftnl 1/2] set: expose nftnl_set_elem_nlmsg_build() Pablo Neira Ayuso
2021-11-04 21:38 ` [PATCH libnftnl 2/2] set: use NFTNL_SET_ELEM_VERDICT to print verdict Pablo Neira Ayuso

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.