Message ID | 877en6mhp6.fsf@husum.klickitat.com |
---|---|
State | Changes Requested |
Delegated to: | John Crispin |
Headers | show |
Series | [OpenWrt-Devel] iproute2: update to 4.17.0 | expand |
Hi, On Sun, Jun 10, 2018 at 11:54 PM Russell Senior <russell@personaltelco.net> wrote: > > > Signed-off-by: Russell Senior <russell@personaltelco.net> > --- I get the following compile issues if the rdma utility is enabled : CC rdma.o In file included from /home/dedeckeh/arm_virt_staging/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.3.0_musl_eabi/include/resolv.h:6:0, from ../include/utils.h:7, from rdma.h:25, from rdma.c:12: /home/dedeckeh/arm_virt_staging/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.3.0_musl_eabi/include/netinet/in.h:23:8: error: redefinition of 'struct in6_addr' struct in6_addr { ^~~~~~~~ In file included from ./include/uapi/rdma/rdma_user_cm.h:39:0, from rdma.h:20, from rdma.c:12: ../include/uapi/linux/in6.h:33:8: note: originally defined here struct in6_addr { ^~~~~~~~ In file included from /home/dedeckeh/arm_virt_staging/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.3.0_musl_eabi/include/resolv.h:6:0, from ../include/utils.h:7, from rdma.h:25, from rdma.c:12: /home/dedeckeh/arm_virt_staging/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.3.0_musl_eabi/include/netinet/in.h:34:8: error: redefinition of 'struct sockaddr_in6' struct sockaddr_in6 { ^~~~~~~~~~~~ In file included from ./include/uapi/rdma/rdma_user_cm.h:39:0, from rdma.h:20, from rdma.c:12: ../include/uapi/linux/in6.h:50:8: note: originally defined here struct sockaddr_in6 { ^~~~~~~~~~~~ In file included from /home/dedeckeh/arm_virt_staging/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.3.0_musl_eabi/include/resolv.h:6:0, from ../include/utils.h:7, from rdma.h:25, from rdma.c:12: /home/dedeckeh/arm_virt_staging/staging_dir/toolchain-arm_cortex-a15+neon-vfpv4_gcc-7.3.0_musl_eabi/include/netinet/in.h:42:8: error: redefinition of 'struct ipv6_mreq' struct ipv6_mreq { ^~~~~~~~~ In file included from ./include/uapi/rdma/rdma_user_cm.h:39:0, from rdma.h:20, from rdma.c:12: ../include/uapi/linux/in6.h:60:8: note: originally defined here struct ipv6_mreq { ^~~~~~~~~ make[4]: *** [../config.mk:33: rdma.o] Error 1 make[3]: *** [Makefile:70: all] Error 2 > package/network/utils/iproute2/Makefile | 6 +- > ...int-fix-hidden-64-bit-type-promotion.patch | 288 ------------------ > .../utils/iproute2/patches/008-no_netem.patch | 4 +- > .../iproute2/patches/110-extra-ccopts.patch | 2 +- > .../iproute2/patches/120-libnetlink-pic.patch | 2 +- > .../utils/iproute2/patches/300-ip_tiny.patch | 8 +- > .../iproute2/patches/950-add-cake-to-tc.patch | 11 - > 7 files changed, 11 insertions(+), 310 deletions(-) > delete mode 100644 package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch > > diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile > index 88a4851748..c5e9c5a66e 100644 > --- a/package/network/utils/iproute2/Makefile > +++ b/package/network/utils/iproute2/Makefile > @@ -8,12 +8,12 @@ > include $(TOPDIR)/rules.mk > > PKG_NAME:=iproute2 > -PKG_VERSION:=4.16.0 > -PKG_RELEASE:=3 > +PKG_VERSION:=4.17.0 > +PKG_RELEASE:=1 > > PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz > PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 > -PKG_HASH:=0c5c24020fd7349fe25728c5edee9fb6a1bc8a38f08e23be5c57a6301e55ee0a > +PKG_HASH:=6fa991b092315887775b9e47dc6a89af7ae09dd3ad4ccff754d055c566b4be6e > PKG_BUILD_PARALLEL:=1 > PKG_BUILD_DEPENDS:=iptables > PKG_LICENSE:=GPL-2.0 > diff --git a/package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch b/package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch > deleted file mode 100644 > index ad93973215..0000000000 > --- a/package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch > +++ /dev/null > @@ -1,288 +0,0 @@ > -From 8de9593bb9dc05cb1be593a237682e8707e41aa9 Mon Sep 17 00:00:00 2001 > -From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= <toke@toke.dk> > -Date: Wed, 25 Apr 2018 16:19:35 +0200 > -Subject: [PATCH] json_print: Fix hidden 64-bit type promotion > -MIME-Version: 1.0 > -Content-Type: text/plain; charset=UTF-8 > -Content-Transfer-Encoding: 8bit > - > -print_uint() will silently promote its variable type to uint64_t, but there > -is nothing that ensures that the format string specifier passed along with > -it fits (and the function name suggest to pass "%u"). > - > -Fix this by changing print_uint() to use a native 'unsigned int' type, and > -introduce a separate print_u64() function for printing 64-bit values. All > -call sites that were actually printing 64-bit values using print_uint() are > -converted to use print_u64() instead. > - > -Since print_int() was already using native int types, just add a > -print_s64() to match, but don't convert any call sites. > - > -Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> > -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> > ---- > - include/json_print.h | 4 +++- > - include/json_writer.h | 12 ++++++---- > - ip/ipaddress.c | 62 +++++++++++++++++++++++++-------------------------- > - ip/ipmacsec.c | 8 +++---- > - ip/ipmroute.c | 6 ++--- > - lib/json_print.c | 4 +++- > - lib/json_writer.c | 30 +++++++++++++++++++++---- > - 7 files changed, 78 insertions(+), 48 deletions(-) > - > ---- a/include/json_print.h > -+++ b/include/json_print.h > -@@ -56,10 +56,12 @@ void close_json_array(enum output_type t > - print_color_##type_name(t, COLOR_NONE, key, fmt, value); \ > - } > - _PRINT_FUNC(int, int); > -+_PRINT_FUNC(s64, int64_t); > - _PRINT_FUNC(bool, bool); > - _PRINT_FUNC(null, const char*); > - _PRINT_FUNC(string, const char*); > --_PRINT_FUNC(uint, uint64_t); > -+_PRINT_FUNC(uint, unsigned int); > -+_PRINT_FUNC(u64, uint64_t); > - _PRINT_FUNC(hu, unsigned short); > - _PRINT_FUNC(hex, unsigned int); > - _PRINT_FUNC(0xhex, unsigned int); > ---- a/include/json_writer.h > -+++ b/include/json_writer.h > -@@ -34,9 +34,11 @@ void jsonw_string(json_writer_t *self, c > - void jsonw_bool(json_writer_t *self, bool value); > - void jsonw_float(json_writer_t *self, double number); > - void jsonw_float_fmt(json_writer_t *self, const char *fmt, double num); > --void jsonw_uint(json_writer_t *self, uint64_t number); > -+void jsonw_uint(json_writer_t *self, unsigned int number); > -+void jsonw_u64(json_writer_t *self, uint64_t number); > - void jsonw_hu(json_writer_t *self, unsigned short number); > --void jsonw_int(json_writer_t *self, int64_t number); > -+void jsonw_int(json_writer_t *self, int number); > -+void jsonw_s64(json_writer_t *self, int64_t number); > - void jsonw_null(json_writer_t *self); > - void jsonw_lluint(json_writer_t *self, unsigned long long int num); > - > -@@ -44,9 +46,11 @@ void jsonw_lluint(json_writer_t *self, u > - void jsonw_string_field(json_writer_t *self, const char *prop, const char *val); > - void jsonw_bool_field(json_writer_t *self, const char *prop, bool value); > - void jsonw_float_field(json_writer_t *self, const char *prop, double num); > --void jsonw_uint_field(json_writer_t *self, const char *prop, uint64_t num); > -+void jsonw_uint_field(json_writer_t *self, const char *prop, unsigned int num); > -+void jsonw_u64_field(json_writer_t *self, const char *prop, uint64_t num); > - void jsonw_hu_field(json_writer_t *self, const char *prop, unsigned short num); > --void jsonw_int_field(json_writer_t *self, const char *prop, int64_t num); > -+void jsonw_int_field(json_writer_t *self, const char *prop, int num); > -+void jsonw_s64_field(json_writer_t *self, const char *prop, int64_t num); > - void jsonw_null_field(json_writer_t *self, const char *prop); > - void jsonw_lluint_field(json_writer_t *self, const char *prop, > - unsigned long long int num); > ---- a/ip/ipaddress.c > -+++ b/ip/ipaddress.c > -@@ -555,21 +555,21 @@ static void print_vf_stats64(FILE *fp, s > - > - /* RX stats */ > - open_json_object("rx"); > -- print_uint(PRINT_JSON, "bytes", NULL, > -+ print_u64(PRINT_JSON, "bytes", NULL, > - rta_getattr_u64(vf[IFLA_VF_STATS_RX_BYTES])); > -- print_uint(PRINT_JSON, "packets", NULL, > -+ print_u64(PRINT_JSON, "packets", NULL, > - rta_getattr_u64(vf[IFLA_VF_STATS_RX_PACKETS])); > -- print_uint(PRINT_JSON, "multicast", NULL, > -+ print_u64(PRINT_JSON, "multicast", NULL, > - rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST])); > -- print_uint(PRINT_JSON, "broadcast", NULL, > -+ print_u64(PRINT_JSON, "broadcast", NULL, > - rta_getattr_u64(vf[IFLA_VF_STATS_BROADCAST])); > - close_json_object(); > - > - /* TX stats */ > - open_json_object("tx"); > -- print_uint(PRINT_JSON, "tx_bytes", NULL, > -+ print_u64(PRINT_JSON, "tx_bytes", NULL, > - rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES])); > -- print_uint(PRINT_JSON, "tx_packets", NULL, > -+ print_u64(PRINT_JSON, "tx_packets", NULL, > - rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS])); > - close_json_object(); > - close_json_object(); > -@@ -602,50 +602,50 @@ static void print_link_stats64(FILE *fp, > - > - /* RX stats */ > - open_json_object("rx"); > -- print_uint(PRINT_JSON, "bytes", NULL, s->rx_bytes); > -- print_uint(PRINT_JSON, "packets", NULL, s->rx_packets); > -- print_uint(PRINT_JSON, "errors", NULL, s->rx_errors); > -- print_uint(PRINT_JSON, "dropped", NULL, s->rx_dropped); > -- print_uint(PRINT_JSON, "over_errors", NULL, s->rx_over_errors); > -- print_uint(PRINT_JSON, "multicast", NULL, s->multicast); > -+ print_u64(PRINT_JSON, "bytes", NULL, s->rx_bytes); > -+ print_u64(PRINT_JSON, "packets", NULL, s->rx_packets); > -+ print_u64(PRINT_JSON, "errors", NULL, s->rx_errors); > -+ print_u64(PRINT_JSON, "dropped", NULL, s->rx_dropped); > -+ print_u64(PRINT_JSON, "over_errors", NULL, s->rx_over_errors); > -+ print_u64(PRINT_JSON, "multicast", NULL, s->multicast); > - if (s->rx_compressed) > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "compressed", > - NULL, s->rx_compressed); > - > - /* RX error stats */ > - if (show_stats > 1) { > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "length_errors", > - NULL, s->rx_length_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "crc_errors", > - NULL, s->rx_crc_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "frame_errors", > - NULL, s->rx_frame_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "fifo_errors", > - NULL, s->rx_fifo_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "missed_errors", > - NULL, s->rx_missed_errors); > - if (s->rx_nohandler) > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "nohandler", NULL, s->rx_nohandler); > - } > - close_json_object(); > - > - /* TX stats */ > - open_json_object("tx"); > -- print_uint(PRINT_JSON, "bytes", NULL, s->tx_bytes); > -- print_uint(PRINT_JSON, "packets", NULL, s->tx_packets); > -- print_uint(PRINT_JSON, "errors", NULL, s->tx_errors); > -- print_uint(PRINT_JSON, "dropped", NULL, s->tx_dropped); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, "bytes", NULL, s->tx_bytes); > -+ print_u64(PRINT_JSON, "packets", NULL, s->tx_packets); > -+ print_u64(PRINT_JSON, "errors", NULL, s->tx_errors); > -+ print_u64(PRINT_JSON, "dropped", NULL, s->tx_dropped); > -+ print_u64(PRINT_JSON, > - "carrier_errors", > - NULL, s->tx_carrier_errors); > -- print_uint(PRINT_JSON, "collisions", NULL, s->collisions); > -+ print_u64(PRINT_JSON, "collisions", NULL, s->collisions); > - if (s->tx_compressed) > - print_uint(PRINT_JSON, > - "compressed", > -@@ -653,20 +653,20 @@ static void print_link_stats64(FILE *fp, > - > - /* TX error stats */ > - if (show_stats > 1) { > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "aborted_errors", > - NULL, s->tx_aborted_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "fifo_errors", > - NULL, s->tx_fifo_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "window_errors", > - NULL, s->tx_window_errors); > -- print_uint(PRINT_JSON, > -+ print_u64(PRINT_JSON, > - "heartbeat_errors", > - NULL, s->tx_heartbeat_errors); > - if (carrier_changes) > -- print_uint(PRINT_JSON, "carrier_changes", NULL, > -+ print_u64(PRINT_JSON, "carrier_changes", NULL, > - rta_getattr_u32(carrier_changes)); > - } > - close_json_object(); > ---- a/lib/json_print.c > -+++ b/lib/json_print.c > -@@ -117,8 +117,10 @@ void close_json_array(enum output_type t > - } \ > - } > - _PRINT_FUNC(int, int); > -+_PRINT_FUNC(s64, int64_t); > - _PRINT_FUNC(hu, unsigned short); > --_PRINT_FUNC(uint, uint64_t); > -+_PRINT_FUNC(uint, unsigned int); > -+_PRINT_FUNC(u64, uint64_t); > - _PRINT_FUNC(lluint, unsigned long long int); > - _PRINT_FUNC(float, double); > - #undef _PRINT_FUNC > ---- a/lib/json_writer.c > -+++ b/lib/json_writer.c > -@@ -215,7 +215,12 @@ void jsonw_hu(json_writer_t *self, unsig > - jsonw_printf(self, "%hu", num); > - } > - > --void jsonw_uint(json_writer_t *self, uint64_t num) > -+void jsonw_uint(json_writer_t *self, unsigned int num) > -+{ > -+ jsonw_printf(self, "%u", num); > -+} > -+ > -+void jsonw_u64(json_writer_t *self, uint64_t num) > - { > - jsonw_printf(self, "%"PRIu64, num); > - } > -@@ -225,7 +230,12 @@ void jsonw_lluint(json_writer_t *self, u > - jsonw_printf(self, "%llu", num); > - } > - > --void jsonw_int(json_writer_t *self, int64_t num) > -+void jsonw_int(json_writer_t *self, int num) > -+{ > -+ jsonw_printf(self, "%d", num); > -+} > -+ > -+void jsonw_s64(json_writer_t *self, int64_t num) > - { > - jsonw_printf(self, "%"PRId64, num); > - } > -@@ -258,12 +268,18 @@ void jsonw_float_field_fmt(json_writer_t > - jsonw_float_fmt(self, fmt, val); > - } > - > --void jsonw_uint_field(json_writer_t *self, const char *prop, uint64_t num) > -+void jsonw_uint_field(json_writer_t *self, const char *prop, unsigned int num) > - { > - jsonw_name(self, prop); > - jsonw_uint(self, num); > - } > - > -+void jsonw_u64_field(json_writer_t *self, const char *prop, uint64_t num) > -+{ > -+ jsonw_name(self, prop); > -+ jsonw_u64(self, num); > -+} > -+ > - void jsonw_hu_field(json_writer_t *self, const char *prop, unsigned short num) > - { > - jsonw_name(self, prop); > -@@ -278,12 +294,18 @@ void jsonw_lluint_field(json_writer_t *s > - jsonw_lluint(self, num); > - } > - > --void jsonw_int_field(json_writer_t *self, const char *prop, int64_t num) > -+void jsonw_int_field(json_writer_t *self, const char *prop, int num) > - { > - jsonw_name(self, prop); > - jsonw_int(self, num); > - } > - > -+void jsonw_s64_field(json_writer_t *self, const char *prop, int64_t num) > -+{ > -+ jsonw_name(self, prop); > -+ jsonw_s64(self, num); > -+} > -+ > - void jsonw_null_field(json_writer_t *self, const char *prop) > - { > - jsonw_name(self, prop); > diff --git a/package/network/utils/iproute2/patches/008-no_netem.patch b/package/network/utils/iproute2/patches/008-no_netem.patch > index 15a60e794c..58062655c9 100644 > --- a/package/network/utils/iproute2/patches/008-no_netem.patch > +++ b/package/network/utils/iproute2/patches/008-no_netem.patch > @@ -1,11 +1,11 @@ > --- a/Makefile > +++ b/Makefile > -@@ -57,7 +57,7 @@ WFLAGS += -Wmissing-declarations -Wold-s > +@@ -61,7 +61,7 @@ WFLAGS += -Wmissing-declarations -Wold-s > CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS) > YACCFLAGS = -d -t -v > > -SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma man > +SUBDIRS=lib ip tc bridge misc genl tipc devlink rdma man > > - LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a > + LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a > LDLIBS += $(LIBNETLINK) > diff --git a/package/network/utils/iproute2/patches/110-extra-ccopts.patch b/package/network/utils/iproute2/patches/110-extra-ccopts.patch > index a083b7c045..d036ba703c 100644 > --- a/package/network/utils/iproute2/patches/110-extra-ccopts.patch > +++ b/package/network/utils/iproute2/patches/110-extra-ccopts.patch > @@ -1,6 +1,6 @@ > --- a/Makefile > +++ b/Makefile > -@@ -50,7 +50,7 @@ HOSTCC ?= $(CC) > +@@ -54,7 +54,7 @@ HOSTCC ?= $(CC) > DEFINES += -D_GNU_SOURCE > # Turn on transparent support for LFS > DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE > diff --git a/package/network/utils/iproute2/patches/120-libnetlink-pic.patch b/package/network/utils/iproute2/patches/120-libnetlink-pic.patch > index 889bca28be..aad87a1e4f 100644 > --- a/package/network/utils/iproute2/patches/120-libnetlink-pic.patch > +++ b/package/network/utils/iproute2/patches/120-libnetlink-pic.patch > @@ -7,5 +7,5 @@ > -CFLAGS += -fPIC > +CFLAGS += $(FPIC) > > - UTILOBJ = utils.o rt_names.o ll_types.o ll_proto.o ll_addr.o \ > + UTILOBJ = utils.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \ > inet_proto.o namespace.o json_writer.o json_print.o \ > diff --git a/package/network/utils/iproute2/patches/300-ip_tiny.patch b/package/network/utils/iproute2/patches/300-ip_tiny.patch > index d8f39d3910..5c8af0b0f1 100644 > --- a/package/network/utils/iproute2/patches/300-ip_tiny.patch > +++ b/package/network/utils/iproute2/patches/300-ip_tiny.patch > @@ -40,7 +40,7 @@ > +" vrf | sr }\n" > +#endif > " OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n" > - " -h[uman-readable] | -iec |\n" > + " -h[uman-readable] | -iec | -j[son] | -p[retty] |\n" > " -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |\n" > @@ -73,32 +79,44 @@ static const struct cmd { > int (*func)(int argc, char **argv); > @@ -89,7 +89,7 @@ > { "help", do_help }, > --- a/lib/utils.c > +++ b/lib/utils.c > -@@ -983,6 +983,7 @@ const char *rt_addr_n2a_r(int af, int le > +@@ -1010,6 +1010,7 @@ const char *rt_addr_n2a_r(int af, int le > return inet_ntop(af, addr, buf, buflen); > case AF_MPLS: > return mpls_ntop(af, addr, buf, buflen); > @@ -97,7 +97,7 @@ > case AF_IPX: > return ipx_ntop(af, addr, buf, buflen); > case AF_DECnet: > -@@ -992,6 +993,7 @@ const char *rt_addr_n2a_r(int af, int le > +@@ -1019,6 +1020,7 @@ const char *rt_addr_n2a_r(int af, int le > memcpy(dna.a_addr, addr, 2); > return dnet_ntop(af, &dna, buf, buflen); > } > @@ -115,6 +115,6 @@ > + CFLAGS += -DIPROUTE2_TINY > +endif > + > - UTILOBJ = utils.o rt_names.o ll_types.o ll_proto.o ll_addr.o \ > + UTILOBJ = utils.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \ > inet_proto.o namespace.o json_writer.o json_print.o \ > names.o color.o bpf.o exec.o fs.o > diff --git a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch > index 3c2cdaaac3..3d9768ce24 100644 > --- a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch > +++ b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch > @@ -1508,14 +1508,3 @@ > + .print_qopt = cake_print_opt, > + .print_xstats = cake_print_xstats, > +}; > ---- a/tc/q_ingress.c > -+++ b/tc/q_ingress.c > -@@ -40,7 +40,7 @@ static int ingress_parse_opt(struct qdis > - static int ingress_print_opt(struct qdisc_util *qu, FILE *f, > - struct rtattr *opt) > - { > -- fprintf(f, "---------------- "); > -+ print_string(PRINT_FP, NULL, "---------------- ", NULL); > - return 0; > - } > - > -- > 2.17.1 > > > > -- > Russell Senior, President > russell@personaltelco.net > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/listinfo/openwrt-devel
>>>>> Hans Dedecker <dedeckeh@gmail.com> writes: > Hi, On Sun, Jun 10, 2018 at 11:54 PM Russell Senior > <russell@personaltelco.net> wrote: >> >> >> Signed-off-by: Russell Senior <russell@personaltelco.net> --- > I get the following compile issues if the rdma utility is enabled : I wonder if rdma is actually useful in openwrt. As far as I can tell it's related to infiniband interfaces, which would seem to be rare in openwrt-supported devices. Comments?
On 13/06/2018 09:00, Russell Senior wrote: >>>>>> Hans Dedecker <dedeckeh@gmail.com> writes: >> Hi, On Sun, Jun 10, 2018 at 11:54 PM Russell Senior >> <russell@personaltelco.net> wrote: >>> >>> Signed-off-by: Russell Senior <russell@personaltelco.net> --- >> I get the following compile issues if the rdma utility is enabled : > I wonder if rdma is actually useful in openwrt. As far as I can tell > it's related to infiniband interfaces, which would seem to be rare in > openwrt-supported devices. > > Comments? > OpenWrt supports x86_64 PC/server hardware too, there you just need to add a pcie card. I don't know how many people do use that, though, it still caters to a specific use-case. -Alberto
diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index 88a4851748..c5e9c5a66e 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iproute2 -PKG_VERSION:=4.16.0 -PKG_RELEASE:=3 +PKG_VERSION:=4.17.0 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 -PKG_HASH:=0c5c24020fd7349fe25728c5edee9fb6a1bc8a38f08e23be5c57a6301e55ee0a +PKG_HASH:=6fa991b092315887775b9e47dc6a89af7ae09dd3ad4ccff754d055c566b4be6e PKG_BUILD_PARALLEL:=1 PKG_BUILD_DEPENDS:=iptables PKG_LICENSE:=GPL-2.0 diff --git a/package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch b/package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch deleted file mode 100644 index ad93973215..0000000000 --- a/package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch +++ /dev/null @@ -1,288 +0,0 @@ -From 8de9593bb9dc05cb1be593a237682e8707e41aa9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= <toke@toke.dk> -Date: Wed, 25 Apr 2018 16:19:35 +0200 -Subject: [PATCH] json_print: Fix hidden 64-bit type promotion -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -print_uint() will silently promote its variable type to uint64_t, but there -is nothing that ensures that the format string specifier passed along with -it fits (and the function name suggest to pass "%u"). - -Fix this by changing print_uint() to use a native 'unsigned int' type, and -introduce a separate print_u64() function for printing 64-bit values. All -call sites that were actually printing 64-bit values using print_uint() are -converted to use print_u64() instead. - -Since print_int() was already using native int types, just add a -print_s64() to match, but don't convert any call sites. - -Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> ---- - include/json_print.h | 4 +++- - include/json_writer.h | 12 ++++++---- - ip/ipaddress.c | 62 +++++++++++++++++++++++++-------------------------- - ip/ipmacsec.c | 8 +++---- - ip/ipmroute.c | 6 ++--- - lib/json_print.c | 4 +++- - lib/json_writer.c | 30 +++++++++++++++++++++---- - 7 files changed, 78 insertions(+), 48 deletions(-) - ---- a/include/json_print.h -+++ b/include/json_print.h -@@ -56,10 +56,12 @@ void close_json_array(enum output_type t - print_color_##type_name(t, COLOR_NONE, key, fmt, value); \ - } - _PRINT_FUNC(int, int); -+_PRINT_FUNC(s64, int64_t); - _PRINT_FUNC(bool, bool); - _PRINT_FUNC(null, const char*); - _PRINT_FUNC(string, const char*); --_PRINT_FUNC(uint, uint64_t); -+_PRINT_FUNC(uint, unsigned int); -+_PRINT_FUNC(u64, uint64_t); - _PRINT_FUNC(hu, unsigned short); - _PRINT_FUNC(hex, unsigned int); - _PRINT_FUNC(0xhex, unsigned int); ---- a/include/json_writer.h -+++ b/include/json_writer.h -@@ -34,9 +34,11 @@ void jsonw_string(json_writer_t *self, c - void jsonw_bool(json_writer_t *self, bool value); - void jsonw_float(json_writer_t *self, double number); - void jsonw_float_fmt(json_writer_t *self, const char *fmt, double num); --void jsonw_uint(json_writer_t *self, uint64_t number); -+void jsonw_uint(json_writer_t *self, unsigned int number); -+void jsonw_u64(json_writer_t *self, uint64_t number); - void jsonw_hu(json_writer_t *self, unsigned short number); --void jsonw_int(json_writer_t *self, int64_t number); -+void jsonw_int(json_writer_t *self, int number); -+void jsonw_s64(json_writer_t *self, int64_t number); - void jsonw_null(json_writer_t *self); - void jsonw_lluint(json_writer_t *self, unsigned long long int num); - -@@ -44,9 +46,11 @@ void jsonw_lluint(json_writer_t *self, u - void jsonw_string_field(json_writer_t *self, const char *prop, const char *val); - void jsonw_bool_field(json_writer_t *self, const char *prop, bool value); - void jsonw_float_field(json_writer_t *self, const char *prop, double num); --void jsonw_uint_field(json_writer_t *self, const char *prop, uint64_t num); -+void jsonw_uint_field(json_writer_t *self, const char *prop, unsigned int num); -+void jsonw_u64_field(json_writer_t *self, const char *prop, uint64_t num); - void jsonw_hu_field(json_writer_t *self, const char *prop, unsigned short num); --void jsonw_int_field(json_writer_t *self, const char *prop, int64_t num); -+void jsonw_int_field(json_writer_t *self, const char *prop, int num); -+void jsonw_s64_field(json_writer_t *self, const char *prop, int64_t num); - void jsonw_null_field(json_writer_t *self, const char *prop); - void jsonw_lluint_field(json_writer_t *self, const char *prop, - unsigned long long int num); ---- a/ip/ipaddress.c -+++ b/ip/ipaddress.c -@@ -555,21 +555,21 @@ static void print_vf_stats64(FILE *fp, s - - /* RX stats */ - open_json_object("rx"); -- print_uint(PRINT_JSON, "bytes", NULL, -+ print_u64(PRINT_JSON, "bytes", NULL, - rta_getattr_u64(vf[IFLA_VF_STATS_RX_BYTES])); -- print_uint(PRINT_JSON, "packets", NULL, -+ print_u64(PRINT_JSON, "packets", NULL, - rta_getattr_u64(vf[IFLA_VF_STATS_RX_PACKETS])); -- print_uint(PRINT_JSON, "multicast", NULL, -+ print_u64(PRINT_JSON, "multicast", NULL, - rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST])); -- print_uint(PRINT_JSON, "broadcast", NULL, -+ print_u64(PRINT_JSON, "broadcast", NULL, - rta_getattr_u64(vf[IFLA_VF_STATS_BROADCAST])); - close_json_object(); - - /* TX stats */ - open_json_object("tx"); -- print_uint(PRINT_JSON, "tx_bytes", NULL, -+ print_u64(PRINT_JSON, "tx_bytes", NULL, - rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES])); -- print_uint(PRINT_JSON, "tx_packets", NULL, -+ print_u64(PRINT_JSON, "tx_packets", NULL, - rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS])); - close_json_object(); - close_json_object(); -@@ -602,50 +602,50 @@ static void print_link_stats64(FILE *fp, - - /* RX stats */ - open_json_object("rx"); -- print_uint(PRINT_JSON, "bytes", NULL, s->rx_bytes); -- print_uint(PRINT_JSON, "packets", NULL, s->rx_packets); -- print_uint(PRINT_JSON, "errors", NULL, s->rx_errors); -- print_uint(PRINT_JSON, "dropped", NULL, s->rx_dropped); -- print_uint(PRINT_JSON, "over_errors", NULL, s->rx_over_errors); -- print_uint(PRINT_JSON, "multicast", NULL, s->multicast); -+ print_u64(PRINT_JSON, "bytes", NULL, s->rx_bytes); -+ print_u64(PRINT_JSON, "packets", NULL, s->rx_packets); -+ print_u64(PRINT_JSON, "errors", NULL, s->rx_errors); -+ print_u64(PRINT_JSON, "dropped", NULL, s->rx_dropped); -+ print_u64(PRINT_JSON, "over_errors", NULL, s->rx_over_errors); -+ print_u64(PRINT_JSON, "multicast", NULL, s->multicast); - if (s->rx_compressed) -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "compressed", - NULL, s->rx_compressed); - - /* RX error stats */ - if (show_stats > 1) { -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "length_errors", - NULL, s->rx_length_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "crc_errors", - NULL, s->rx_crc_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "frame_errors", - NULL, s->rx_frame_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "fifo_errors", - NULL, s->rx_fifo_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "missed_errors", - NULL, s->rx_missed_errors); - if (s->rx_nohandler) -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "nohandler", NULL, s->rx_nohandler); - } - close_json_object(); - - /* TX stats */ - open_json_object("tx"); -- print_uint(PRINT_JSON, "bytes", NULL, s->tx_bytes); -- print_uint(PRINT_JSON, "packets", NULL, s->tx_packets); -- print_uint(PRINT_JSON, "errors", NULL, s->tx_errors); -- print_uint(PRINT_JSON, "dropped", NULL, s->tx_dropped); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, "bytes", NULL, s->tx_bytes); -+ print_u64(PRINT_JSON, "packets", NULL, s->tx_packets); -+ print_u64(PRINT_JSON, "errors", NULL, s->tx_errors); -+ print_u64(PRINT_JSON, "dropped", NULL, s->tx_dropped); -+ print_u64(PRINT_JSON, - "carrier_errors", - NULL, s->tx_carrier_errors); -- print_uint(PRINT_JSON, "collisions", NULL, s->collisions); -+ print_u64(PRINT_JSON, "collisions", NULL, s->collisions); - if (s->tx_compressed) - print_uint(PRINT_JSON, - "compressed", -@@ -653,20 +653,20 @@ static void print_link_stats64(FILE *fp, - - /* TX error stats */ - if (show_stats > 1) { -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "aborted_errors", - NULL, s->tx_aborted_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "fifo_errors", - NULL, s->tx_fifo_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "window_errors", - NULL, s->tx_window_errors); -- print_uint(PRINT_JSON, -+ print_u64(PRINT_JSON, - "heartbeat_errors", - NULL, s->tx_heartbeat_errors); - if (carrier_changes) -- print_uint(PRINT_JSON, "carrier_changes", NULL, -+ print_u64(PRINT_JSON, "carrier_changes", NULL, - rta_getattr_u32(carrier_changes)); - } - close_json_object(); ---- a/lib/json_print.c -+++ b/lib/json_print.c -@@ -117,8 +117,10 @@ void close_json_array(enum output_type t - } \ - } - _PRINT_FUNC(int, int); -+_PRINT_FUNC(s64, int64_t); - _PRINT_FUNC(hu, unsigned short); --_PRINT_FUNC(uint, uint64_t); -+_PRINT_FUNC(uint, unsigned int); -+_PRINT_FUNC(u64, uint64_t); - _PRINT_FUNC(lluint, unsigned long long int); - _PRINT_FUNC(float, double); - #undef _PRINT_FUNC ---- a/lib/json_writer.c -+++ b/lib/json_writer.c -@@ -215,7 +215,12 @@ void jsonw_hu(json_writer_t *self, unsig - jsonw_printf(self, "%hu", num); - } - --void jsonw_uint(json_writer_t *self, uint64_t num) -+void jsonw_uint(json_writer_t *self, unsigned int num) -+{ -+ jsonw_printf(self, "%u", num); -+} -+ -+void jsonw_u64(json_writer_t *self, uint64_t num) - { - jsonw_printf(self, "%"PRIu64, num); - } -@@ -225,7 +230,12 @@ void jsonw_lluint(json_writer_t *self, u - jsonw_printf(self, "%llu", num); - } - --void jsonw_int(json_writer_t *self, int64_t num) -+void jsonw_int(json_writer_t *self, int num) -+{ -+ jsonw_printf(self, "%d", num); -+} -+ -+void jsonw_s64(json_writer_t *self, int64_t num) - { - jsonw_printf(self, "%"PRId64, num); - } -@@ -258,12 +268,18 @@ void jsonw_float_field_fmt(json_writer_t - jsonw_float_fmt(self, fmt, val); - } - --void jsonw_uint_field(json_writer_t *self, const char *prop, uint64_t num) -+void jsonw_uint_field(json_writer_t *self, const char *prop, unsigned int num) - { - jsonw_name(self, prop); - jsonw_uint(self, num); - } - -+void jsonw_u64_field(json_writer_t *self, const char *prop, uint64_t num) -+{ -+ jsonw_name(self, prop); -+ jsonw_u64(self, num); -+} -+ - void jsonw_hu_field(json_writer_t *self, const char *prop, unsigned short num) - { - jsonw_name(self, prop); -@@ -278,12 +294,18 @@ void jsonw_lluint_field(json_writer_t *s - jsonw_lluint(self, num); - } - --void jsonw_int_field(json_writer_t *self, const char *prop, int64_t num) -+void jsonw_int_field(json_writer_t *self, const char *prop, int num) - { - jsonw_name(self, prop); - jsonw_int(self, num); - } - -+void jsonw_s64_field(json_writer_t *self, const char *prop, int64_t num) -+{ -+ jsonw_name(self, prop); -+ jsonw_s64(self, num); -+} -+ - void jsonw_null_field(json_writer_t *self, const char *prop) - { - jsonw_name(self, prop); diff --git a/package/network/utils/iproute2/patches/008-no_netem.patch b/package/network/utils/iproute2/patches/008-no_netem.patch index 15a60e794c..58062655c9 100644 --- a/package/network/utils/iproute2/patches/008-no_netem.patch +++ b/package/network/utils/iproute2/patches/008-no_netem.patch @@ -1,11 +1,11 @@ --- a/Makefile +++ b/Makefile -@@ -57,7 +57,7 @@ WFLAGS += -Wmissing-declarations -Wold-s +@@ -61,7 +61,7 @@ WFLAGS += -Wmissing-declarations -Wold-s CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS) YACCFLAGS = -d -t -v -SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma man +SUBDIRS=lib ip tc bridge misc genl tipc devlink rdma man - LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a + LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a LDLIBS += $(LIBNETLINK) diff --git a/package/network/utils/iproute2/patches/110-extra-ccopts.patch b/package/network/utils/iproute2/patches/110-extra-ccopts.patch index a083b7c045..d036ba703c 100644 --- a/package/network/utils/iproute2/patches/110-extra-ccopts.patch +++ b/package/network/utils/iproute2/patches/110-extra-ccopts.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -50,7 +50,7 @@ HOSTCC ?= $(CC) +@@ -54,7 +54,7 @@ HOSTCC ?= $(CC) DEFINES += -D_GNU_SOURCE # Turn on transparent support for LFS DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE diff --git a/package/network/utils/iproute2/patches/120-libnetlink-pic.patch b/package/network/utils/iproute2/patches/120-libnetlink-pic.patch index 889bca28be..aad87a1e4f 100644 --- a/package/network/utils/iproute2/patches/120-libnetlink-pic.patch +++ b/package/network/utils/iproute2/patches/120-libnetlink-pic.patch @@ -7,5 +7,5 @@ -CFLAGS += -fPIC +CFLAGS += $(FPIC) - UTILOBJ = utils.o rt_names.o ll_types.o ll_proto.o ll_addr.o \ + UTILOBJ = utils.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \ inet_proto.o namespace.o json_writer.o json_print.o \ diff --git a/package/network/utils/iproute2/patches/300-ip_tiny.patch b/package/network/utils/iproute2/patches/300-ip_tiny.patch index d8f39d3910..5c8af0b0f1 100644 --- a/package/network/utils/iproute2/patches/300-ip_tiny.patch +++ b/package/network/utils/iproute2/patches/300-ip_tiny.patch @@ -40,7 +40,7 @@ +" vrf | sr }\n" +#endif " OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n" - " -h[uman-readable] | -iec |\n" + " -h[uman-readable] | -iec | -j[son] | -p[retty] |\n" " -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |\n" @@ -73,32 +79,44 @@ static const struct cmd { int (*func)(int argc, char **argv); @@ -89,7 +89,7 @@ { "help", do_help }, --- a/lib/utils.c +++ b/lib/utils.c -@@ -983,6 +983,7 @@ const char *rt_addr_n2a_r(int af, int le +@@ -1010,6 +1010,7 @@ const char *rt_addr_n2a_r(int af, int le return inet_ntop(af, addr, buf, buflen); case AF_MPLS: return mpls_ntop(af, addr, buf, buflen); @@ -97,7 +97,7 @@ case AF_IPX: return ipx_ntop(af, addr, buf, buflen); case AF_DECnet: -@@ -992,6 +993,7 @@ const char *rt_addr_n2a_r(int af, int le +@@ -1019,6 +1020,7 @@ const char *rt_addr_n2a_r(int af, int le memcpy(dna.a_addr, addr, 2); return dnet_ntop(af, &dna, buf, buflen); } @@ -115,6 +115,6 @@ + CFLAGS += -DIPROUTE2_TINY +endif + - UTILOBJ = utils.o rt_names.o ll_types.o ll_proto.o ll_addr.o \ + UTILOBJ = utils.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \ inet_proto.o namespace.o json_writer.o json_print.o \ names.o color.o bpf.o exec.o fs.o diff --git a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch index 3c2cdaaac3..3d9768ce24 100644 --- a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch +++ b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch @@ -1508,14 +1508,3 @@ + .print_qopt = cake_print_opt, + .print_xstats = cake_print_xstats, +}; ---- a/tc/q_ingress.c -+++ b/tc/q_ingress.c -@@ -40,7 +40,7 @@ static int ingress_parse_opt(struct qdis - static int ingress_print_opt(struct qdisc_util *qu, FILE *f, - struct rtattr *opt) - { -- fprintf(f, "---------------- "); -+ print_string(PRINT_FP, NULL, "---------------- ", NULL); - return 0; - } -
Signed-off-by: Russell Senior <russell@personaltelco.net> --- package/network/utils/iproute2/Makefile | 6 +- ...int-fix-hidden-64-bit-type-promotion.patch | 288 ------------------ .../utils/iproute2/patches/008-no_netem.patch | 4 +- .../iproute2/patches/110-extra-ccopts.patch | 2 +- .../iproute2/patches/120-libnetlink-pic.patch | 2 +- .../utils/iproute2/patches/300-ip_tiny.patch | 8 +- .../iproute2/patches/950-add-cake-to-tc.patch | 11 - 7 files changed, 11 insertions(+), 310 deletions(-) delete mode 100644 package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch