summaryrefslogtreecommitdiffstats
path: root/src/common.c
diff options
context:
space:
mode:
authorArmin K <krejzi@email.com>2017-12-23 21:12:04 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2017-12-30 21:56:18 +0100
commit7966020bdf0135b7d5c4c792883875019ae2a906 (patch)
treebf48148fae03ff7dbaed5c50b511a018833d874f /src/common.c
parentfb998eccee2030aabe249b1e7515050399e0304b (diff)
src: Fix exporting symbols with clang
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.") Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1205 Signed-off-by: Armin K <krejzi@email.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/common.c b/src/common.c
index a95883c..561c954 100644
--- a/src/common.c
+++ b/src/common.c
@@ -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);