libmnl: Drop the EXPORT_SYMBOL() tags
PATCH v3 1/1 libmnl: Drop the EXPORT_SYMBOL() tags
* libmnl using an export map (-Wl,--version-script=), hence, no need to explicitly use the EXPORT_SYMBOL() tags.
Drop the EXPORT_SYMBOL() tags also fix the failed to build with clang.
--- configure.ac | 1 - src/Makefile.am | 2 +- src/attr.c | 37 +------------------------------------ src/callback.c | 4 +--- src/internal.h | 12 ------------ src/nlmsg.c | 22 +--------------------- src/socket.c | 12 +----------- 7 files changed, 5 insertions(+), 85 deletions(-) delete mode 100644 src/internal.h
configure.ac +0 -1
@@ -15,7 +15,6 @@ AM_PROG_CC_C_O AC_EXEEXT AC_DISABLE_STATIC LT_INIT -CHECK_GCC_FVISIBILITY case "$host" in *-*-linux* | *-*-uclinux*) ;; *) AC_MSG_ERROR([Linux only, dude!]);;
src/Makefile.am +1 -1
@@ -2,4 +2,4 @@ include $(top_srcdir)/Make_global.am lib_LTLIBRARIES = libmnl.la libmnl_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libmnl.map -version-info $(LIBVERSION) -libmnl_la_SOURCES = socket.c callback.c nlmsg.c attr.c internal.h libmnl.map +libmnl_la_SOURCES = socket.c callback.c nlmsg.c attr.c libmnl.map
src/attr.c +1 -36
@@ -10,7 +10,7 @@#include <libmnl/libmnl.h> #include <string.h> #include <errno.h> -#include "internal.h" +#include "config.h" /** * \defgroup attr Netlink attribute helpers
@@ -39,7 +39,6 @@ uint16_t mnl_attr_get_type(const struct nlattr *attr) {return attr->nla_type &NLA_TYPE_MASK ; } -EXPORT_SYMBOL (mnl_attr_get_type);/** * mnl_attr_get_len - get length of netlink attribute
@@ -52,7 +51,6 @@ uint16_t mnl_attr_get_len(const struct nlattr *attr) {return attr->nla_len; } -EXPORT_SYMBOL (mnl_attr_get_len);/** * mnl_attr_get_payload_len - get the attribute payload-value length
@@ -64,7 +62,6 @@ uint16_t mnl_attr_get_payload_len(const struct nlattr *attr) {return attr->nla_len -MNL_ATTR_HDRLEN ; } -EXPORT_SYMBOL (mnl_attr_get_payload_len);/** * mnl_attr_get_payload - get pointer to the attribute payload
@@ -76,7 +73,6 @@ void *mnl_attr_get_payload(const struct nlattr *attr) {return (void *)attr +MNL_ATTR_HDRLEN ; } -EXPORT_SYMBOL (mnl_attr_get_payload);/** * mnl_attr_ok - check if there is room for an attribute in a buffer
@@ -100,7 +96,6 @@ bool mnl_attr_ok(const struct nlattr *attr, int len) attr->nla_len >=sizeof (struct nlattr ) && (int )attr->nla_len <= len; } -EXPORT_SYMBOL (mnl_attr_ok);/** * mnl_attr_next - get the next attribute in the payload of a netlink message
@@ -114,7 +109,6 @@ struct nlattr *mnl_attr_next(const struct nlattr *attr) {return (struct nlattr *)((void *)attr +MNL_ALIGN (attr->nla_len)); } -EXPORT_SYMBOL (mnl_attr_next);/** * mnl_attr_type_valid - check if the attribute type is valid
@@ -138,7 +132,6 @@ int mnl_attr_type_valid(const struct nlattr *attr, uint16_t max) }return 1 ; } -EXPORT_SYMBOL (mnl_attr_type_valid);static int __mnl_attr_validate (const struct nlattr *attr,enum mnl_attr_data_type type,size_t exp_len)
@@ -222,7 +215,6 @@ int mnl_attr_validate(const struct nlattr *attr, enum mnl_attr_data_type type) exp_len = mnl_attr_data_type_len[type];return __mnl_attr_validate (attr, type, exp_len); } -EXPORT_SYMBOL (mnl_attr_validate);/** * mnl_attr_validate2 - validate netlink attribute (extended version)
@@ -244,7 +236,6 @@ mnl_attr_validate2(const struct nlattr *attr, enum mnl_attr_data_type type, }return __mnl_attr_validate (attr, type, exp_len); } -EXPORT_SYMBOL (mnl_attr_validate2);/** * mnl_attr_parse - parse attributes
@@ -273,7 +264,6 @@ mnl_attr_parse(const struct nlmsghdr *nlh, unsigned int offset,return ret;return ret; } -EXPORT_SYMBOL (mnl_attr_parse);/** * mnl_attr_parse_nested - parse attributes inside a nest
@@ -301,7 +291,6 @@ mnl_attr_parse_nested(const struct nlattr *nested, mnl_attr_cb_t cb,return ret;return ret; } -EXPORT_SYMBOL (mnl_attr_parse_nested);/** * mnl_attr_parse_payload - parse attributes in payload of Netlink message
@@ -334,7 +323,6 @@ mnl_attr_parse_payload(const void *payload, size_t payload_len,return ret;return ret; } -EXPORT_SYMBOL (mnl_attr_parse_payload);/** * mnl_attr_get_u8 - returns 8-bit unsigned integer attribute payload
@@ -346,7 +334,6 @@ uint8_t mnl_attr_get_u8(const struct nlattr *attr) {return *((uint8_t *)mnl_attr_get_payload (attr)); } -EXPORT_SYMBOL (mnl_attr_get_u8);/** * mnl_attr_get_u16 - returns 16-bit unsigned integer attribute payload
@@ -358,7 +345,6 @@ uint16_t mnl_attr_get_u16(const struct nlattr *attr) {return *((uint16_t *)mnl_attr_get_payload (attr)); } -EXPORT_SYMBOL (mnl_attr_get_u16);/** * mnl_attr_get_u32 - returns 32-bit unsigned integer attribute payload
@@ -370,7 +356,6 @@ uint32_t mnl_attr_get_u32(const struct nlattr *attr) {return *((uint32_t *)mnl_attr_get_payload (attr)); } -EXPORT_SYMBOL (mnl_attr_get_u32);/** * mnl_attr_get_u64 - returns 64-bit unsigned integer attribute.
@@ -386,7 +371,6 @@ uint64_t mnl_attr_get_u64(const struct nlattr *attr)memcpy (&tmp,mnl_attr_get_payload (attr),sizeof (tmp));return tmp; } -EXPORT_SYMBOL (mnl_attr_get_u64);/** * mnl_attr_get_str - returns pointer to string attribute.
@@ -398,7 +382,6 @@ const char *mnl_attr_get_str(const struct nlattr *attr) {return mnl_attr_get_payload (attr); } -EXPORT_SYMBOL (mnl_attr_get_str);/** * mnl_attr_put - add an attribute to netlink message
@@ -421,7 +404,6 @@ mnl_attr_put(struct nlmsghdr *nlh, uint16_t type, size_t len, const void *data)memcpy (mnl_attr_get_payload (attr), data, len); nlh->nlmsg_len +=MNL_ALIGN (payload_len); } -EXPORT_SYMBOL (mnl_attr_put);/** * mnl_attr_put_u8 - add 8-bit unsigned integer attribute to netlink message
@@ -436,7 +418,6 @@ void mnl_attr_put_u8(struct nlmsghdr *nlh, uint16_t type, uint8_t data) {mnl_attr_put (nlh, type,sizeof (uint8_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u8);/** * mnl_attr_put_u16 - add 16-bit unsigned integer attribute to netlink message
@@ -451,7 +432,6 @@ void mnl_attr_put_u16(struct nlmsghdr *nlh, uint16_t type, uint16_t data) {mnl_attr_put (nlh, type,sizeof (uint16_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u16);/** * mnl_attr_put_u32 - add 32-bit unsigned integer attribute to netlink message
@@ -466,7 +446,6 @@ void mnl_attr_put_u32(struct nlmsghdr *nlh, uint16_t type, uint32_t data) {mnl_attr_put (nlh, type,sizeof (uint32_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u32);/** * mnl_attr_put_u64 - add 64-bit unsigned integer attribute to netlink message
@@ -481,7 +460,6 @@ void mnl_attr_put_u64(struct nlmsghdr *nlh, uint16_t type, uint64_t data) {mnl_attr_put (nlh, type,sizeof (uint64_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u64);/** * mnl_attr_put_str - add string attribute to netlink message
@@ -496,7 +474,6 @@ void mnl_attr_put_str(struct nlmsghdr *nlh, uint16_t type, const char *data) {mnl_attr_put (nlh, type,strlen (data), data); } -EXPORT_SYMBOL (mnl_attr_put_str);/** * mnl_attr_put_strz - add string attribute to netlink message
@@ -514,7 +491,6 @@ void mnl_attr_put_strz(struct nlmsghdr *nlh, uint16_t type, const char *data) {mnl_attr_put (nlh, type,strlen (data)+1 , data); } -EXPORT_SYMBOL (mnl_attr_put_strz);/** * mnl_attr_nest_start - start an attribute nest
@@ -535,7 +511,6 @@ struct nlattr *mnl_attr_nest_start(struct nlmsghdr *nlh, uint16_t type)return start; } -EXPORT_SYMBOL (mnl_attr_nest_start);/** * mnl_attr_put_check - add an attribute to netlink message
@@ -560,7 +535,6 @@ mnl_attr_put_check(struct nlmsghdr *nlh, size_t buflen,mnl_attr_put (nlh, type, len, data);return true; } -EXPORT_SYMBOL (mnl_attr_put_check);/** * mnl_attr_put_u8_check - add 8-bit unsigned int attribute to netlink message
@@ -581,7 +555,6 @@ mnl_attr_put_u8_check(struct nlmsghdr *nlh, size_t buflen, {return mnl_attr_put_check (nlh, buflen, type,sizeof (uint8_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u8_check);/** * mnl_attr_put_u16_check - add 16-bit unsigned int attribute to netlink message
@@ -604,7 +577,6 @@ mnl_attr_put_u16_check(struct nlmsghdr *nlh, size_t buflen, {return mnl_attr_put_check (nlh, buflen, type,sizeof (uint16_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u16_check);/** * mnl_attr_put_u32_check - add 32-bit unsigned int attribute to netlink message
@@ -627,7 +599,6 @@ mnl_attr_put_u32_check(struct nlmsghdr *nlh, size_t buflen, {return mnl_attr_put_check (nlh, buflen, type,sizeof (uint32_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u32_check);/** * mnl_attr_put_u64_check - add 64-bit unsigned int attribute to netlink message
@@ -650,7 +621,6 @@ mnl_attr_put_u64_check(struct nlmsghdr *nlh, size_t buflen, {return mnl_attr_put_check (nlh, buflen, type,sizeof (uint64_t ), &data); } -EXPORT_SYMBOL (mnl_attr_put_u64_check);/** * mnl_attr_put_str_check - add string attribute to netlink message
@@ -673,7 +643,6 @@ mnl_attr_put_str_check(struct nlmsghdr *nlh, size_t buflen, {return mnl_attr_put_check (nlh, buflen, type,strlen (data), data); } -EXPORT_SYMBOL (mnl_attr_put_str_check);/** * mnl_attr_put_strz_check - add string attribute to netlink message
@@ -697,7 +666,6 @@ mnl_attr_put_strz_check(struct nlmsghdr *nlh, size_t buflen, {return mnl_attr_put_check (nlh, buflen, type,strlen (data)+1 , data); } -EXPORT_SYMBOL (mnl_attr_put_strz_check);/** * mnl_attr_nest_start_check - start an attribute nest
@@ -716,7 +684,6 @@ mnl_attr_nest_start_check(struct nlmsghdr *nlh, size_t buflen, uint16_t type)return NULL ;return mnl_attr_nest_start (nlh, type); } -EXPORT_SYMBOL (mnl_attr_nest_start_check);/** * mnl_attr_nest_end - end an attribute nest
@@ -730,7 +697,6 @@ mnl_attr_nest_end(struct nlmsghdr *nlh, struct nlattr *start) { start->nla_len =mnl_nlmsg_get_payload_tail (nlh) - (void *)start; } -EXPORT_SYMBOL (mnl_attr_nest_end);/** * mnl_attr_nest_cancel - cancel an attribute nest
@@ -744,7 +710,6 @@ mnl_attr_nest_cancel(struct nlmsghdr *nlh, struct nlattr *start) { nlh->nlmsg_len -=mnl_nlmsg_get_payload_tail (nlh) - (void *)start; } -EXPORT_SYMBOL (mnl_attr_nest_cancel);/** * @}
src/callback.c +1 -3
@@ -9,7 +9,7 @@#include <errno.h> #include <libmnl/libmnl.h> -#include "internal.h" +#include "config.h" static int mnl_cb_noop (const struct nlmsghdr *nlh,void *data) {
@@ -134,7 +134,6 @@ mnl_cb_run2(const void *buf, size_t numbytes, unsigned int seq,return __mnl_cb_run (buf, numbytes, seq, portid, cb_data, data, cb_ctl_array, cb_ctl_array_len); } -EXPORT_SYMBOL (mnl_cb_run2);/** * mnl_cb_run - callback runqueue for netlink messages (simplified version)
@@ -161,7 +160,6 @@ mnl_cb_run(const void *buf, size_t numbytes, unsigned int seq, {return __mnl_cb_run (buf, numbytes, seq, portid, cb_data, data,NULL ,0 ); } -EXPORT_SYMBOL (mnl_cb_run);/** * @}
src/internal.h deleted +0 -12
@@ -1,12 +0,0 @@ -#ifndef INTERNAL_H -#define INTERNAL_H 1 - -#include "config.h" -#ifdef HAVE_VISIBILITY_HIDDEN -# define __visible __attribute__((visibility("default"))) -# define EXPORT_SYMBOL (x) typeof(x) (x) __visible -#else -# define EXPORT_SYMBOL -#endif - -#endif
src/nlmsg.c +1 -21
@@ -13,7 +13,7 @@#include <errno.h> #include <string.h> #include <libmnl/libmnl.h> -#include "internal.h" +#include "config.h" /** * \defgroup nlmsg Netlink message helpers
@@ -55,7 +55,6 @@ size_t mnl_nlmsg_size(size_t len) {return len +MNL_NLMSG_HDRLEN ; } -EXPORT_SYMBOL (mnl_nlmsg_size);/** * mnl_nlmsg_get_payload_len - get the length of the Netlink payload
@@ -68,7 +67,6 @@ size_t mnl_nlmsg_get_payload_len(const struct nlmsghdr *nlh) {return nlh->nlmsg_len -MNL_NLMSG_HDRLEN ; } -EXPORT_SYMBOL (mnl_nlmsg_get_payload_len);/** * mnl_nlmsg_put_header - reserve and prepare room for Netlink header
@@ -88,7 +86,6 @@ struct nlmsghdr *mnl_nlmsg_put_header(void *buf) nlh->nlmsg_len = len;return nlh; } -EXPORT_SYMBOL (mnl_nlmsg_put_header);/** * mnl_nlmsg_put_extra_header - reserve and prepare room for an extra header
@@ -110,7 +107,6 @@ mnl_nlmsg_put_extra_header(struct nlmsghdr *nlh, size_t size)memset (ptr,0 , len);return ptr; } -EXPORT_SYMBOL (mnl_nlmsg_put_extra_header);/** * mnl_nlmsg_get_payload - get a pointer to the payload of the netlink message
@@ -122,7 +118,6 @@ void *mnl_nlmsg_get_payload(const struct nlmsghdr *nlh) {return (void *)nlh +MNL_NLMSG_HDRLEN ; } -EXPORT_SYMBOL (mnl_nlmsg_get_payload);/** * mnl_nlmsg_get_payload_offset - get a pointer to the payload of the message
@@ -137,7 +132,6 @@ mnl_nlmsg_get_payload_offset(const struct nlmsghdr *nlh, size_t offset) {return (void *)nlh +MNL_NLMSG_HDRLEN +MNL_ALIGN (offset); } -EXPORT_SYMBOL (mnl_nlmsg_get_payload_offset);/** * mnl_nlmsg_ok - check a there is room for netlink message
@@ -161,7 +155,6 @@ bool mnl_nlmsg_ok(const struct nlmsghdr *nlh, int len) nlh->nlmsg_len >=sizeof (struct nlmsghdr ) && (int )nlh->nlmsg_len <= len; } -EXPORT_SYMBOL (mnl_nlmsg_ok);/** * mnl_nlmsg_next - get the next netlink message in a multipart message
@@ -182,7 +175,6 @@ mnl_nlmsg_next(const struct nlmsghdr *nlh, int *len) *len -=MNL_ALIGN (nlh->nlmsg_len);return (struct nlmsghdr *)((void *)nlh +MNL_ALIGN (nlh->nlmsg_len)); } -EXPORT_SYMBOL (mnl_nlmsg_next);/** * mnl_nlmsg_get_payload_tail - get the ending of the netlink message
@@ -196,7 +188,6 @@ void *mnl_nlmsg_get_payload_tail(const struct nlmsghdr *nlh) {return (void *)nlh +MNL_ALIGN (nlh->nlmsg_len); } -EXPORT_SYMBOL (mnl_nlmsg_get_payload_tail);/** * mnl_nlmsg_seq_ok - perform sequence tracking
@@ -217,7 +208,6 @@ mnl_nlmsg_seq_ok(const struct nlmsghdr *nlh, unsigned int seq) {return nlh->nlmsg_seq && seq ? nlh->nlmsg_seq == seq : true; } -EXPORT_SYMBOL (mnl_nlmsg_seq_ok);/** * mnl_nlmsg_portid_ok - perform portID origin check
@@ -238,7 +228,6 @@ mnl_nlmsg_portid_ok(const struct nlmsghdr *nlh, unsigned int portid) {return nlh->nlmsg_pid && portid ? nlh->nlmsg_pid == portid : true; } -EXPORT_SYMBOL (mnl_nlmsg_portid_ok);static void mnl_nlmsg_fprintf_header (FILE *fd,const struct nlmsghdr *nlh) {
@@ -382,7 +371,6 @@ mnl_nlmsg_fprintf(FILE *fd, const void *data, size_t datalen, nlh =mnl_nlmsg_next (nlh, &len); } } -EXPORT_SYMBOL (mnl_nlmsg_fprintf);/** * \defgroup batch Netlink message batch helpers
@@ -456,7 +444,6 @@ struct mnl_nlmsg_batch *mnl_nlmsg_batch_start(void *buf, size_t limit)return b; } -EXPORT_SYMBOL (mnl_nlmsg_batch_start);/** * mnl_nlmsg_batch_stop - release a batch
@@ -468,7 +455,6 @@ void mnl_nlmsg_batch_stop(struct mnl_nlmsg_batch *b) {free (b); } -EXPORT_SYMBOL (mnl_nlmsg_batch_stop);/** * mnl_nlmsg_batch_next - get room for the next message in the batch
@@ -493,7 +479,6 @@ bool mnl_nlmsg_batch_next(struct mnl_nlmsg_batch *b) b->buflen += nlh->nlmsg_len;return true; } -EXPORT_SYMBOL (mnl_nlmsg_batch_next);/** * mnl_nlmsg_batch_reset - reset the batch
@@ -516,7 +501,6 @@ void mnl_nlmsg_batch_reset(struct mnl_nlmsg_batch *b) b->cur = b->buf; } } -EXPORT_SYMBOL (mnl_nlmsg_batch_reset);/** * mnl_nlmsg_batch_size - get current size of the batch
@@ -528,7 +512,6 @@ size_t mnl_nlmsg_batch_size(struct mnl_nlmsg_batch *b) {return b->buflen; } -EXPORT_SYMBOL (mnl_nlmsg_batch_size);/** * mnl_nlmsg_batch_head - get head of this batch
@@ -541,7 +524,6 @@ void *mnl_nlmsg_batch_head(struct mnl_nlmsg_batch *b) {return b->buf; } -EXPORT_SYMBOL (mnl_nlmsg_batch_head);/** * mnl_nlmsg_batch_current - returns current position in the batch
@@ -554,7 +536,6 @@ void *mnl_nlmsg_batch_current(struct mnl_nlmsg_batch *b) {return b->cur; } -EXPORT_SYMBOL (mnl_nlmsg_batch_current);/** * mnl_nlmsg_batch_is_empty - check if there is any message in the batch
@@ -566,7 +547,6 @@ bool mnl_nlmsg_batch_is_empty(struct mnl_nlmsg_batch *b) {return b->buflen ==0 ; } -EXPORT_SYMBOL (mnl_nlmsg_batch_is_empty);/** * @}
src/socket.c +1 -11
@@ -14,7 +14,7 @@#include <unistd.h> #include <time.h> #include <errno.h> -#include "internal.h" +#include "config.h" /** * \mainpage
@@ -86,7 +86,6 @@ int mnl_socket_get_fd(const struct mnl_socket *nl) {return nl->fd; } -EXPORT_SYMBOL (mnl_socket_get_fd);/** * mnl_socket_get_portid - obtain Netlink PortID from netlink socket
@@ -101,7 +100,6 @@ unsigned int mnl_socket_get_portid(const struct mnl_socket *nl) {return nl->addr.nl_pid; } -EXPORT_SYMBOL (mnl_socket_get_portid);/** * mnl_socket_open - open a netlink socket
@@ -126,7 +124,6 @@ struct mnl_socket *mnl_socket_open(int bus)return nl; } -EXPORT_SYMBOL (mnl_socket_open);/** * mnl_socket_fdopen - associates a mnl_socket object with pre-existing socket.
@@ -160,7 +157,6 @@ struct mnl_socket *mnl_socket_fdopen(int fd)return nl; } -EXPORT_SYMBOL (mnl_socket_fdopen);/** * mnl_socket_bind - bind netlink socket
@@ -200,7 +196,6 @@ int mnl_socket_bind(struct mnl_socket *nl, unsigned int groups, pid_t pid) }return 0 ; } -EXPORT_SYMBOL (mnl_socket_bind);/** * mnl_socket_sendto - send a netlink message of a certain size
@@ -220,7 +215,6 @@ mnl_socket_sendto(const struct mnl_socket *nl, const void *buf, size_t len)return sendto (nl->fd, buf, len,0 , (struct sockaddr *) &snl,sizeof (snl)); } -EXPORT_SYMBOL (mnl_socket_sendto);/** * mnl_socket_recvfrom - receive a netlink message
@@ -268,7 +262,6 @@ mnl_socket_recvfrom(const struct mnl_socket *nl, void *buf, size_t bufsiz) }return ret; } -EXPORT_SYMBOL (mnl_socket_recvfrom);/** * mnl_socket_close - close a given netlink socket
@@ -283,7 +276,6 @@ int mnl_socket_close(struct mnl_socket *nl)free (nl);return ret; } -EXPORT_SYMBOL (mnl_socket_close);/** * mnl_socket_setsockopt - set Netlink socket option
@@ -315,7 +307,6 @@ int mnl_socket_setsockopt(const struct mnl_socket *nl, int type, {return setsockopt (nl->fd,SOL_NETLINK , type, buf, len); } -EXPORT_SYMBOL (mnl_socket_setsockopt);/** * mnl_socket_getsockopt - get a Netlink socket option
@@ -331,7 +322,6 @@ int mnl_socket_getsockopt(const struct mnl_socket *nl, int type, {return getsockopt (nl->fd,SOL_NETLINK , type, buf, len); } -EXPORT_SYMBOL (mnl_socket_getsockopt);/** * @}
Signature · 1 line
2.5.3
Quoted 4 lines · Neutron Soutmun
Drop the
EXPORT_SYMBOL()tags also fix the failed to build with clang.-CHECK_GCC_FVISIBILITY
We should be able to also drop the m4 code behind CHECK_GCC_FVISIBILITY (I remember writing that, and so it's not something autoconf would provide on its own.)
Quoted 10 lines · Jan Engelhardt
Quoted 4 lines · Neutron Soutmun
Drop the
EXPORT_SYMBOL()tags also fix the failed to build with clang.-CHECK_GCC_FVISIBILITY
We should be able to also drop the m4 code behind
CHECK_GCC_FVISIBILITY(I remember writing that, and so it's not something autoconf would provide on its own.)
Dropped m4/gcc4_visibility.m4 and also clean up the Make_global.am for ${GCC_FVISIBILITY_HIDDEN}
Please review again [1] - [PATCH v4] libmnl: Drop the EXPORT_SYMBOL() tags
Best regards,
Neutron Soutmun
[1] https://marc.info/?l=netfilter-devel&m=144409492019105&w=2