diff options
Diffstat (limited to 'meta-networking')
2 files changed, 258 insertions, 1 deletions
diff --git a/meta-networking/recipes-filter/libnetfilter/files/0001-libnetfilter-acct-Declare-the-define-visivility-attribute-together.patch b/meta-networking/recipes-filter/libnetfilter/files/0001-libnetfilter-acct-Declare-the-define-visivility-attribute-together.patch new file mode 100644 index 0000000000..9e0b420e0a --- /dev/null +++ b/meta-networking/recipes-filter/libnetfilter/files/0001-libnetfilter-acct-Declare-the-define-visivility-attribute-together.patch | |||
| @@ -0,0 +1,255 @@ | |||
| 1 | From f3e3e8fa703e88b76b22c5486277dfca3c85a24b Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Khem Raj <raj.khem@gmail.com> | ||
| 3 | Date: Mon, 10 Apr 2017 14:56:18 -0700 | ||
| 4 | Subject: [PATCH] Declare the define visivility attribute together | ||
| 5 | |||
| 6 | clang ignores the visibility attribute if its not | ||
| 7 | defined before the definition. As a result these | ||
| 8 | symbols become hidden and consumers of this library | ||
| 9 | fail to link due to these missing symbols | ||
| 10 | |||
| 11 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 12 | --- | ||
| 13 | doxygen.cfg.in | 2 +- | ||
| 14 | src/internal.h | 5 ++--- | ||
| 15 | src/libnetfilter_acct.c | 41 ++++++++++++++--------------------------- | ||
| 16 | 3 files changed, 17 insertions(+), 31 deletions(-) | ||
| 17 | |||
| 18 | diff --git a/doxygen.cfg.in b/doxygen.cfg.in | ||
| 19 | index 7f4bd04..fe64d48 100644 | ||
| 20 | --- a/doxygen.cfg.in | ||
| 21 | +++ b/doxygen.cfg.in | ||
| 22 | @@ -72,7 +72,7 @@ RECURSIVE = YES | ||
| 23 | EXCLUDE = | ||
| 24 | EXCLUDE_SYMLINKS = NO | ||
| 25 | EXCLUDE_PATTERNS = */.git/* .*.d | ||
| 26 | -EXCLUDE_SYMBOLS = EXPORT_SYMBOL nfacct | ||
| 27 | +EXCLUDE_SYMBOLS = nfacct | ||
| 28 | EXAMPLE_PATH = | ||
| 29 | EXAMPLE_PATTERNS = | ||
| 30 | EXAMPLE_RECURSIVE = NO | ||
| 31 | diff --git a/src/internal.h b/src/internal.h | ||
| 32 | index f0cc2e1..e5c5ffd 100644 | ||
| 33 | --- a/src/internal.h | ||
| 34 | +++ b/src/internal.h | ||
| 35 | @@ -3,10 +3,9 @@ | ||
| 36 | |||
| 37 | #include "config.h" | ||
| 38 | #ifdef HAVE_VISIBILITY_HIDDEN | ||
| 39 | -# define __visible __attribute__((visibility("default"))) | ||
| 40 | -# define EXPORT_SYMBOL(x) typeof(x) (x) __visible | ||
| 41 | +# define __EXPORT __attribute__((visibility("default"))) | ||
| 42 | #else | ||
| 43 | -# define EXPORT_SYMBOL | ||
| 44 | +# define __EXPORT | ||
| 45 | #endif | ||
| 46 | |||
| 47 | #include <endian.h> | ||
| 48 | diff --git a/src/libnetfilter_acct.c b/src/libnetfilter_acct.c | ||
| 49 | index b0bcf67..0220d14 100644 | ||
| 50 | --- a/src/libnetfilter_acct.c | ||
| 51 | +++ b/src/libnetfilter_acct.c | ||
| 52 | @@ -76,21 +76,19 @@ struct nfacct { | ||
| 53 | * In case of success, this function returns a valid pointer, otherwise NULL | ||
| 54 | * s returned and errno is appropriately set. | ||
| 55 | */ | ||
| 56 | -struct nfacct *nfacct_alloc(void) | ||
| 57 | +struct nfacct __EXPORT *nfacct_alloc(void) | ||
| 58 | { | ||
| 59 | return calloc(1, sizeof(struct nfacct)); | ||
| 60 | } | ||
| 61 | -EXPORT_SYMBOL(nfacct_alloc); | ||
| 62 | |||
| 63 | /** | ||
| 64 | * nfacct_free - release one accounting object | ||
| 65 | * \param nfacct pointer to the accounting object | ||
| 66 | */ | ||
| 67 | -void nfacct_free(struct nfacct *nfacct) | ||
| 68 | +void __EXPORT nfacct_free(struct nfacct *nfacct) | ||
| 69 | { | ||
| 70 | free(nfacct); | ||
| 71 | } | ||
| 72 | -EXPORT_SYMBOL(nfacct_free); | ||
| 73 | |||
| 74 | /** | ||
| 75 | * nfacct_attr_set - set one attribute of the accounting object | ||
| 76 | @@ -98,7 +96,7 @@ EXPORT_SYMBOL(nfacct_free); | ||
| 77 | * \param type attribute type you want to set | ||
| 78 | * \param data pointer to data that will be used to set this attribute | ||
| 79 | */ | ||
| 80 | -void | ||
| 81 | +void __EXPORT | ||
| 82 | nfacct_attr_set(struct nfacct *nfacct, enum nfacct_attr_type type, | ||
| 83 | const void *data) | ||
| 84 | { | ||
| 85 | @@ -126,7 +124,6 @@ nfacct_attr_set(struct nfacct *nfacct, enum nfacct_attr_type type, | ||
| 86 | break; | ||
| 87 | } | ||
| 88 | } | ||
| 89 | -EXPORT_SYMBOL(nfacct_attr_set); | ||
| 90 | |||
| 91 | /** | ||
| 92 | * nfacct_attr_set_str - set one attribute the accounting object | ||
| 93 | @@ -134,13 +131,12 @@ EXPORT_SYMBOL(nfacct_attr_set); | ||
| 94 | * \param type attribute type you want to set | ||
| 95 | * \param name string that will be used to set this attribute | ||
| 96 | */ | ||
| 97 | -void | ||
| 98 | +void __EXPORT | ||
| 99 | nfacct_attr_set_str(struct nfacct *nfacct, enum nfacct_attr_type type, | ||
| 100 | const char *name) | ||
| 101 | { | ||
| 102 | nfacct_attr_set(nfacct, type, name); | ||
| 103 | } | ||
| 104 | -EXPORT_SYMBOL(nfacct_attr_set_str); | ||
| 105 | |||
| 106 | /** | ||
| 107 | * nfacct_attr_set_u64 - set one attribute the accounting object | ||
| 108 | @@ -148,20 +144,19 @@ EXPORT_SYMBOL(nfacct_attr_set_str); | ||
| 109 | * \param type attribute type you want to set | ||
| 110 | * \param value unsigned 64-bits integer | ||
| 111 | */ | ||
| 112 | -void | ||
| 113 | +void __EXPORT | ||
| 114 | nfacct_attr_set_u64(struct nfacct *nfacct, enum nfacct_attr_type type, | ||
| 115 | uint64_t value) | ||
| 116 | { | ||
| 117 | nfacct_attr_set(nfacct, type, &value); | ||
| 118 | } | ||
| 119 | -EXPORT_SYMBOL(nfacct_attr_set_u64); | ||
| 120 | |||
| 121 | /** | ||
| 122 | * nfacct_attr_unset - unset one attribute the accounting object | ||
| 123 | * \param nfacct pointer to the accounting object | ||
| 124 | * \param type attribute type you want to set | ||
| 125 | */ | ||
| 126 | -void | ||
| 127 | +void __EXPORT | ||
| 128 | nfacct_attr_unset(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 129 | { | ||
| 130 | switch(type) { | ||
| 131 | @@ -182,7 +177,6 @@ nfacct_attr_unset(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 132 | break; | ||
| 133 | } | ||
| 134 | } | ||
| 135 | -EXPORT_SYMBOL(nfacct_attr_unset); | ||
| 136 | |||
| 137 | /** | ||
| 138 | * nfacct_attr_get - get one attribute the accounting object | ||
| 139 | @@ -192,7 +186,7 @@ EXPORT_SYMBOL(nfacct_attr_unset); | ||
| 140 | * This function returns a valid pointer to the attribute data. If a | ||
| 141 | * unsupported attribute is used, this returns NULL. | ||
| 142 | */ | ||
| 143 | -const void *nfacct_attr_get(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 144 | +const void __EXPORT *nfacct_attr_get(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 145 | { | ||
| 146 | const void *ret = NULL; | ||
| 147 | |||
| 148 | @@ -220,7 +214,6 @@ const void *nfacct_attr_get(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 149 | } | ||
| 150 | return ret; | ||
| 151 | } | ||
| 152 | -EXPORT_SYMBOL(nfacct_attr_get); | ||
| 153 | |||
| 154 | /** | ||
| 155 | * nfacct_attr_get_str - get one attribute the accounting object | ||
| 156 | @@ -230,12 +223,11 @@ EXPORT_SYMBOL(nfacct_attr_get); | ||
| 157 | * This function returns a valid pointer to the beginning of the string. | ||
| 158 | * If the attribute is unsupported, this returns NULL. | ||
| 159 | */ | ||
| 160 | -const char * | ||
| 161 | +const char __EXPORT * | ||
| 162 | nfacct_attr_get_str(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 163 | { | ||
| 164 | return nfacct_attr_get(nfacct, type); | ||
| 165 | } | ||
| 166 | -EXPORT_SYMBOL(nfacct_attr_get_str); | ||
| 167 | |||
| 168 | /** | ||
| 169 | * nfacct_attr_get_u64 - get one attribute the accounting object | ||
| 170 | @@ -245,12 +237,11 @@ EXPORT_SYMBOL(nfacct_attr_get_str); | ||
| 171 | * This function returns a unsigned 64-bits integer. If the attribute is | ||
| 172 | * unsupported, this returns NULL. | ||
| 173 | */ | ||
| 174 | -uint64_t nfacct_attr_get_u64(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 175 | +uint64_t __EXPORT nfacct_attr_get_u64(struct nfacct *nfacct, enum nfacct_attr_type type) | ||
| 176 | { | ||
| 177 | const void *ret = nfacct_attr_get(nfacct, type); | ||
| 178 | return ret ? *((uint64_t *)ret) : 0; | ||
| 179 | } | ||
| 180 | -EXPORT_SYMBOL(nfacct_attr_get_u64); | ||
| 181 | |||
| 182 | static int | ||
| 183 | nfacct_snprintf_plain(char *buf, size_t rem, struct nfacct *nfacct, | ||
| 184 | @@ -424,8 +415,8 @@ err: | ||
| 185 | * This function returns -1 in case that some mandatory attributes are | ||
| 186 | * missing. On sucess, it returns 0. | ||
| 187 | */ | ||
| 188 | -int nfacct_snprintf(char *buf, size_t size, struct nfacct *nfacct, | ||
| 189 | - uint16_t type, uint16_t flags) | ||
| 190 | +int __EXPORT nfacct_snprintf(char *buf, size_t size, struct nfacct *nfacct, | ||
| 191 | + uint16_t type, uint16_t flags) | ||
| 192 | { | ||
| 193 | int ret = 0; | ||
| 194 | |||
| 195 | @@ -445,7 +436,6 @@ int nfacct_snprintf(char *buf, size_t size, struct nfacct *nfacct, | ||
| 196 | } | ||
| 197 | return ret; | ||
| 198 | } | ||
| 199 | -EXPORT_SYMBOL(nfacct_snprintf); | ||
| 200 | |||
| 201 | /** | ||
| 202 | * @} | ||
| 203 | @@ -484,7 +474,7 @@ EXPORT_SYMBOL(nfacct_snprintf); | ||
| 204 | * - Command NFNL_MSG_ACCT_DEL, to delete one specific nfacct object (if | ||
| 205 | * unused, otherwise you hit EBUSY). | ||
| 206 | */ | ||
| 207 | -struct nlmsghdr * | ||
| 208 | +struct nlmsghdr __EXPORT * | ||
| 209 | nfacct_nlmsg_build_hdr(char *buf, uint8_t cmd, uint16_t flags, uint32_t seq) | ||
| 210 | { | ||
| 211 | struct nlmsghdr *nlh; | ||
| 212 | @@ -502,14 +492,13 @@ nfacct_nlmsg_build_hdr(char *buf, uint8_t cmd, uint16_t flags, uint32_t seq) | ||
| 213 | |||
| 214 | return nlh; | ||
| 215 | } | ||
| 216 | -EXPORT_SYMBOL(nfacct_nlmsg_build_hdr); | ||
| 217 | |||
| 218 | /** | ||
| 219 | * nfacct_nlmsg_build_payload - build payload from accounting object | ||
| 220 | * \param nlh: netlink message that you want to use to add the payload. | ||
| 221 | * \param nfacct: pointer to a accounting object | ||
| 222 | */ | ||
| 223 | -void nfacct_nlmsg_build_payload(struct nlmsghdr *nlh, struct nfacct *nfacct) | ||
| 224 | +void __EXPORT nfacct_nlmsg_build_payload(struct nlmsghdr *nlh, struct nfacct *nfacct) | ||
| 225 | { | ||
| 226 | if (nfacct->bitset & (1 << NFACCT_ATTR_NAME)) | ||
| 227 | mnl_attr_put_strz(nlh, NFACCT_NAME, nfacct->name); | ||
| 228 | @@ -526,7 +515,6 @@ void nfacct_nlmsg_build_payload(struct nlmsghdr *nlh, struct nfacct *nfacct) | ||
| 229 | if (nfacct->bitset & (1 << NFACCT_ATTR_QUOTA)) | ||
| 230 | mnl_attr_put_u64(nlh, NFACCT_QUOTA, htobe64(nfacct->quota)); | ||
| 231 | } | ||
| 232 | -EXPORT_SYMBOL(nfacct_nlmsg_build_payload); | ||
| 233 | |||
| 234 | static int nfacct_nlmsg_parse_attr_cb(const struct nlattr *attr, void *data) | ||
| 235 | { | ||
| 236 | @@ -563,7 +551,7 @@ static int nfacct_nlmsg_parse_attr_cb(const struct nlattr *attr, void *data) | ||
| 237 | * This function returns -1 in case that some mandatory attributes are | ||
| 238 | * missing. On sucess, it returns 0. | ||
| 239 | */ | ||
| 240 | -int | ||
| 241 | +int __EXPORT | ||
| 242 | nfacct_nlmsg_parse_payload(const struct nlmsghdr *nlh, struct nfacct *nfacct) | ||
| 243 | { | ||
| 244 | struct nlattr *tb[NFACCT_MAX+1] = {}; | ||
| 245 | @@ -589,7 +577,6 @@ nfacct_nlmsg_parse_payload(const struct nlmsghdr *nlh, struct nfacct *nfacct) | ||
| 246 | |||
| 247 | return 0; | ||
| 248 | } | ||
| 249 | -EXPORT_SYMBOL(nfacct_nlmsg_parse_payload); | ||
| 250 | |||
| 251 | /** | ||
| 252 | * @} | ||
| 253 | -- | ||
| 254 | 2.12.2 | ||
| 255 | |||
diff --git a/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb b/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb index 0d713033c1..974035ccc7 100644 --- a/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb +++ b/meta-networking/recipes-filter/libnetfilter/libnetfilter-acct_1.0.3.bb | |||
| @@ -6,7 +6,9 @@ LICENSE = "LGPL-2.1" | |||
| 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" | 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" |
| 7 | DEPENDS = "libnfnetlink libmnl" | 7 | DEPENDS = "libnfnetlink libmnl" |
| 8 | 8 | ||
| 9 | SRC_URI = "http://ftp.netfilter.org/pub/libnetfilter_acct/libnetfilter_acct-1.0.3.tar.bz2" | 9 | SRC_URI = "http://ftp.netfilter.org/pub/libnetfilter_acct/libnetfilter_acct-1.0.3.tar.bz2 \ |
| 10 | file://0001-libnetfilter-acct-Declare-the-define-visivility-attribute-together.patch \ | ||
| 11 | " | ||
| 10 | SRC_URI[md5sum] = "814b2972b2f5c740ff87510bc109168b" | 12 | SRC_URI[md5sum] = "814b2972b2f5c740ff87510bc109168b" |
| 11 | SRC_URI[sha256sum] = "4250ceef3efe2034f4ac05906c3ee427db31b9b0a2df41b2744f4bf79a959a1a" | 13 | SRC_URI[sha256sum] = "4250ceef3efe2034f4ac05906c3ee427db31b9b0a2df41b2744f4bf79a959a1a" |
| 12 | 14 | ||
