Skip to contentSkip to conversation

src: Fix exporting symbols with clang

PATCH New Pablo Neira Ayuso 1 participant 1 message Dec 28, 2017 netfilter

lore
Share & tools
lore

Pablo Neira Ayuso

author maintainer
#0 lore raw

PATCH 1/1 src: Fix exporting symbols with clang

From: Armin Krejzi <[email protected]>

When EXPORT_SYMBOL is located after function definition, clang won't properly export the function, resulting in a library with no symbols when built with clang.

Based on libmnl commit dcdb47373a37 ("Move declaration of visibility attributes before definition.")

---
Armin cannot post this to the ml for some reason, so I'm sending it for him.

 src/batch.c    | 14 +++++------
 src/chain.c    | 68 +++++++++++++++++++++++++--------------------------
 src/common.c   | 14 +++++------
 src/expr.c     | 36 +++++++++++++--------------
 src/gen.c      | 26 ++++++++++----------
 src/object.c   | 66 ++++++++++++++++++++++++-------------------------
 src/rule.c     | 77 +++++++++++++++++++++++++++++-----------------------------
 src/ruleset.c  | 32 ++++++++++++------------
 src/set.c      | 66 +++++++++++++++++++++++++------------------------
 src/set_elem.c | 49 +++++++++++++++++++------------------
 src/table.c    | 60 ++++++++++++++++++++++-----------------------
 src/trace.c    |  2 +-
 src/udata.c    | 32 ++++++++++++------------
 13 files changed, 273 insertions(+), 269 deletions(-)
src/batch.c +7 -7
index 5ee3fd7..ca8f922 100644
@@ -57,6 +57,7 @@ static void nftnl_batch_add_page(struct nftnl_batch_page *page,
 	list_add_tail(&page->head, &batch->page_list);
 }
 
+EXPORT_SYMBOL(nftnl_batch_alloc);
 struct nftnl_batch *nftnl_batch_alloc(uint32_t pg_size, uint32_t pg_overrun_size)
 {
 	struct nftnl_batch *batch;
@@ -80,8 +81,8 @@ err1:
 	free(batch);
 	return NULL;
 }
-EXPORT_SYMBOL(nftnl_batch_alloc);
 
+EXPORT_SYMBOL(nftnl_batch_free);
 void nftnl_batch_free(struct nftnl_batch *batch)
 {
 	struct nftnl_batch_page *page, *next;
@@ -94,8 +95,8 @@ void nftnl_batch_free(struct nftnl_batch *batch)
 
 	free(batch);
 }
-EXPORT_SYMBOL(nftnl_batch_free);
 
+EXPORT_SYMBOL(nftnl_batch_update);
 int nftnl_batch_update(struct nftnl_batch *batch)
 {
 	struct nftnl_batch_page *page;
@@ -119,20 +120,20 @@ int nftnl_batch_update(struct nftnl_batch *batch)
 err1:
 	return -1;
 }
-EXPORT_SYMBOL(nftnl_batch_update);
 
+EXPORT_SYMBOL(nftnl_batch_buffer);
 void *nftnl_batch_buffer(struct nftnl_batch *batch)
 {
 	return mnl_nlmsg_batch_current(batch->current_page->batch);
 }
-EXPORT_SYMBOL(nftnl_batch_buffer);
 
+EXPORT_SYMBOL(nftnl_batch_buffer_len);
 uint32_t nftnl_batch_buffer_len(struct nftnl_batch *batch)
 {
 	return mnl_nlmsg_batch_size(batch->current_page->batch);
 }
-EXPORT_SYMBOL(nftnl_batch_buffer_len);
 
+EXPORT_SYMBOL(nftnl_batch_iovec_len);
 int nftnl_batch_iovec_len(struct nftnl_batch *batch)
 {
 	int num_pages = batch->num_pages;
@@ -143,8 +144,8 @@ int nftnl_batch_iovec_len(struct nftnl_batch *batch)
 
 	return num_pages;
 }
-EXPORT_SYMBOL(nftnl_batch_iovec_len);
 
+EXPORT_SYMBOL(nftnl_batch_iovec);
 void nftnl_batch_iovec(struct nftnl_batch *batch, struct iovec *iov,
 		       uint32_t iovlen)
 {
@@ -160,4 +161,3 @@ void nftnl_batch_iovec(struct nftnl_batch *batch, struct iovec *iov,
 		i++;
 	}
 }
-EXPORT_SYMBOL(nftnl_batch_iovec);
src/chain.c +34 -34

311 lines not on this page · raw message

src/common.c +7 -7
index a95883c..561c954 100644
@@ -43,14 +43,15 @@ static struct nlmsghdr *__nftnl_nlmsg_build_hdr(char *buf, uint16_t type,
 	return nlh;
 }
 
+EXPORT_SYMBOL(nftnl_nlmsg_build_hdr);
 struct nlmsghdr *nftnl_nlmsg_build_hdr(char *buf, uint16_t type, uint16_t family,
 				       uint16_t flags, uint32_t seq)
 {
 	return __nftnl_nlmsg_build_hdr(buf, (NFNL_SUBSYS_NFTABLES << 8) | type,
 				       family, flags, seq, 0);
 }
-EXPORT_SYMBOL(nftnl_nlmsg_build_hdr);
 
+EXPORT_SYMBOL(nftnl_parse_err_alloc);
 struct nftnl_parse_err *nftnl_parse_err_alloc(void)
 {
 	struct nftnl_parse_err *err;
@@ -63,14 +64,14 @@ struct nftnl_parse_err *nftnl_parse_err_alloc(void)
 
 	return err;
 }
-EXPORT_SYMBOL(nftnl_parse_err_alloc);
 
+EXPORT_SYMBOL(nftnl_parse_err_free);
 void nftnl_parse_err_free(struct nftnl_parse_err *err)
 {
 	xfree(err);
 }
-EXPORT_SYMBOL(nftnl_parse_err_free);
 
+EXPORT_SYMBOL(nftnl_parse_perror);
 int nftnl_parse_perror(const char *msg, struct nftnl_parse_err *err)
 {
 	switch (err->error) {
@@ -89,7 +90,6 @@ int nftnl_parse_perror(const char *msg, struct nftnl_parse_err *err)
 		return fprintf(stderr, "%s: Undefined error\n", msg);
 	}
 }
-EXPORT_SYMBOL(nftnl_parse_perror);
 
 int nftnl_cmd_header_snprintf(char *buf, size_t size, uint32_t cmd, uint32_t type,
 			    uint32_t flags)
@@ -165,20 +165,21 @@ int nftnl_cmd_footer_fprintf(FILE *fp, uint32_t cmd, uint32_t type,
 			   nftnl_cmd_footer_fprintf_cb);
 }
 
+EXPORT_SYMBOL(nftnl_batch_begin);
 struct nlmsghdr *nftnl_batch_begin(char *buf, uint32_t seq)
 {
 	return __nftnl_nlmsg_build_hdr(buf, NFNL_MSG_BATCH_BEGIN, AF_UNSPEC,
 				       0, seq, NFNL_SUBSYS_NFTABLES);
 }
-EXPORT_SYMBOL(nftnl_batch_begin);
 
+EXPORT_SYMBOL(nftnl_batch_end);
 struct nlmsghdr *nftnl_batch_end(char *buf, uint32_t seq)
 {
 	return __nftnl_nlmsg_build_hdr(buf, NFNL_MSG_BATCH_END, AF_UNSPEC,
 				       0, seq, NFNL_SUBSYS_NFTABLES);
 }
-EXPORT_SYMBOL(nftnl_batch_end);
 
+EXPORT_SYMBOL(nftnl_batch_is_supported);
 int nftnl_batch_is_supported(void)
 {
 	struct mnl_socket *nl;
@@ -236,4 +237,3 @@ err:
 	mnl_nlmsg_batch_stop(b);
 	return -1;
 }
-EXPORT_SYMBOL(nftnl_batch_is_supported);
src/expr.c +18 -18
index 1eae707..62565e0 100644
@@ -24,6 +24,7 @@
 
 #include <libnftnl/expr.h>
 
+EXPORT_SYMBOL(nftnl_expr_alloc);
 struct nftnl_expr *nftnl_expr_alloc(const char *name)
 {
 	struct nftnl_expr *expr;
@@ -43,8 +44,8 @@ struct nftnl_expr *nftnl_expr_alloc(const char *name)
 
 	return expr;
 }
-EXPORT_SYMBOL(nftnl_expr_alloc);
 
+EXPORT_SYMBOL(nftnl_expr_free);
 void nftnl_expr_free(const struct nftnl_expr *expr)
 {
 	if (expr->ops->free)
@@ -52,14 +53,14 @@ void nftnl_expr_free(const struct nftnl_expr *expr)
 
 	xfree(expr);
 }
-EXPORT_SYMBOL(nftnl_expr_free);
 
+EXPORT_SYMBOL(nftnl_expr_is_set);
 bool nftnl_expr_is_set(const struct nftnl_expr *expr, uint16_t type)
 {
 	return expr->flags & (1 << type);
 }
-EXPORT_SYMBOL(nftnl_expr_is_set);
 
+EXPORT_SYMBOL(nftnl_expr_set);
 int nftnl_expr_set(struct nftnl_expr *expr, uint16_t type,
 		   const void *data, uint32_t data_len)
 {
@@ -73,42 +74,42 @@ int nftnl_expr_set(struct nftnl_expr *expr, uint16_t type,
 	expr->flags |= (1 << type);
 	return 0;
 }
-EXPORT_SYMBOL(nftnl_expr_set);
 
+EXPORT_SYMBOL(nftnl_expr_set_u8);
 void
 nftnl_expr_set_u8(struct nftnl_expr *expr, uint16_t type, uint8_t data)
 {
 	nftnl_expr_set(expr, type, &data, sizeof(uint8_t));
 }
-EXPORT_SYMBOL(nftnl_expr_set_u8);
 
+EXPORT_SYMBOL(nftnl_expr_set_u16);
 void
 nftnl_expr_set_u16(struct nftnl_expr *expr, uint16_t type, uint16_t data)
 {
 	nftnl_expr_set(expr, type, &data, sizeof(uint16_t));
 }
-EXPORT_SYMBOL(nftnl_expr_set_u16);
 
+EXPORT_SYMBOL(nftnl_expr_set_u32);
 void
 nftnl_expr_set_u32(struct nftnl_expr *expr, uint16_t type, uint32_t data)
 {
 	nftnl_expr_set(expr, type, &data, sizeof(uint32_t));
 }
-EXPORT_SYMBOL(nftnl_expr_set_u32);
 
+EXPORT_SYMBOL(nftnl_expr_set_u64);
 void
 nftnl_expr_set_u64(struct nftnl_expr *expr, uint16_t type, uint64_t data)
 {
 	nftnl_expr_set(expr, type, &data, sizeof(uint64_t));
 }
-EXPORT_SYMBOL(nftnl_expr_set_u64);
 
+EXPORT_SYMBOL(nftnl_expr_set_str);
 int nftnl_expr_set_str(struct nftnl_expr *expr, uint16_t type, const char *str)
 {
 	return nftnl_expr_set(expr, type, str, strlen(str) + 1);
 }
-EXPORT_SYMBOL(nftnl_expr_set_str);
 
+EXPORT_SYMBOL(nftnl_expr_get);
 const void *nftnl_expr_get(const struct nftnl_expr *expr,
 			      uint16_t type, uint32_t *data_len)
 {
@@ -129,8 +130,8 @@ const void *nftnl_expr_get(const struct nftnl_expr *expr,
 
 	return ret;
 }
-EXPORT_SYMBOL(nftnl_expr_get);
 
+EXPORT_SYMBOL(nftnl_expr_get_u8);
 uint8_t nftnl_expr_get_u8(const struct nftnl_expr *expr, uint16_t type)
 {
 	const void *data;
@@ -145,8 +146,8 @@ uint8_t nftnl_expr_get_u8(const struct nftnl_expr *expr, uint16_t type)
 
 	return *((uint8_t *)data);
 }
-EXPORT_SYMBOL(nftnl_expr_get_u8);
 
+EXPORT_SYMBOL(nftnl_expr_get_u16);
 uint16_t nftnl_expr_get_u16(const struct nftnl_expr *expr, uint16_t type)
 {
 	const void *data;
@@ -161,8 +162,8 @@ uint16_t nftnl_expr_get_u16(const struct nftnl_expr *expr, uint16_t type)
 
 	return *((uint16_t *)data);
 }
-EXPORT_SYMBOL(nftnl_expr_get_u16);
 
+EXPORT_SYMBOL(nftnl_expr_get_u32);
 uint32_t nftnl_expr_get_u32(const struct nftnl_expr *expr, uint16_t type)
 {
 	const void *data;
@@ -177,8 +178,8 @@ uint32_t nftnl_expr_get_u32(const struct nftnl_expr *expr, uint16_t type)
 
 	return *((uint32_t *)data);
 }
-EXPORT_SYMBOL(nftnl_expr_get_u32);
 
+EXPORT_SYMBOL(nftnl_expr_get_u64);
 uint64_t nftnl_expr_get_u64(const struct nftnl_expr *expr, uint16_t type)
 {
 	const void *data;
@@ -193,16 +194,16 @@ uint64_t nftnl_expr_get_u64(const struct nftnl_expr *expr, uint16_t type)
 
 	return *((uint64_t *)data);
 }
-EXPORT_SYMBOL(nftnl_expr_get_u64);
 
+EXPORT_SYMBOL(nftnl_expr_get_str);
 const char *nftnl_expr_get_str(const struct nftnl_expr *expr, uint16_t type)
 {
 	uint32_t data_len;
 
 	return (const char *)nftnl_expr_get(expr, type, &data_len);
 }
-EXPORT_SYMBOL(nftnl_expr_get_str);
 
+EXPORT_SYMBOL(nftnl_expr_cmp);
 bool nftnl_expr_cmp(const struct nftnl_expr *e1, const struct nftnl_expr *e2)
 {
 	if (e1->flags != e2->flags ||
@@ -211,7 +212,6 @@ bool nftnl_expr_cmp(const struct nftnl_expr *e1, const struct nftnl_expr *e2)
 
 	return e1->ops->cmp(e1, e2);
 }
-EXPORT_SYMBOL(nftnl_expr_cmp);
 
 void nftnl_expr_build_payload(struct nlmsghdr *nlh, struct nftnl_expr *expr)
 {
@@ -275,6 +275,7 @@ err1:
 	return NULL;
 }
 
+EXPORT_SYMBOL(nftnl_expr_snprintf);
 int nftnl_expr_snprintf(char *buf, size_t size, const struct nftnl_expr *expr,
 			uint32_t type, uint32_t flags)
 {
@@ -292,7 +293,6 @@ int nftnl_expr_snprintf(char *buf, size_t size, const struct nftnl_expr *expr,
 
 	return offset;
 }
-EXPORT_SYMBOL(nftnl_expr_snprintf);
 
 static int nftnl_expr_do_snprintf(char *buf, size_t size, const void *e,
 				  uint32_t cmd, uint32_t type, uint32_t flags)
@@ -300,10 +300,10 @@ static int nftnl_expr_do_snprintf(char *buf, size_t size, const void *e,
 	return nftnl_expr_snprintf(buf, size, e, type, flags);
 }
 
+EXPORT_SYMBOL(nftnl_expr_fprintf);
 int nftnl_expr_fprintf(FILE *fp, const struct nftnl_expr *expr, uint32_t type,
 		       uint32_t flags)
 {
 	return nftnl_fprintf(fp, expr, NFTNL_CMD_UNSPEC, type, flags,
 			     nftnl_expr_do_snprintf);
 }
-EXPORT_SYMBOL(nftnl_expr_fprintf);
src/gen.c +13 -13
index eafb015..f92180c 100644
@@ -29,24 +29,25 @@ struct nftnl_gen {
 	uint32_t flags;
 };
 
+EXPORT_SYMBOL(nftnl_gen_alloc);
 struct nftnl_gen *nftnl_gen_alloc(void)
 {
 	return calloc(1, sizeof(struct nftnl_gen));
 }
-EXPORT_SYMBOL(nftnl_gen_alloc);
 
+EXPORT_SYMBOL(nftnl_gen_free);
 void nftnl_gen_free(const struct nftnl_gen *gen)
 {
 	xfree(gen);
 }
-EXPORT_SYMBOL(nftnl_gen_free);
 
+EXPORT_SYMBOL(nftnl_gen_is_set);
 bool nftnl_gen_is_set(const struct nftnl_gen *gen, uint16_t attr)
 {
 	return gen->flags & (1 << attr);
 }
-EXPORT_SYMBOL(nftnl_gen_is_set);
 
+EXPORT_SYMBOL(nftnl_gen_unset);
 void nftnl_gen_unset(struct nftnl_gen *gen, uint16_t attr)
 {
 	if (!(gen->flags & (1 << attr)))
@@ -58,12 +59,12 @@ void nftnl_gen_unset(struct nftnl_gen *gen, uint16_t attr)
 	}
 	gen->flags &= ~(1 << attr);
 }
-EXPORT_SYMBOL(nftnl_gen_unset);
 
 static uint32_t nftnl_gen_validate[NFTNL_GEN_MAX + 1] = {
 	[NFTNL_GEN_ID]	= sizeof(uint32_t),
 };
 
+EXPORT_SYMBOL(nftnl_gen_set_data);
 int nftnl_gen_set_data(struct nftnl_gen *gen, uint16_t attr,
 		       const void *data, uint32_t data_len)
 {
@@ -78,20 +79,20 @@ int nftnl_gen_set_data(struct nftnl_gen *gen, uint16_t attr,
 	gen->flags |= (1 << attr);
 	return 0;
 }
-EXPORT_SYMBOL(nftnl_gen_set_data);
 
+EXPORT_SYMBOL(nftnl_gen_set);
 int nftnl_gen_set(struct nftnl_gen *gen, uint16_t attr, const void *data)
 {
 	return nftnl_gen_set_data(gen, attr, data, nftnl_gen_validate[attr]);
 }
-EXPORT_SYMBOL(nftnl_gen_set);
 
+EXPORT_SYMBOL(nftnl_gen_set_u32);
 void nftnl_gen_set_u32(struct nftnl_gen *gen, uint16_t attr, uint32_t val)
 {
 	nftnl_gen_set_data(gen, attr, &val, sizeof(uint32_t));
 }
-EXPORT_SYMBOL(nftnl_gen_set_u32);
 
+EXPORT_SYMBOL(nftnl_gen_get_data);
 const void *nftnl_gen_get_data(const struct nftnl_gen *gen, uint16_t attr,
 			       uint32_t *data_len)
 {
@@ -105,21 +106,20 @@ const void *nftnl_gen_get_data(const struct nftnl_gen *gen, uint16_t attr,
 	}
 	return NULL;
 }
-EXPORT_SYMBOL(nftnl_gen_get_data);
 
+EXPORT_SYMBOL(nftnl_gen_get);
 const void *nftnl_gen_get(const struct nftnl_gen *gen, uint16_t attr)
 {
 	uint32_t data_len;
 	return nftnl_gen_get_data(gen, attr, &data_len);
 }
-EXPORT_SYMBOL(nftnl_gen_get);
 
+EXPORT_SYMBOL(nftnl_gen_get_u32);
 uint32_t nftnl_gen_get_u32(const struct nftnl_gen *gen, uint16_t attr)
 {
 	const void *ret = nftnl_gen_get(gen, attr);
 	return ret == NULL ? 0 : *((uint32_t *)ret);
 }
-EXPORT_SYMBOL(nftnl_gen_get_u32);
 
 static int nftnl_gen_parse_attr_cb(const struct nlattr *attr, void *data)
 {
@@ -140,6 +140,7 @@ static int nftnl_gen_parse_attr_cb(const struct nlattr *attr, void *data)
 	return MNL_CB_OK;
 }
 
+EXPORT_SYMBOL(nftnl_gen_nlmsg_parse);
 int nftnl_gen_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_gen *gen)
 {
 	struct nlattr *tb[NFTA_GEN_MAX + 1] = {};
@@ -154,7 +155,6 @@ int nftnl_gen_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_gen *gen)
 	}
 	return 0;
 }
-EXPORT_SYMBOL(nftnl_gen_nlmsg_parse);
 
 static int nftnl_gen_snprintf_default(char *buf, size_t size,
 				      const struct nftnl_gen *gen)
@@ -186,6 +186,7 @@ static int nftnl_gen_cmd_snprintf(char *buf, size_t size,
 	return offset;
 }
 
+EXPORT_SYMBOL(nftnl_gen_snprintf);
 int nftnl_gen_snprintf(char *buf, size_t size, const struct nftnl_gen *gen,
 		       uint32_t type, uint32_t flags)
 {
@@ -195,7 +196,6 @@ int nftnl_gen_snprintf(char *buf, size_t size, const struct nftnl_gen *gen,
 	return nftnl_gen_cmd_snprintf(buf, size, gen, nftnl_flag2cmd(flags), type,
 				    flags);
 }
-EXPORT_SYMBOL(nftnl_gen_snprintf);
 
 static int nftnl_gen_do_snprintf(char *buf, size_t size, const void *gen,
 				 uint32_t cmd, uint32_t type, uint32_t flags)
@@ -203,10 +203,10 @@ static int nftnl_gen_do_snprintf(char *buf, size_t size, const void *gen,
 	return nftnl_gen_snprintf(buf, size, gen, type, flags);
 }
 
+EXPORT_SYMBOL(nftnl_gen_fprintf);
 int nftnl_gen_fprintf(FILE *fp, const struct nftnl_gen *gen, uint32_t type,
 		      uint32_t flags)
 {
 	return nftnl_fprintf(fp, gen, NFTNL_CMD_UNSPEC, type, flags,
 			   nftnl_gen_do_snprintf);
 }
-EXPORT_SYMBOL(nftnl_gen_fprintf);
src/object.c +33 -33

299 lines not on this page · raw message

src/rule.c +39 -38

353 lines not on this page · raw message

src/ruleset.c +16 -16
index cf86ca6..eb49fde 100644
@@ -55,12 +55,13 @@ struct nftnl_parse_ctx {
 	uint16_t flags;
 };
 
+EXPORT_SYMBOL(nftnl_ruleset_alloc);
 struct nftnl_ruleset *nftnl_ruleset_alloc(void)
 {
 	return calloc(1, sizeof(struct nftnl_ruleset));
 }
-EXPORT_SYMBOL(nftnl_ruleset_alloc);
 
+EXPORT_SYMBOL(nftnl_ruleset_free);
 void nftnl_ruleset_free(const struct nftnl_ruleset *r)
 {
 	if (r->flags & (1 << NFTNL_RULESET_TABLELIST))
@@ -73,14 +74,14 @@ void nftnl_ruleset_free(const struct nftnl_ruleset *r)
 		nftnl_rule_list_free(r->rule_list);
 	xfree(r);
 }
-EXPORT_SYMBOL(nftnl_ruleset_free);
 
+EXPORT_SYMBOL(nftnl_ruleset_is_set);
 bool nftnl_ruleset_is_set(const struct nftnl_ruleset *r, uint16_t attr)
 {
 	return r->flags & (1 << attr);
 }
-EXPORT_SYMBOL(nftnl_ruleset_is_set);
 
+EXPORT_SYMBOL(nftnl_ruleset_unset);
 void nftnl_ruleset_unset(struct nftnl_ruleset *r, uint16_t attr)
 {
 	if (!(r->flags & (1 << attr)))
@@ -102,8 +103,8 @@ void nftnl_ruleset_unset(struct nftnl_ruleset *r, uint16_t attr)
 	}
 	r->flags &= ~(1 << attr);
 }
-EXPORT_SYMBOL(nftnl_ruleset_unset);
 
+EXPORT_SYMBOL(nftnl_ruleset_set);
 void nftnl_ruleset_set(struct nftnl_ruleset *r, uint16_t attr, void *data)
 {
 	switch (attr) {
@@ -128,8 +129,8 @@ void nftnl_ruleset_set(struct nftnl_ruleset *r, uint16_t attr, void *data)
 	}
 	r->flags |= (1 << attr);
 }
-EXPORT_SYMBOL(nftnl_ruleset_set);
 
+EXPORT_SYMBOL(nftnl_ruleset_get);
 void *nftnl_ruleset_get(const struct nftnl_ruleset *r, uint16_t attr)
 {
 	if (!(r->flags & (1 << attr)))
@@ -148,8 +149,8 @@ void *nftnl_ruleset_get(const struct nftnl_ruleset *r, uint16_t attr)
 		return NULL;
 	}
 }
-EXPORT_SYMBOL(nftnl_ruleset_get);
 
+EXPORT_SYMBOL(nftnl_ruleset_ctx_free);
 void nftnl_ruleset_ctx_free(const struct nftnl_parse_ctx *ctx)
 {
 	switch (ctx->type) {
@@ -171,14 +172,14 @@ void nftnl_ruleset_ctx_free(const struct nftnl_parse_ctx *ctx)
 		break;
 	}
 }
-EXPORT_SYMBOL(nftnl_ruleset_ctx_free);
 
+EXPORT_SYMBOL(nftnl_ruleset_ctx_is_set);
 bool nftnl_ruleset_ctx_is_set(const struct nftnl_parse_ctx *ctx, uint16_t attr)
 {
 	return ctx->flags & (1 << attr);
 }
-EXPORT_SYMBOL(nftnl_ruleset_ctx_is_set);
 
+EXPORT_SYMBOL(nftnl_ruleset_ctx_get);
 void *nftnl_ruleset_ctx_get(const struct nftnl_parse_ctx *ctx, uint16_t attr)
 {
 	if (!(ctx->flags & (1 << attr)))
@@ -203,14 +204,13 @@ void *nftnl_ruleset_ctx_get(const struct nftnl_parse_ctx *ctx, uint16_t attr)
 		return NULL;
 	}
 }
-EXPORT_SYMBOL(nftnl_ruleset_ctx_get);
 
+EXPORT_SYMBOL(nftnl_ruleset_ctx_get_u32);
 uint32_t nftnl_ruleset_ctx_get_u32(const struct nftnl_parse_ctx *ctx, uint16_t attr)
 {
 	const void *ret = nftnl_ruleset_ctx_get(ctx, attr);
 	return ret == NULL ? 0 : *((uint32_t *)ret);
 }
-EXPORT_SYMBOL(nftnl_ruleset_ctx_get_u32);
 
 #if defined(JSON_PARSING)
 static void nftnl_ruleset_ctx_set(struct nftnl_parse_ctx *ctx, uint16_t attr,
@@ -593,14 +593,15 @@ nftnl_ruleset_do_parse(enum nftnl_parse_type type, const void *data,
 	return ret;
 }
 
+EXPORT_SYMBOL(nftnl_ruleset_parse_file_cb);
 int nftnl_ruleset_parse_file_cb(enum nftnl_parse_type type, FILE *fp,
 			      struct nftnl_parse_err *err, void *data,
 			      int (*cb)(const struct nftnl_parse_ctx *ctx))
 {
 	return nftnl_ruleset_do_parse(type, fp, err, NFTNL_PARSE_FILE, data, cb);
 }
-EXPORT_SYMBOL(nftnl_ruleset_parse_file_cb);
 
+EXPORT_SYMBOL(nftnl_ruleset_parse_buffer_cb);
 int nftnl_ruleset_parse_buffer_cb(enum nftnl_parse_type type, const char *buffer,
 				struct nftnl_parse_err *err, void *data,
 				int (*cb)(const struct nftnl_parse_ctx *ctx))
@@ -608,7 +609,6 @@ int nftnl_ruleset_parse_buffer_cb(enum nftnl_parse_type type, const char *buffer
 	return nftnl_ruleset_do_parse(type, buffer, err, NFTNL_PARSE_BUFFER, data,
 				    cb);
 }
-EXPORT_SYMBOL(nftnl_ruleset_parse_buffer_cb);
 
 static int nftnl_ruleset_cb(const struct nftnl_parse_ctx *ctx)
 {
@@ -671,19 +671,19 @@ static int nftnl_ruleset_cb(const struct nftnl_parse_ctx *ctx)
 	return 0;
 }
 
+EXPORT_SYMBOL(nftnl_ruleset_parse);
 int nftnl_ruleset_parse(struct nftnl_ruleset *r, enum nftnl_parse_type type,
 		      const char *data, struct nftnl_parse_err *err)
 {
 	return nftnl_ruleset_parse_buffer_cb(type, data, err, r, nftnl_ruleset_cb);
 }
-EXPORT_SYMBOL(nftnl_ruleset_parse);
 
+EXPORT_SYMBOL(nftnl_ruleset_parse_file);
 int nftnl_ruleset_parse_file(struct nftnl_ruleset *rs, enum nftnl_parse_type type,
 			   FILE *fp, struct nftnl_parse_err *err)
 {
 	return nftnl_ruleset_parse_file_cb(type, fp, err, rs, nftnl_ruleset_cb);
 }
-EXPORT_SYMBOL(nftnl_ruleset_parse_file);
 
 static const char *nftnl_ruleset_o_opentag(uint32_t type)
 {
@@ -930,6 +930,7 @@ static int nftnl_ruleset_cmd_snprintf(char *buf, size_t size,
 	}
 }
 
+EXPORT_SYMBOL(nftnl_ruleset_snprintf);
 int nftnl_ruleset_snprintf(char *buf, size_t size, const struct nftnl_ruleset *r,
 			 uint32_t type, uint32_t flags)
 {
@@ -948,7 +949,6 @@ int nftnl_ruleset_snprintf(char *buf, size_t size, const struct nftnl_ruleset *r
 		return -1;
 	}
 }
-EXPORT_SYMBOL(nftnl_ruleset_snprintf);
 
 static int nftnl_ruleset_fprintf_tables(FILE *fp, const struct nftnl_ruleset *rs,
 				      uint32_t type, uint32_t flags)
@@ -1162,10 +1162,10 @@ static int nftnl_ruleset_cmd_fprintf(FILE *fp, const struct nftnl_ruleset *rs,
 	return len;
 }
 
+EXPORT_SYMBOL(nftnl_ruleset_fprintf);
 int nftnl_ruleset_fprintf(FILE *fp, const struct nftnl_ruleset *rs, uint32_t type,
 			uint32_t flags)
 {
 	return nftnl_ruleset_cmd_fprintf(fp, rs, nftnl_flag2cmd(flags), type,
 				       flags);
 }
-EXPORT_SYMBOL(nftnl_ruleset_fprintf);
src/set.c +34 -32

306 lines not on this page · raw message

src/set_elem.c +25 -24

241 lines not on this page · raw message

src/table.c +30 -30

277 lines not on this page · raw message

src/trace.c +1 -1
index b016e72..f426437 100644
@@ -324,8 +324,8 @@ static int nftnl_trace_parse_verdict(const struct nlattr *attr,
 	}
 	return 0;
 }
-EXPORT_SYMBOL(nftnl_trace_nlmsg_parse);
 
+EXPORT_SYMBOL(nftnl_trace_nlmsg_parse);
 int nftnl_trace_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_trace *t)
 {
 	struct nfgenmsg *nfg = mnl_nlmsg_get_payload(nlh);
src/udata.c +16 -16
index d679dd0..6bd9651 100644
@@ -16,6 +16,7 @@
 #include <stdint.h>
 #include <string.h>
 
+EXPORT_SYMBOL(nftnl_udata_buf_alloc);
 struct nftnl_udata_buf *nftnl_udata_buf_alloc(uint32_t data_size)
 {
 	struct nftnl_udata_buf *buf;
@@ -28,46 +29,46 @@ struct nftnl_udata_buf *nftnl_udata_buf_alloc(uint32_t data_size)
 
 	return buf;
 }
-EXPORT_SYMBOL(nftnl_udata_buf_alloc);
 
+EXPORT_SYMBOL(nftnl_udata_buf_free);
 void nftnl_udata_buf_free(const struct nftnl_udata_buf *buf)
 {
 	xfree(buf);
 }
-EXPORT_SYMBOL(nftnl_udata_buf_free);
 
+EXPORT_SYMBOL(nftnl_udata_buf_len);
 uint32_t nftnl_udata_buf_len(const struct nftnl_udata_buf *buf)
 {
 	return (uint32_t)(buf->end - buf->data);
 }
-EXPORT_SYMBOL(nftnl_udata_buf_len);
 
+EXPORT_SYMBOL(nftnl_udata_buf_data);
 void *nftnl_udata_buf_data(const struct nftnl_udata_buf *buf)
 {
 	return (void *)buf->data;
 }
-EXPORT_SYMBOL(nftnl_udata_buf_data);
 
+EXPORT_SYMBOL(nftnl_udata_buf_put);
 void nftnl_udata_buf_put(struct nftnl_udata_buf *buf, const void *data,
 			 uint32_t len)
 {
 	memcpy(buf->data, data, len <= buf->size ? len : buf->size);
 	buf->end = buf->data + len;
 }
-EXPORT_SYMBOL(nftnl_udata_buf_put);
 
+EXPORT_SYMBOL(nftnl_udata_start);
 struct nftnl_udata *nftnl_udata_start(const struct nftnl_udata_buf *buf)
 {
 	return (struct nftnl_udata *)buf->data;
 }
-EXPORT_SYMBOL(nftnl_udata_start);
 
+EXPORT_SYMBOL(nftnl_udata_end);
 struct nftnl_udata *nftnl_udata_end(const struct nftnl_udata_buf *buf)
 {
 	return (struct nftnl_udata *)buf->end;
 }
-EXPORT_SYMBOL(nftnl_udata_end);
 
+EXPORT_SYMBOL(nftnl_udata_put);
 bool nftnl_udata_put(struct nftnl_udata_buf *buf, uint8_t type, uint32_t len,
 		     const void *value)
 {
@@ -85,54 +86,54 @@ bool nftnl_udata_put(struct nftnl_udata_buf *buf, uint8_t type, uint32_t len,
 
 	return true;
 }
-EXPORT_SYMBOL(nftnl_udata_put);
 
+EXPORT_SYMBOL(nftnl_udata_put_strz);
 bool nftnl_udata_put_strz(struct nftnl_udata_buf *buf, uint8_t type,
 			  const char *strz)
 {
 	return nftnl_udata_put(buf, type, strlen(strz) + 1, strz);
 }
-EXPORT_SYMBOL(nftnl_udata_put_strz);
 
+EXPORT_SYMBOL(nftnl_udata_put_u32);
 bool nftnl_udata_put_u32(struct nftnl_udata_buf *buf, uint8_t type,
 			 uint32_t data)
 {
 	return nftnl_udata_put(buf, type, sizeof(data), &data);
 }
-EXPORT_SYMBOL(nftnl_udata_put_u32);
 
+EXPORT_SYMBOL(nftnl_udata_type);
 uint8_t nftnl_udata_type(const struct nftnl_udata *attr)
 {
 	return attr->type;
 }
-EXPORT_SYMBOL(nftnl_udata_type);
 
+EXPORT_SYMBOL(nftnl_udata_len);
 uint8_t nftnl_udata_len(const struct nftnl_udata *attr)
 {
 	return attr->len;
 }
-EXPORT_SYMBOL(nftnl_udata_len);
 
+EXPORT_SYMBOL(nftnl_udata_get);
 void *nftnl_udata_get(const struct nftnl_udata *attr)
 {
 	return (void *)attr->value;
 }
-EXPORT_SYMBOL(nftnl_udata_get);
 
+EXPORT_SYMBOL(nftnl_udata_get_u32);
 uint32_t nftnl_udata_get_u32(const struct nftnl_udata *attr)
 {
 	uint32_t *data = (uint32_t *)attr->value;
 
 	return *data;
 }
-EXPORT_SYMBOL(nftnl_udata_get_u32);
 
+EXPORT_SYMBOL(nftnl_udata_next);
 struct nftnl_udata *nftnl_udata_next(const struct nftnl_udata *attr)
 {
 	return (struct nftnl_udata *)&attr->value[attr->len];
 }
-EXPORT_SYMBOL(nftnl_udata_next);
 
+EXPORT_SYMBOL(nftnl_udata_parse);
 int nftnl_udata_parse(const void *data, uint32_t data_len, nftnl_udata_cb_t cb,
 		      void *cb_data)
 {
@@ -147,4 +148,3 @@ int nftnl_udata_parse(const void *data, uint32_t data_len, nftnl_udata_cb_t cb,
 
 	return ret;
 }
-EXPORT_SYMBOL(nftnl_udata_parse);
Signature · 1 line
2.15.1