summaryrefslogtreecommitdiff
path: root/net-libs/libnftnl
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-09-21 18:00:10 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-09-21 18:00:10 +0100
commit265dbe5dbc14c199299496c6db8fce3f76647015 (patch)
treeab18b5617d138f6684566b619405090989d55a2c /net-libs/libnftnl
parent586819755b4dbfdffdc8a725ab7c0f86095b8489 (diff)
gentoo resync : 21.09.2018
Diffstat (limited to 'net-libs/libnftnl')
-rw-r--r--net-libs/libnftnl/Manifest4
-rw-r--r--net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch93
-rw-r--r--net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch37
-rw-r--r--net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch33
-rw-r--r--net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild67
5 files changed, 234 insertions, 0 deletions
diff --git a/net-libs/libnftnl/Manifest b/net-libs/libnftnl/Manifest
index 05196ae6b9bb..ac579bd264bf 100644
--- a/net-libs/libnftnl/Manifest
+++ b/net-libs/libnftnl/Manifest
@@ -1,7 +1,11 @@
+AUX libnftnl-1.1.1-big-endian-1.patch 2069 BLAKE2B de0c7ac336dc01d25eb8f2a8ff837e35f9f95275ec1e0b1f32b113a1d2717e98d6281e3034a60a52b2f38e7b120f30dbba9137e330fe715793511ab3025843b0 SHA512 70cca0769923efc99f204608b59712862608e94d4030a1f16c5d8141896fb91c3e458054fd8e7b069014fe3279d209a7b5e7da996633e12781a28f224f0e9cf4
+AUX libnftnl-1.1.1-big-endian-2.patch 1383 BLAKE2B cae500d1ebdde1dd1d7dc7b572ab0a5b30f775b1c9b874ec889ef1bccb2981795e69107268b9ab67aad17864d648ce2c63e29ab54596dbf11072631fa868f44c SHA512 9cae1b05c3b3794219609c95ad547a51ec2249b2457531eb6be1450f0c17a5c4a91ce8b2d3694490e986dba1b587b2df8dcf4f014f6704bef7250f8ec2bfac69
+AUX libnftnl-1.1.1-big-endian-3.patch 1179 BLAKE2B 8ca66b878b2ddbe73aa361b3886e033662d585c5a6d35dfd693877b9f706cbfeec689272f8f43ea41bed77a908e69873f946f967d76bdae0fd45be6992f93b64 SHA512 c1249763339cb633ceb556d97c483f437d6fcc095253df076e46ff3c7c613455ea8296abca53656ad7fea14c7903373c115bb7344abb11acc17b67c67db4bf57
DIST libnftnl-1.0.8.tar.bz2 400496 BLAKE2B d2563f707ceb40b8cd7c4b4fdede64943fabcc8a639eb61c844f7b941786a49b1c029e375977759717e5cb8f8dc2019ddcbf48223347f868713d1a077d51d8a8 SHA512 df9f5967908ce5e6a6a85fe4328bdf6e7501ce6b0e42239b750782aeb76c30b1aae80dd07f73a06fb077d072b1269c4e0c5fd525feed1055400201567d215ef9
DIST libnftnl-1.1.0.tar.bz2 370642 BLAKE2B 3dbc0116027e863a656c55c0d65449bf3905378e84c907f0d94582c608a793952fbb83f90565304af05978b08675a6edf13ee997fd5ce0d4374a2143746691c1 SHA512 3216afbd62f5dbd78b26c2ab3acb467bca5d6a7f5fd5bb15356b9d80ffca64f9afa1d8f374701e00f1ae9e5ec282fd55c970502121330c1446032e70bb593d23
DIST libnftnl-1.1.1.tar.bz2 372562 BLAKE2B 9dee45bb485399c4677f636c8aa065a7e4e80102f17beb4aa066278a6ef753e7c1aaf02c6a853edc70f018ebef5e8389a05ca384116ec06761f0a29e278f4e54 SHA512 87f092e2b6576121538c8ac7ce92d8c918723e36dd02e2fcfcb7dcaf2ae705bbcd62c79c9076574ef73f461f7df5d10e72bcaeda29e4a7e60ea1401d998424a6
EBUILD libnftnl-1.0.8-r1.ebuild 1364 BLAKE2B 0c8ed0d675c9bd38094fde0b057b667e40cad6033f70c035c8e11d1e951fe68fac729bcde0a963d16d2acb58ada4343c35185193730a5a0ed4f0ee0045107c8c SHA512 c630c448ee80de01b0e98337314f2ac695c3a653914491db4aeb4ba1d99f9a43d532d9ff19b3ec92b619ab889a97d6788828333d90dd6bf81bbb2f2bf1cc54e7
EBUILD libnftnl-1.1.0.ebuild 1375 BLAKE2B 8176c16368b5af09f74326a79beecd990be14274cf1e643d4a71d87a260cb5513d828df70ccfb2dad2b936a0e5312be1700a4db0c6132ffdc677c80a1e391717 SHA512 bee525dc84832e27a6b80faeded252d4f5bc373bec65bb160cd1402210b1123e99d7df0e670104bc9e73f7b2e7a80a5cee5770908ca15aad3e026dc273e44549
+EBUILD libnftnl-1.1.1-r1.ebuild 1495 BLAKE2B 75d2b2cdfb8ad9e1c9b994338ef585b90fc8728bb2c5d5c1daa0111f9ccb8ea5ea8eca1d4f976bd111beb4bb5f18799f48fc41701ef56899c770a5658c84b8fe SHA512 521e8da06ad4b1e7af767e9b33985305a260776dcda48692433b491cd2c079492db2ce6d41ecd61dbe29635e572d5bf03d6581beadb42e0044575cf77cbe1ae9
EBUILD libnftnl-1.1.1.ebuild 1375 BLAKE2B 896998647d4f4b38aaebab192925ebec10d7afceacfee79dfb5250b175142c8f332ee6c20af203a0b72af9becf2676d21d334d42710146e6131ecfa5edd51c65 SHA512 d2a1f4d3b03ce8d8c44048fa049c556acb74cbc8b53a9198ca687277257452cdb9a477b9ba4e952d466a9e72e8239ce5a49815380f36231dbb837346e4636a5e
MISC metadata.xml 317 BLAKE2B ec8bdc87d1d0694e81566b611db8e455e851b86a2403ca8ac0c36f774f23b89fb9ee4e55dbc818efba807aec0487dd1956f2fb17393b327500dbe69118d5030b SHA512 bfdf498de4ccd1d1a4f78c7e94a90b2bf203e16b8ddec5949bb88c953279026f95da956ef94b39140d44bbcd8cb4008f9f4b777fd895576da8414051c4487beb
diff --git a/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch
new file mode 100644
index 000000000000..e91333e21bb0
--- /dev/null
+++ b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-1.patch
@@ -0,0 +1,93 @@
+From 9737856067b97cbb869e04fc6b6e65c1d859f521 Mon Sep 17 00:00:00 2001
+From: Phil Sutter <phil@nwl.cc>
+Date: Fri, 22 Jun 2018 14:18:57 +0200
+Subject: utils: Fix nftnl_get_value() on big endian
+
+This function basically did:
+
+| memcpy(out, val, <len of requested type>);
+
+which works only for little endian integer types. Fix this by assigning
+the 64bit input value to a variable of the right size and use that as
+input for above memcpy() call.
+
+Signed-off-by: Phil Sutter <phil@nwl.cc>
+---
+ src/utils.c | 44 ++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 42 insertions(+), 2 deletions(-)
+
+diff --git a/src/utils.c b/src/utils.c
+index 3e44960..4d9ee78 100644
+--- a/src/utils.c
++++ b/src/utils.c
+@@ -72,6 +72,15 @@ static struct {
+
+ int nftnl_get_value(enum nftnl_type type, void *val, void *out)
+ {
++ union {
++ uint8_t u8;
++ uint16_t u16;
++ uint32_t u32;
++ int8_t s8;
++ int16_t s16;
++ int32_t s32;
++ } values;
++ void *valuep = NULL;
+ int64_t sval;
+ uint64_t uval;
+
+@@ -85,7 +94,6 @@ int nftnl_get_value(enum nftnl_type type, void *val, void *out)
+ errno = ERANGE;
+ return -1;
+ }
+- memcpy(out, &uval, basetype[type].len);
+ break;
+ case NFTNL_TYPE_S8:
+ case NFTNL_TYPE_S16:
+@@ -97,10 +105,42 @@ int nftnl_get_value(enum nftnl_type type, void *val, void *out)
+ errno = ERANGE;
+ return -1;
+ }
+- memcpy(out, &sval, basetype[type].len);
+ break;
+ }
+
++ switch (type) {
++ case NFTNL_TYPE_U8:
++ values.u8 = uval;
++ valuep = &values.u8;
++ break;
++ case NFTNL_TYPE_U16:
++ values.u16 = uval;
++ valuep = &values.u16;
++ break;
++ case NFTNL_TYPE_U32:
++ values.u32 = uval;
++ valuep = &values.u32;
++ break;
++ case NFTNL_TYPE_U64:
++ valuep = &uval;
++ break;
++ case NFTNL_TYPE_S8:
++ values.s8 = sval;
++ valuep = &values.s8;
++ break;
++ case NFTNL_TYPE_S16:
++ values.s16 = sval;
++ valuep = &values.s16;
++ break;
++ case NFTNL_TYPE_S32:
++ values.s32 = sval;
++ valuep = &values.s32;
++ break;
++ case NFTNL_TYPE_S64:
++ valuep = &sval;
++ break;
++ }
++ memcpy(out, valuep, basetype[type].len);
+ return 0;
+ }
+
+--
+cgit v1.2.1
+
diff --git a/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch
new file mode 100644
index 000000000000..c6fb5a25a893
--- /dev/null
+++ b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-2.patch
@@ -0,0 +1,37 @@
+From 5d592ce6c4596b25d5779a224d03c096bc25db54 Mon Sep 17 00:00:00 2001
+From: Phil Sutter <phil@nwl.cc>
+Date: Fri, 22 Jun 2018 14:18:58 +0200
+Subject: expr/data_reg: Fix JSON parsing on big endian
+
+Since reg->len is a 32bit variable, one needs to pass NFTNL_TYPE_U32 to
+nftnl_jansson_parse_val(). Otherwise, only the most significant byte in
+that variable is being written to.
+
+Since the value could potentially be larger than 255, increase node_name
+buffer to avoid a compiler warning.
+
+Signed-off-by: Phil Sutter <phil@nwl.cc>
+---
+ src/expr/data_reg.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c
+index 1b28b29..ad7f4cb 100644
+--- a/src/expr/data_reg.c
++++ b/src/expr/data_reg.c
+@@ -59,10 +59,10 @@ static int nftnl_data_reg_verdict_json_parse(union nftnl_data_reg *reg, json_t *
+ static int nftnl_data_reg_value_json_parse(union nftnl_data_reg *reg, json_t *data,
+ struct nftnl_parse_err *err)
+ {
+- char node_name[8] = {}; /* strlen("data256") + 1 == 8 */
++ char node_name[32] = {};
+ int ret, remain = sizeof(node_name), offset = 0, i;
+
+- if (nftnl_jansson_parse_val(data, "len", NFTNL_TYPE_U8, &reg->len, err) < 0)
++ if (nftnl_jansson_parse_val(data, "len", NFTNL_TYPE_U32, &reg->len, err) < 0)
+ return DATA_NONE;
+
+ for (i = 0; i < div_round_up(reg->len, sizeof(uint32_t)); i++) {
+--
+cgit v1.2.1
+
diff --git a/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch
new file mode 100644
index 000000000000..d726ccfdc2d9
--- /dev/null
+++ b/net-libs/libnftnl/files/libnftnl-1.1.1-big-endian-3.patch
@@ -0,0 +1,33 @@
+From 043060b18d27f24fe723e39bc2c9e5f50dde60dd Mon Sep 17 00:00:00 2001
+From: Phil Sutter <phil@nwl.cc>
+Date: Fri, 22 Jun 2018 14:18:59 +0200
+Subject: expr/exthdr: Fix JSON parsing on big endian
+
+When setting NFTNL_EXPR_EXTHDR_TYPE, one needs to call
+nftnl_expr_set_u8() and not nftnl_expr_set_u32(). Otherwise 'type'
+variable is assigned to uint32_t parameter before being passed to
+nftnl_expr_exthdr_set() as void pointer which casts it to uint8_t.
+On big endian systems, the latter would only consider the most
+significant byte instead of the least significant one.
+
+Signed-off-by: Phil Sutter <phil@nwl.cc>
+---
+ src/expr/exthdr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/expr/exthdr.c b/src/expr/exthdr.c
+index 75cafbc..a351835 100644
+--- a/src/expr/exthdr.c
++++ b/src/expr/exthdr.c
+@@ -270,7 +270,7 @@ nftnl_expr_exthdr_json_parse(struct nftnl_expr *e, json_t *root,
+ type = str2exthdr_type(exthdr_type);
+ if (type < 0)
+ return -1;
+- nftnl_expr_set_u32(e, NFTNL_EXPR_EXTHDR_TYPE, type);
++ nftnl_expr_set_u8(e, NFTNL_EXPR_EXTHDR_TYPE, type);
+ }
+
+ if (nftnl_jansson_parse_val(root, "offset", NFTNL_TYPE_U32, &uval32,
+--
+cgit v1.2.1
+
diff --git a/net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild b/net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild
new file mode 100644
index 000000000000..078b64bdd182
--- /dev/null
+++ b/net-libs/libnftnl/libnftnl-1.1.1-r1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools linux-info toolchain-funcs
+
+DESCRIPTION="Netlink API to the in-kernel nf_tables subsystem"
+HOMEPAGE="https://netfilter.org/projects/nftables/"
+SRC_URI="https://netfilter.org/projects/${PN}/files/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0/7" # libnftnl.so version
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ppc ppc64 ~x86"
+IUSE="examples json static-libs test"
+
+RDEPEND=">=net-libs/libmnl-1.0.3
+ json? ( >=dev-libs/jansson-2.3 )"
+DEPEND="virtual/pkgconfig
+ ${RDEPEND}"
+
+REQUIRED_USE="test? ( json )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-big-endian-1.patch
+ "${FILESDIR}"/${P}-big-endian-2.patch
+ "${FILESDIR}"/${P}-big-endian-3.patch
+)
+
+pkg_setup() {
+ if kernel_is ge 3 13; then
+ CONFIG_CHECK="~NF_TABLES"
+ linux-info_pkg_setup
+ else
+ eerror "This package requires kernel version 3.13 or newer to work properly."
+ fi
+}
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ $(use_enable static-libs static)
+ $(use_with json json-parsing)
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ default
+ cd tests || die
+ ./test-script.sh || die
+}
+
+src_install() {
+ default
+ gen_usr_ldscript -a nftnl
+ find "${D}" -name '*.la' -delete || die "Could not rm libtool files"
+
+ if use examples; then
+ find examples/ -name 'Makefile*' -delete || die "Could not rm examples"
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}