sys-apps/iproute2: Sync with Gentoo

It's from Gentoo commit 41395a1bb3198b2934b87b665eb217251f59aef2.
This commit is contained in:
Flatcar Buildbot 2023-09-25 07:15:47 +00:00 committed by Krzesimir Nowak
parent 429809f26f
commit 05177628d7
14 changed files with 582 additions and 730 deletions

View File

@ -1,6 +1,2 @@
DIST iproute2-5.15.0.tar.xz 858068 BLAKE2B bca20ac53e1b2b3ae06186f655ad5073a0e691ed7b3aab25c4fbc118847b72a8a522175732cd22d8ec27480d1ab142319e80a5c3628434bec21260e585e1591d SHA512 e94918fa10e523224b965c7cb5303a101745e89c90d149d2d9876a002b2a894b1c689c519dc22168f3d334c3ee0810c59ec43223baab3d5f4c56f017d6281f22
DIST iproute2-6.0.0.tar.xz 900312 BLAKE2B 1cfb9b5a7892dec2b35e0eadbd957083e95fdc5077a1aa193329801ff25f9ed90a1fc4152756547be1fab8fe18d9a399001a4c3a61e951f64946156af6a90bae SHA512 be30362b0df6906aa786f935d5f555b8b86c747fe05314066f4180ab2f7c952ae227b7cf04c15e75d8f99ca17bafb7c8dc0fb1c18f3a9e3222d98716bb449f7a
DIST iproute2-6.1.0.tar.xz 905512 BLAKE2B 38249703e0a9ba74405aebdb97560b286deefa959a9c3f0e0893962b6966f5da2da46199dda6a0f9584bb473f8ba529440643d97f66e9b7619df029e3091d163 SHA512 4e4d3b5e1e1a5444f42671c1e6caee072e80063e34e37386695f76f85a1ab662f4513050814006e5154426cbaadfba1d86b0be14e65978d5e670a16446047b28
DIST iproute2-6.2.0.tar.xz 911588 BLAKE2B d3bfaecf33ffc7861e983e8db0d6a63f4767b6c01b5346e88f51c65ed6279c4be29412ed18b8f98ed54d60a84455b73fe7745142fd0fc0f3e327a29e8bcce986 SHA512 b24e0fdd0f51b8b78bc3bb681e3829af47d3011e93f3892289eb070b336709a6883728ecc7627ca37f6449720f8ed1349af321c0d04454894a7175b82f7de151
DIST iproute2-6.3.0.tar.xz 914700 BLAKE2B a7b48c59c8a30f56ca810136f4d9f681fe38359999c260227a6229b972ce70b233d2865a6543cf3f70ed586825f9191c22d459a9fc5cc8c7dbf3ab417064c8a7 SHA512 aec1d8ceb54c8849a075ec1ce079678638e05ccaec093e8b3cbc7243b5fafea2a8c11f10930fced3df82f52d6750aa325178e44f9058e37a556ab108d4a968bf
DIST iproute2-6.4.0.tar.xz 922164 BLAKE2B 76369d2a794afd13dba1a34ee9a7425775bb7b43c22164274749c01b18d061669aa5abd51d32a15d68f48e75f4837a887dfc28ea41e34d8e4c36b2ab865628dd SHA512 42330be6e061302694ea301765ff8d3cbfaeca4b1d06e39778861e4390ed211c03cb2d41498190202b659f7f5647b1ca4857410ef8c16fd601a35e7162788d21 DIST iproute2-6.4.0.tar.xz 922164 BLAKE2B 76369d2a794afd13dba1a34ee9a7425775bb7b43c22164274749c01b18d061669aa5abd51d32a15d68f48e75f4837a887dfc28ea41e34d8e4c36b2ab865628dd SHA512 42330be6e061302694ea301765ff8d3cbfaeca4b1d06e39778861e4390ed211c03cb2d41498190202b659f7f5647b1ca4857410ef8c16fd601a35e7162788d21
DIST iproute2-6.5.0.tar.xz 925940 BLAKE2B 537a956c2fb59df25e90d7899a981e5408c5ee029df2bb87461b899ecf8fe4424a1db5d1b1b67a67bdb2555f6cc4aaf099b0544a2c92ffc3843adc3d17defb96 SHA512 615ba6924becdf08af3f491d347d84897ff0198426d65b194c87146c4527b0856fc51688b59834abe1cb6f9a70b93c66ff7ade6b7c305c1ece0fd6a29df6bc54

View File

@ -1,38 +0,0 @@
--- iproute2-4.20.0/ip/ipmonitor.c
+++ iproute2-4.20.0/ip/ipmonitor.c
@@ -118,7 +118,6 @@
case RTM_NEWPREFIX:
print_headers(fp, "[PREFIX]", ctrl);
- print_prefix(n, arg);
return 0;
case RTM_NEWRULE:
--- iproute2-4.20.0/ip/iptunnel.c
+++ iproute2-4.20.0/ip/iptunnel.c
@@ -549,13 +549,6 @@
break;
case AF_INET:
break;
- /*
- * This is silly enough but we have no easy way to make it
- * protocol-independent because of unarranged structure between
- * IPv4 and IPv6.
- */
- case AF_INET6:
- return do_ip6tunnel(argc, argv);
default:
fprintf(stderr, "Unsupported protocol family: %d\n", preferred_family);
exit(-1);
--- iproute2-4.20.0/ip/Makefile
+++ iproute2-4.20.0/ip/Makefile
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
IPOBJ=ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o ipnetns.o \
- rtm_map.o iptunnel.o ip6tunnel.o tunnel.o ipneigh.o ipntable.o iplink.o \
- ipmaddr.o ipmonitor.o ipmroute.o ipprefix.o iptuntap.o iptoken.o \
+ rtm_map.o iptunnel.o tunnel.o ipneigh.o ipntable.o iplink.o \
+ ipmaddr.o ipmonitor.o ipmroute.o iptuntap.o iptoken.o \
ipxfrm.o xfrm_state.o xfrm_policy.o xfrm_monitor.o iplink_dummy.o \
iplink_ifb.o iplink_nlmon.o iplink_team.o iplink_vcan.o iplink_vxcan.o \
iplink_vlan.o link_veth.o link_gre.o iplink_can.o iplink_xdp.o \

View File

@ -0,0 +1,242 @@
The hand-rolled configure script, for multiple options (selinux,mnl,elf), sets
a variable as well as modifying CFLAGS & LDLIBS.
If config.mk is later amended to disable a feature, the CFLAGS/LDLIBS tweaks
are still in place.
Push the CFLAGS/LDLIBS changes into new conditional Makefile code, so that they
are only passed when correctly needed.
Prior Gentoo testcase for reproduction:
USE=minimal ebuild ... compile.
- Linking with libbsd, libelf, libmnl & libcap based only on presence.
- Links based on libselinux based only on presence.
Closes: https://bugs.gentoo.org/643722
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Forward-ported from v4.14.1 to v4.16.0 by Lars Wendler <polynomial-c@gentoo.org>
Added libcap to v4.17.0 by Lars Wendler <polynomial-c@gentoo.org>
Forward-ported from v4.17.0 to v4.20.0 by Lars Wendler <polynomial-c@gentoo.org>
Forward-ported from v4.20.0 to v5.11.0 by Lars Wendler <polynomial-c@gentoo.org>
Forward-ported from v5.11.0 to v5.12.0 by Lars Wendler <polynomial-c@gentoo.org>
Update 2023-09-05: Removed libbsd enforcement from config.include for bug #911727
by Holger Hoffstätte <holger@applied-asynchrony.com>
--- iproute2-5.12.0/bridge/Makefile
+++ iproute2-5.12.0/bridge/Makefile
@@ -2,6 +2,7 @@
BROBJ = bridge.o fdb.o monitor.o link.o mdb.o vlan.o
include ../config.mk
+include ../config.include
all: bridge
--- iproute2-5.12.0/config.include
+++ iproute2-5.12.0/config.include
@@ -0,0 +1,26 @@
+# We can only modify CFLAGS/LDLIBS after all the config options are known.
+ifeq ($(IP_CONFIG_SETNS),y)
+ CFLAGS += $(IP_CONFIG_SETNS_CFLAGS)
+endif
+ifeq ($(HAVE_ELF),y)
+ CFLAGS += $(HAVE_ELF_CFLAGS)
+ LDLIBS += $(HAVE_ELF_LDLIBS)
+endif
+ifeq ($(HAVE_SELINUX),y)
+ CFLAGS += $(HAVE_SELINUX_CFLAGS)
+ LDLIBS += $(HAVE_SELINUX_LDLIBS)
+endif
+ifeq ($(HAVE_MNL),y)
+ CFLAGS += $(HAVE_MNL_CFLAGS)
+ LDLIBS += $(HAVE_MNL_LDLIBS)
+endif
+ifeq ($(HAVE_CAP),y)
+ CFLAGS += $(HAVE_CAP_CFLAGS)
+ LDLIBS += $(HAVE_CAP_LDLIBS)
+endif
+
+# Rules can only be declared after all variables in them are known.
+%.o: %.c
+ $(QUIET_CC)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+# vim: ft=make:
--- iproute2-5.12.0/configure
+++ iproute2-5.12.0/configure
@@ -195,7 +195,7 @@
if $CC -I$INCLUDE -o $TMPDIR/setnstest $TMPDIR/setnstest.c >/dev/null 2>&1; then
echo "IP_CONFIG_SETNS:=y" >>$CONFIG
echo "yes"
- echo "CFLAGS += -DHAVE_SETNS" >>$CONFIG
+ echo "IP_CONFIG_SETNS_CFLAGS += -DHAVE_SETNS" >>$CONFIG
else
echo "no"
fi
@@ -238,8 +238,8 @@
echo "HAVE_ELF:=y" >>$CONFIG
echo "yes"
- echo 'CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG
- echo 'LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG
+ echo 'HAVE_ELF_CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG
+ echo 'HAVE_ELF_LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG
else
echo "no"
fi
@@ -357,8 +357,8 @@
echo "HAVE_SELINUX:=y" >>$CONFIG
echo "yes"
- echo 'LDLIBS +=' `${PKG_CONFIG} --libs libselinux` >>$CONFIG
- echo 'CFLAGS += -DHAVE_SELINUX' `${PKG_CONFIG} --cflags libselinux` >>$CONFIG
+ echo 'HAVE_SELINUX_CFLAGS += -DHAVE_SELINUX' `${PKG_CONFIG} --cflags libselinux` >>$CONFIG
+ echo 'HAVE_SELINUX_LDLIBS +=' `${PKG_CONFIG} --libs libselinux` >>$CONFIG
else
echo "no"
fi
@@ -370,8 +370,8 @@
echo "HAVE_MNL:=y" >>$CONFIG
echo "yes"
- echo 'CFLAGS += -DHAVE_LIBMNL' `${PKG_CONFIG} libmnl --cflags` >>$CONFIG
- echo 'LDLIBS +=' `${PKG_CONFIG} libmnl --libs` >> $CONFIG
+ echo 'HAVE_MNL_CFLAGS += -DHAVE_LIBMNL' `${PKG_CONFIG} libmnl --cflags` >>$CONFIG
+ echo 'HAVE_MNL_LDLIBS +=' `${PKG_CONFIG} libmnl --libs` >> $CONFIG
else
echo "no"
fi
@@ -411,8 +411,8 @@
echo "no"
else
if ${PKG_CONFIG} libbsd --exists; then
- echo 'CFLAGS += -DHAVE_LIBBSD' `${PKG_CONFIG} libbsd --cflags` >>$CONFIG
- echo 'LDLIBS +=' `${PKG_CONFIG} libbsd --libs` >> $CONFIG
+ echo 'HAVE_LIBBSD_CFLAGS += -DHAVE_LIBBSD' `${PKG_CONFIG} libbsd --cflags` >>$CONFIG
+ echo 'HAVE_LIBBSD_LDLIBS +=' `${PKG_CONFIG} libbsd --libs` >> $CONFIG
echo "no"
else
echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG
@@ -428,8 +428,8 @@
echo "HAVE_CAP:=y" >>$CONFIG
echo "yes"
- echo 'CFLAGS += -DHAVE_LIBCAP' `${PKG_CONFIG} libcap --cflags` >>$CONFIG
- echo 'LDLIBS +=' `${PKG_CONFIG} libcap --libs` >> $CONFIG
+ echo 'HAVE_CAP_CFLAGS += -DHAVE_LIBCAP' `${PKG_CONFIG} libcap --cflags` >>$CONFIG
+ echo 'HAVE_CAP_LDLIBS +=' `${PKG_CONFIG} libcap --libs` >> $CONFIG
else
echo "no"
fi
@@ -512,7 +512,3 @@
echo -n "libcap support: "
check_cap
-
-echo >> $CONFIG
-echo "%.o: %.c" >> $CONFIG
-echo ' $(QUIET_CC)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c -o $@ $<' >> $CONFIG
--- iproute2-5.12.0/dcb/Makefile
+++ iproute2-5.12.0/dcb/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
TARGETS :=
--- iproute2-5.12.0/devlink/Makefile
+++ iproute2-5.12.0/devlink/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
TARGETS :=
--- iproute2-5.12.0/genl/Makefile
+++ iproute2-5.12.0/genl/Makefile
@@ -2,6 +2,7 @@
GENLOBJ=genl.o
include ../config.mk
+include ../config.include
SHARED_LIBS ?= y
CFLAGS += -fno-strict-aliasing
--- iproute2-5.12.0/ip/Makefile
+++ iproute2-5.12.0/ip/Makefile
@@ -16,6 +16,7 @@
RTMONOBJ=rtmon.o
include ../config.mk
+include ../config.include
ALLOBJ=$(IPOBJ) $(RTMONOBJ)
SCRIPTS=ifcfg rtpr routel routef
--- iproute2-5.12.0/lib/Makefile
+++ iproute2-5.12.0/lib/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
CFLAGS += -fPIC
--- iproute2-5.12.0/misc/Makefile
+++ iproute2-5.12.0/misc/Makefile
@@ -5,6 +5,7 @@
TARGETS=ss nstat ifstat rtacct lnstat
include ../config.mk
+include ../config.include
ifeq ($(HAVE_BERKELEY_DB),y)
TARGETS += arpd
--- iproute2-5.12.0/netem/Makefile
+++ iproute2-5.12.0/netem/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
DISTGEN = maketable normal pareto paretonormal
DISTDATA = normal.dist pareto.dist paretonormal.dist experimental.dist
--- iproute2-5.12.0/rdma/Makefile
+++ iproute2-5.12.0/rdma/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
include ../config.mk
+include ../config.include
TARGETS :=
--- iproute2-5.12.0/tc/Makefile
+++ iproute2-5.12.0/tc/Makefile
@@ -4,6 +4,7 @@
emp_ematch.tab.o emp_ematch.lex.o
include ../config.mk
+include ../config.include
SHARED_LIBS ?= y
--- iproute2-5.12.0/tipc/Makefile
+++ iproute2-5.12.0/tipc/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
TARGETS :=
--- iproute2-5.12.0/vdpa/Makefile
+++ iproute2-5.12.0/vdpa/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
TARGETS :=

View File

@ -1,39 +0,0 @@
fix UB in strncpy (e.g. truncated ip route output)
Fix overlapping buffers passed to strncpy which is UB. format_host_rta_r writes
to the buffer passed to it, so hostname (derived from b1) & b1 partly overlap.
This gets worse with sys-libs/glibc-2.37 where the ip route output can be truncated,
but it was UB anyway and you can see it occurring w/ glibc-2.36.
Bug: https://lore.kernel.org/netdev/0011AC38-4823-4D0A-8580-B108D08959C2@gentoo.org/T/#u
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30112
Thanks-to: Doug Freed <dwfreed@mtu.edu>
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -753,6 +753,7 @@ int print_route(struct nlmsghdr *n, void *arg)
int ret;
SPRINT_BUF(b1);
+ SPRINT_BUF(b2);
if (n->nlmsg_type != RTM_NEWROUTE && n->nlmsg_type != RTM_DELROUTE) {
fprintf(stderr, "Not a route: %08x %08x %08x\n",
@@ -814,7 +815,7 @@ int print_route(struct nlmsghdr *n, void *arg)
r->rtm_dst_len);
} else {
const char *hostname = format_host_rta_r(family, tb[RTA_DST],
- b1, sizeof(b1));
+ b2, sizeof(b2));
if (hostname)
strncpy(b1, hostname, sizeof(b1) - 1);
}
@@ -837,7 +838,7 @@ int print_route(struct nlmsghdr *n, void *arg)
r->rtm_src_len);
} else {
const char *hostname = format_host_rta_r(family, tb[RTA_SRC],
- b1, sizeof(b1));
+ b2, sizeof(b2));
if (hostname)
strncpy(b1, hostname, sizeof(b1) - 1);
}

View File

@ -0,0 +1,25 @@
Disable the optional libbsd fallback in favor of iproute2's own
strlcat/strlcpy routines. This prevents automagic linking and
all sorts of other related problems.
Bug: https://bugs.gentoo.org/911727
Signed-off-by: Holger Hoffstätte <holger@applied-asynchrony.com>
--- a/configure 2023-09-05 16:20:48.000000000 +0200
+++ b/configure 2023-09-05 16:29:15.850347415 +0200
@@ -454,14 +454,8 @@ EOF
if $CC -I$INCLUDE -o $TMPDIR/strtest $TMPDIR/strtest.c >/dev/null 2>&1; then
echo "no"
else
- if ${PKG_CONFIG} libbsd --exists; then
- echo 'HAVE_LIBBSD_CFLAGS += -DHAVE_LIBBSD' `${PKG_CONFIG} libbsd --cflags` >>$CONFIG
- echo 'HAVE_LIBBSD_LDLIBS +=' `${PKG_CONFIG} libbsd --libs` >> $CONFIG
- echo "no"
- else
echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG
echo "yes"
- fi
fi
rm -f $TMPDIR/strtest.c $TMPDIR/strtest
}

View File

@ -0,0 +1,246 @@
The hand-rolled configure script, for multiple options (selinux,mnl,elf), sets
a variable as well as modifying CFLAGS & LDLIBS.
If config.mk is later amended to disable a feature, the CFLAGS/LDLIBS tweaks
are still in place.
Push the CFLAGS/LDLIBS changes into new conditional Makefile code, so that they
are only passed when correctly needed.
Prior Gentoo testcase for reproduction:
USE=minimal ebuild ... compile.
- Linking with libbsd, libelf, libmnl & libcap based only on presence.
- Links based on libselinux based only on presence.
Closes: https://bugs.gentoo.org/643722
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Forward-ported from v4.14.1 to v4.16.0 by Lars Wendler <polynomial-c@gentoo.org>
Added libcap to v4.17.0 by Lars Wendler <polynomial-c@gentoo.org>
Forward-ported from v4.17.0 to v4.20.0 by Lars Wendler <polynomial-c@gentoo.org>
Forward-ported from v4.20.0 to v5.11.0 by Lars Wendler <polynomial-c@gentoo.org>
Forward-ported from v5.11.0 to v5.12.0 by Lars Wendler <polynomial-c@gentoo.org>
Update 2023-09-05: Removed libbsd enforcement from config.include for bug #911727
by Holger Hoffstätte <holger@applied-asynchrony.com>
--- a/config.include
+++ b/config.include
@@ -0,0 +1,26 @@
+# We can only modify CFLAGS/LDLIBS after all the config options are known.
+ifeq ($(IP_CONFIG_SETNS),y)
+ CFLAGS += $(IP_CONFIG_SETNS_CFLAGS)
+endif
+ifeq ($(HAVE_ELF),y)
+ CFLAGS += $(HAVE_ELF_CFLAGS)
+ LDLIBS += $(HAVE_ELF_LDLIBS)
+endif
+ifeq ($(HAVE_SELINUX),y)
+ CFLAGS += $(HAVE_SELINUX_CFLAGS)
+ LDLIBS += $(HAVE_SELINUX_LDLIBS)
+endif
+ifeq ($(HAVE_MNL),y)
+ CFLAGS += $(HAVE_MNL_CFLAGS)
+ LDLIBS += $(HAVE_MNL_LDLIBS)
+endif
+ifeq ($(HAVE_CAP),y)
+ CFLAGS += $(HAVE_CAP_CFLAGS)
+ LDLIBS += $(HAVE_CAP_LDLIBS)
+endif
+
+# Rules can only be declared after all variables in them are known.
+%.o: %.c
+ $(QUIET_CC)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+# vim: ft=make:
--- a/bridge/Makefile
+++ b/bridge/Makefile
@@ -2,6 +2,7 @@
BROBJ = bridge.o fdb.o monitor.o link.o mdb.o vlan.o vni.o
include ../config.mk
+include ../config.include
all: bridge
--- a/configure
+++ b/configure
@@ -202,7 +202,7 @@ EOF
if $CC -I$INCLUDE -o $TMPDIR/setnstest $TMPDIR/setnstest.c >/dev/null 2>&1; then
echo "IP_CONFIG_SETNS:=y" >>$CONFIG
echo "yes"
- echo "CFLAGS += -DHAVE_SETNS" >>$CONFIG
+ echo "IP_CONFIG_SETNS_CFLAGS += -DHAVE_SETNS" >>$CONFIG
else
echo "no"
fi
@@ -269,8 +269,8 @@ check_elf()
echo "HAVE_ELF:=y" >>$CONFIG
echo "yes"
- echo 'CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG
- echo 'LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG
+ echo 'HAVE_ELF_CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG
+ echo 'HAVE_ELF_LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG
else
echo "no"
fi
@@ -388,8 +388,8 @@ check_selinux()
echo "HAVE_SELINUX:=y" >>$CONFIG
echo "yes"
- echo 'LDLIBS +=' `${PKG_CONFIG} --libs libselinux` >>$CONFIG
- echo 'CFLAGS += -DHAVE_SELINUX' `${PKG_CONFIG} --cflags libselinux` >>$CONFIG
+ echo 'HAVE_SELINUX_CFLAGS += -DHAVE_SELINUX' `${PKG_CONFIG} --cflags libselinux` >>$CONFIG
+ echo 'HAVE_SELINUX_LDLIBS +=' `${PKG_CONFIG} --libs libselinux` >>$CONFIG
else
echo "no"
fi
@@ -414,8 +414,8 @@ check_mnl()
echo "HAVE_MNL:=y" >>$CONFIG
echo "yes"
- echo 'CFLAGS += -DHAVE_LIBMNL' `${PKG_CONFIG} libmnl --cflags` >>$CONFIG
- echo 'LDLIBS +=' `${PKG_CONFIG} libmnl --libs` >> $CONFIG
+ echo 'HAVE_MNL_CFLAGS += -DHAVE_LIBMNL' `${PKG_CONFIG} libmnl --cflags` >>$CONFIG
+ echo 'HAVE_MNL_LDLIBS +=' `${PKG_CONFIG} libmnl --libs` >> $CONFIG
else
echo "no"
fi
@@ -455,8 +455,8 @@ EOF
echo "no"
else
if ${PKG_CONFIG} libbsd --exists; then
- echo 'CFLAGS += -DHAVE_LIBBSD' `${PKG_CONFIG} libbsd --cflags` >>$CONFIG
- echo 'LDLIBS +=' `${PKG_CONFIG} libbsd --libs` >> $CONFIG
+ echo 'HAVE_LIBBSD_CFLAGS += -DHAVE_LIBBSD' `${PKG_CONFIG} libbsd --cflags` >>$CONFIG
+ echo 'HAVE_LIBBSD_LDLIBS +=' `${PKG_CONFIG} libbsd --libs` >> $CONFIG
echo "no"
else
echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG
@@ -472,8 +472,8 @@ check_cap()
echo "HAVE_CAP:=y" >>$CONFIG
echo "yes"
- echo 'CFLAGS += -DHAVE_LIBCAP' `${PKG_CONFIG} libcap --cflags` >>$CONFIG
- echo 'LDLIBS +=' `${PKG_CONFIG} libcap --libs` >> $CONFIG
+ echo 'HAVE_CAP_CFLAGS += -DHAVE_LIBCAP' `${PKG_CONFIG} libcap --cflags` >>$CONFIG
+ echo 'HAVE_CAP_LDLIBS +=' `${PKG_CONFIG} libcap --libs` >> $CONFIG
else
echo "no"
fi
@@ -633,7 +633,3 @@ check_strlcpy
echo -n "libcap support: "
check_cap
-
-echo >> $CONFIG
-echo "%.o: %.c" >> $CONFIG
-echo ' $(QUIET_CC)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS) -c -o $@ $<' >> $CONFIG
--- a/dcb/Makefile
+++ b/dcb/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
DCBOBJ = dcb.o \
dcb_app.o \
--- a/devlink/Makefile
+++ b/devlink/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
DEVLINKOBJ = devlink.o mnlg.o
TARGETS += devlink
--- a/genl/Makefile
+++ b/genl/Makefile
@@ -2,6 +2,7 @@
GENLOBJ=genl.o
include ../config.mk
+include ../config.include
SHARED_LIBS ?= y
CFLAGS += -fno-strict-aliasing
--- a/ip/Makefile
+++ b/ip/Makefile
@@ -18,6 +18,7 @@ IPOBJ=ip.o ipaddress.o ipaddrlabel.o iproute.o iprule.o ipnetns.o \
RTMONOBJ=rtmon.o
include ../config.mk
+include ../config.include
ALLOBJ=$(IPOBJ) $(RTMONOBJ)
SCRIPTS=routel
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
CFLAGS += -fPIC
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -5,6 +5,7 @@ LNSTATOBJ=lnstat.o lnstat_util.o
TARGETS=ss nstat ifstat rtacct lnstat
include ../config.mk
+include ../config.include
ifeq ($(HAVE_BERKELEY_DB),y)
TARGETS += arpd
--- a/netem/Makefile
+++ b/netem/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
DISTGEN = maketable normal pareto paretonormal
DISTDATA = normal.dist pareto.dist paretonormal.dist experimental.dist
--- a/rdma/Makefile
+++ b/rdma/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
include ../config.mk
+include ../config.include
CFLAGS += -I./include/uapi/
--- a/tc/Makefile
+++ b/tc/Makefile
@@ -4,6 +4,7 @@ TCOBJ= tc.o tc_qdisc.o tc_class.o tc_filter.o tc_util.o tc_monitor.o \
emp_ematch.tab.o emp_ematch.lex.o
include ../config.mk
+include ../config.include
SHARED_LIBS ?= y
--- a/tipc/Makefile
+++ b/tipc/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
TIPCOBJ=bearer.o \
cmdl.o link.o \
--- a/vdpa/Makefile
+++ b/vdpa/Makefile
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
include ../config.mk
+include ../config.include
CFLAGS += -I./include/uapi/
VDPAOBJ = vdpa.o
--
2.42.0

View File

@ -0,0 +1,50 @@
http://bugs.gentoo.org/291907
This patch was merged from two patches extracted from this thread:
http://markmail.org/thread/qkd76gpdgefpjlfn
tc_stab.c: small fixes to commandline help
tc_core.c:
As kernel part of things relies on cell align which is always set to -1,
I also added it to userspace computation stage. This way if someone
specified e.g. 2048 and 512 for mtu and tsize respectively, one wouldn't
end with tsize supporting mtu 4096 suddenly, New default mtu is also set
to 2048 (disregarding weirdness of setting mtu to such values).
Unless I missed something, this is harmless and feels cleaner, but if it's
not allowed, documentation will have to be changed back to 2047 + extra
explanation as well.
--- a/tc/tc_core.c
+++ b/tc/tc_core.c
@@ -197,12 +197,12 @@ int tc_calc_size_table(struct tc_sizespec *s, __u16 **stab)
}
if (s->mtu == 0)
- s->mtu = 2047;
+ s->mtu = 2048;
if (s->tsize == 0)
s->tsize = 512;
s->cell_log = 0;
- while ((s->mtu >> s->cell_log) > s->tsize - 1)
+ while ((s->mtu - 1 >> s->cell_log) > s->tsize - 1)
s->cell_log++;
*stab = malloc(s->tsize * sizeof(__u16));
--- a/tc/tc_stab.c
+++ b/tc/tc_stab.c
@@ -27,7 +27,7 @@ static void stab_help(void)
fprintf(stderr,
"Usage: ... stab [ mtu BYTES ] [ tsize SLOTS ] [ mpu BYTES ]\n"
" [ overhead BYTES ] [ linklayer TYPE ] ...\n"
- " mtu : max packet size we create rate map for {2047}\n"
+ " mtu : max packet size we create size table for {2048}\n"
" tsize : how many slots should size table have {512}\n"
" mpu : minimum packet size used in rate computations\n"
" overhead : per-packet size overhead used in rate computations\n"
--
2.42.0

View File

@ -1,7 +0,0 @@
diff --git a/ip/ip.c b/ip/ip.c
index 40d2998a..454da1a3 100644
--- a/ip/ip.c
+++ b/ip/ip.c
@@ -169 +169 @@ int main(int argc, char **argv)
- int color = 0;
+ int color = COLOR_OPT_AUTO;

View File

@ -1,175 +0,0 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit toolchain-funcs flag-o-matic multilib
if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git"
inherit git-r3
else
SRC_URI="https://www.kernel.org/pub/linux/utils/net/${PN}/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
fi
DESCRIPTION="kernel routing and traffic control utilities"
HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"
LICENSE="GPL-2"
SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables ipv6 libbsd minimal selinux"
# We could make libmnl optional, but it's tiny, so eh
RDEPEND="
!net-misc/arpd
!minimal? ( net-libs/libmnl:= )
atm? ( net-dialup/linux-atm )
berkdb? ( sys-libs/db:= )
bpf? ( dev-libs/libbpf:= )
caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
selinux? ( sys-libs/libselinux )
"
# We require newer linux-headers for ipset support #549948 and some defines #553876
DEPEND="
${RDEPEND}
>=sys-kernel/linux-headers-3.16
"
BDEPEND="
app-arch/xz-utils
>=sys-devel/bison-2.4
sys-devel/flex
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug 643722
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
)
doecho() {
echo "${@}"
"${@}" || die
}
src_prepare() {
if ! use ipv6 ; then
PATCHES+=(
"${FILESDIR}"/${PN}-4.20.0-no-ipv6.patch #326849
)
fi
default
# Fix version if necessary
local versionfile="include/version.h"
if [[ "${PV}" != 9999 ]] && ! grep -Fq "${PV}" ${versionfile} ; then
einfo "Fixing version string"
sed "s@\"[[:digit:]\.]\+\"@\"${PV}\"@" \
-i ${versionfile} || die
fi
# echo -n is not POSIX compliant
sed 's@echo -n@printf@' -i configure || die
sed -i \
-e '/^CC :\?=/d' \
-e "/^LIBDIR/s:=.*:=/$(get_libdir):" \
-e "s|-O2|${CFLAGS} ${CPPFLAGS}|" \
-e "/^HOSTCC/s:=.*:= $(tc-getBUILD_CC):" \
-e "/^DBM_INCLUDE/s:=.*:=${T}:" \
Makefile || die
# build against system headers
rm -r include/netinet || die #include/linux include/ip{,6}tables{,_common}.h include/libiptc
sed -i 's:TCPI_OPT_ECN_SEEN:16:' misc/ss.c || die
if use minimal ; then
sed -i -e '/^SUBDIRS=/s:=.*:=lib tc ip:' Makefile || die
fi
}
src_configure() {
tc-export AR CC PKG_CONFIG
# This sure is ugly. Should probably move into toolchain-funcs at some point.
local setns
pushd "${T}" >/dev/null
printf '#include <sched.h>\nint main(){return setns(0, 0);}\n' > test.c
${CC} ${CFLAGS} ${CPPFLAGS} -D_GNU_SOURCE ${LDFLAGS} test.c >&/dev/null && setns=y || setns=n
echo 'int main(){return 0;}' > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c -lresolv >&/dev/null || sed -i '/^LDLIBS/s:-lresolv::' "${S}"/Makefile
popd >/dev/null
# run "configure" script first which will create "config.mk"...
# Using econf breaks since 5.14.0 (a9c3d70d902a0473ee5c13336317006a52ce8242)
doecho ./configure --libbpf_force $(usex bpf on off)
# ...now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722
cat <<-EOF >> config.mk
TC_CONFIG_ATM := $(usex atm y n)
TC_CONFIG_XT := $(usex iptables y n)
TC_CONFIG_NO_XT := $(usex iptables n y)
# We've locked in recent enough kernel headers #549948
TC_CONFIG_IPSET := y
HAVE_BERKELEY_DB := $(usex berkdb y n)
HAVE_CAP := $(usex caps y n)
HAVE_MNL := $(usex minimal n y)
HAVE_ELF := $(usex elf y n)
HAVE_SELINUX := $(usex selinux y n)
IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, #144265 #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF
}
src_compile() {
emake V=1 NETNS_RUN_DIR=/run/netns
}
src_install() {
if use minimal ; then
into /
dosbin tc/tc
dobin ip/ip
return 0
fi
emake \
DESTDIR="${D}" \
PREFIX="${EPREFIX}/usr" \
LIBDIR="${EPREFIX}"/$(get_libdir) \
SBINDIR="${EPREFIX}"/sbin \
CONFDIR="${EPREFIX}"/etc/iproute2 \
DOCDIR="${EPREFIX}"/usr/share/doc/${PF} \
MANDIR="${EPREFIX}"/usr/share/man \
ARPDDIR="${EPREFIX}"/var/lib/arpd \
install
dodir /bin
mv "${ED}"/{s,}bin/ip || die #330115
dolib.a lib/libnetlink.a
insinto /usr/include
doins include/libnetlink.h
# This local header pulls in a lot of linux headers it
# doesn't directly need. Delete this header that requires
# linux-headers-3.8 until that goes stable. #467716
sed -i '/linux\/netconf.h/d' "${ED}"/usr/include/libnetlink.h || die
if use berkdb ; then
keepdir /var/lib/arpd
# bug 47482, arpd doesn't need to be in /sbin
dodir /usr/bin
mv "${ED}"/sbin/arpd "${ED}"/usr/bin/ || die
elif [[ -d "${ED}"/var/lib/arpd ]]; then
rmdir --ignore-fail-on-non-empty -p "${ED}"/var/lib/arpd || die
fi
}

View File

@ -1,215 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit edo toolchain-funcs
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git"
inherit git-r3
else
SRC_URI="https://www.kernel.org/pub/linux/utils/net/${PN}/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
fi
DESCRIPTION="kernel routing and traffic control utilities"
HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"
LICENSE="GPL-2"
SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables libbsd minimal nfs selinux split-usr"
# We could make libmnl optional, but it's tiny, so eh
RDEPEND="
!net-misc/arpd
!minimal? ( net-libs/libmnl:= )
atm? ( net-dialup/linux-atm )
berkdb? ( sys-libs/db:= )
bpf? ( dev-libs/libbpf:= )
caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
nfs? ( net-libs/libtirpc:= )
selinux? ( sys-libs/libselinux )
"
# We require newer linux-headers for ipset support (bug #549948) and some defines (bug #553876)
DEPEND="
${RDEPEND}
>=sys-kernel/linux-headers-3.16
"
BDEPEND="
app-arch/xz-utils
>=sys-devel/bison-2.4
sys-devel/flex
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug #643722
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
"${FILESDIR}"/${PN}-default-color-auto.patch
)
src_prepare() {
default
# Fix version if necessary
local versionfile="include/version.h"
if [[ ${PV} != 9999 ]] && ! grep -Fq "${PV}" ${versionfile} ; then
einfo "Fixing version string"
sed "s@\"[[:digit:]\.]\+\"@\"${PV}\"@" \
-i ${versionfile} || die
fi
# echo -n is not POSIX compliant
sed 's@echo -n@printf@' -i configure || die
sed -i \
-e '/^CC :\?=/d' \
-e "/^LIBDIR/s:=.*:=/$(get_libdir):" \
-e "s|-O2|${CFLAGS} ${CPPFLAGS}|" \
-e "/^HOSTCC/s:=.*:= $(tc-getBUILD_CC):" \
-e "/^DBM_INCLUDE/s:=.*:=${T}:" \
Makefile || die
# Build against system headers
rm -r include/netinet || die #include/linux include/ip{,6}tables{,_common}.h include/libiptc
sed -i 's:TCPI_OPT_ECN_SEEN:16:' misc/ss.c || die
if use minimal ; then
sed -i -e '/^SUBDIRS=/s:=.*:=lib tc ip:' Makefile || die
fi
}
src_configure() {
tc-export AR CC PKG_CONFIG
# This sure is ugly. Should probably move into toolchain-funcs at some point.
local setns
pushd "${T}" >/dev/null || die
printf '#include <sched.h>\nint main(){return setns(0, 0);}\n' > test.c || die
if ${CC} ${CFLAGS} ${CPPFLAGS} -D_GNU_SOURCE ${LDFLAGS} test.c >&/dev/null ; then
setns=y
else
setns=n
fi
echo 'int main(){return 0;}' > test.c || die
if ! ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c -lresolv >&/dev/null ; then
sed -i '/^LDLIBS/s:-lresolv::' "${S}"/Makefile || die
fi
popd >/dev/null || die
# run "configure" script first which will create "config.mk"...
# Using econf breaks since 5.14.0 (a9c3d70d902a0473ee5c13336317006a52ce8242)
edo ./configure --libbpf_force $(usex bpf on off)
# Remove the definitions made by configure and allow them to be overridden
# by USE flags below.
# We have to do the cheesy only-sed-if-disabled because otherwise
# the *_FLAGS etc stuff found by configure will be used but result
# in a broken build.
if ! use berkdb ; then
sed -i -e '/HAVE_BERKELEY_DB/d' config.mk || die
fi
if ! use caps ; then
sed -i -e '/HAVE_CAP/d' config.mk || die
fi
if use minimal ; then
sed -i -e '/HAVE_MNL/d' config.mk || die
fi
if ! use elf ; then
sed -i -e '/HAVE_ELF/d' config.mk || die
fi
if ! use nfs ; then
sed -i -e '/HAVE_RPC/d' config.mk || die
fi
if ! use selinux ; then
sed -i -e '/HAVE_SELINUX/d' config.mk || die
fi
if ! use libbsd ; then
sed -i -e '/HAVE_LIBBSD/d' config.mk || die
fi
# ...Now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722
# Keep in sync with ifs above, or refactor to be unified.
cat <<-EOF >> config.mk
TC_CONFIG_ATM := $(usex atm y n)
TC_CONFIG_XT := $(usex iptables y n)
TC_CONFIG_NO_XT := $(usex iptables n y)
# We've locked in recent enough kernel headers, bug #549948
TC_CONFIG_IPSET := y
HAVE_BERKELEY_DB := $(usex berkdb y n)
HAVE_CAP := $(usex caps y n)
HAVE_MNL := $(usex minimal n y)
HAVE_ELF := $(usex elf y n)
HAVE_RPC := $(usex nfs y n)
HAVE_SELINUX := $(usex selinux y n)
IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, bug #144265, bug #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF
}
src_compile() {
emake V=1 NETNS_RUN_DIR=/run/netns
}
src_install() {
if use minimal ; then
into /
dosbin tc/tc
dobin ip/ip
return 0
fi
emake \
DESTDIR="${D}" \
PREFIX="${EPREFIX}/usr" \
LIBDIR="${EPREFIX}"/$(get_libdir) \
SBINDIR="${EPREFIX}"/sbin \
CONFDIR="${EPREFIX}"/etc/iproute2 \
DOCDIR="${EPREFIX}"/usr/share/doc/${PF} \
MANDIR="${EPREFIX}"/usr/share/man \
ARPDDIR="${EPREFIX}"/var/lib/arpd \
install
dodir /bin
mv "${ED}"/{s,}bin/ip || die # bug #330115
dolib.a lib/libnetlink.a
insinto /usr/include
doins include/libnetlink.h
# Collides with net-analyzer/ifstat
# https://bugs.gentoo.org/868321
mv "${ED}"/sbin/ifstat{,-iproute2} || die
if use split-usr ; then
# Can remove compatibility symlink in a year: 2023-05-28.
# bug #547264
mv "${ED}"/sbin/ss "${ED}"/bin/ss || die
dosym -r /bin/ss /sbin/ss
fi
if use berkdb ; then
keepdir /var/lib/arpd
# bug #47482, arpd doesn't need to be in /sbin
dodir /usr/bin
mv "${ED}"/sbin/arpd "${ED}"/usr/bin/ || die
elif [[ -d "${ED}"/var/lib/arpd ]]; then
rmdir --ignore-fail-on-non-empty -p "${ED}"/var/lib/arpd || die
fi
}

View File

@ -1,220 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit edo toolchain-funcs
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git"
inherit git-r3
else
SRC_URI="https://www.kernel.org/pub/linux/utils/net/${PN}/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
fi
DESCRIPTION="kernel routing and traffic control utilities"
HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"
LICENSE="GPL-2"
SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables libbsd minimal nfs selinux split-usr"
# Needs root
RESTRICT="test"
# We could make libmnl optional, but it's tiny, so eh
RDEPEND="
!net-misc/arpd
!minimal? ( net-libs/libmnl:= )
atm? ( net-dialup/linux-atm )
berkdb? ( sys-libs/db:= )
bpf? ( dev-libs/libbpf:= )
caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
nfs? ( net-libs/libtirpc:= )
selinux? ( sys-libs/libselinux )
"
# We require newer linux-headers for ipset support (bug #549948) and some defines (bug #553876)
DEPEND="
${RDEPEND}
>=sys-kernel/linux-headers-3.16
"
BDEPEND="
app-arch/xz-utils
>=sys-devel/bison-2.4
sys-devel/flex
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug #643722
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
)
src_prepare() {
default
# Fix version if necessary
local versionfile="include/version.h"
if [[ ${PV} != 9999 ]] && ! grep -Fq "${PV}" ${versionfile} ; then
einfo "Fixing version string"
sed "s@\"[[:digit:]\.]\+\"@\"${PV}\"@" \
-i ${versionfile} || die
fi
# echo -n is not POSIX compliant
sed 's@echo -n@printf@' -i configure || die
sed -i \
-e '/^CC :\?=/d' \
-e "/^LIBDIR/s:=.*:=/$(get_libdir):" \
-e "s|-O2|${CFLAGS} ${CPPFLAGS}|" \
-e "/^HOSTCC/s:=.*:= $(tc-getBUILD_CC):" \
-e "/^DBM_INCLUDE/s:=.*:=${T}:" \
Makefile || die
# Build against system headers
rm -r include/netinet || die #include/linux include/ip{,6}tables{,_common}.h include/libiptc
sed -i 's:TCPI_OPT_ECN_SEEN:16:' misc/ss.c || die
if use minimal ; then
sed -i -e '/^SUBDIRS=/s:=.*:=lib tc ip:' Makefile || die
fi
}
src_configure() {
tc-export AR CC PKG_CONFIG
# This sure is ugly. Should probably move into toolchain-funcs at some point.
local setns
pushd "${T}" >/dev/null || die
printf '#include <sched.h>\nint main(){return setns(0, 0);}\n' > test.c || die
if ${CC} ${CFLAGS} ${CPPFLAGS} -D_GNU_SOURCE ${LDFLAGS} test.c >&/dev/null ; then
setns=y
else
setns=n
fi
echo 'int main(){return 0;}' > test.c || die
if ! ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c -lresolv >&/dev/null ; then
sed -i '/^LDLIBS/s:-lresolv::' "${S}"/Makefile || die
fi
popd >/dev/null || die
# run "configure" script first which will create "config.mk"...
# Using econf breaks since 5.14.0 (a9c3d70d902a0473ee5c13336317006a52ce8242)
edo ./configure --libbpf_force $(usex bpf on off)
# Remove the definitions made by configure and allow them to be overridden
# by USE flags below.
# We have to do the cheesy only-sed-if-disabled because otherwise
# the *_FLAGS etc stuff found by configure will be used but result
# in a broken build.
if ! use berkdb ; then
sed -i -e '/HAVE_BERKELEY_DB/d' config.mk || die
fi
if ! use caps ; then
sed -i -e '/HAVE_CAP/d' config.mk || die
fi
if use minimal ; then
sed -i -e '/HAVE_MNL/d' config.mk || die
fi
if ! use elf ; then
sed -i -e '/HAVE_ELF/d' config.mk || die
fi
if ! use nfs ; then
sed -i -e '/HAVE_RPC/d' config.mk || die
fi
if ! use selinux ; then
sed -i -e '/HAVE_SELINUX/d' config.mk || die
fi
if ! use libbsd ; then
sed -i -e '/HAVE_LIBBSD/d' config.mk || die
fi
# ...Now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722
# Keep in sync with ifs above, or refactor to be unified.
cat <<-EOF >> config.mk
TC_CONFIG_ATM := $(usex atm y n)
TC_CONFIG_XT := $(usex iptables y n)
TC_CONFIG_NO_XT := $(usex iptables n y)
# We've locked in recent enough kernel headers, bug #549948
TC_CONFIG_IPSET := y
HAVE_BERKELEY_DB := $(usex berkdb y n)
HAVE_CAP := $(usex caps y n)
HAVE_MNL := $(usex minimal n y)
HAVE_ELF := $(usex elf y n)
HAVE_RPC := $(usex nfs y n)
HAVE_SELINUX := $(usex selinux y n)
IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, bug #144265, bug #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF
}
src_compile() {
emake V=1 NETNS_RUN_DIR=/run/netns
}
src_test() {
emake check
}
src_install() {
if use minimal ; then
into /
dosbin tc/tc
dobin ip/ip
return 0
fi
emake \
DESTDIR="${D}" \
PREFIX="${EPREFIX}/usr" \
LIBDIR="${EPREFIX}"/$(get_libdir) \
SBINDIR="${EPREFIX}"/sbin \
CONFDIR="${EPREFIX}"/etc/iproute2 \
DOCDIR="${EPREFIX}"/usr/share/doc/${PF} \
MANDIR="${EPREFIX}"/usr/share/man \
ARPDDIR="${EPREFIX}"/var/lib/arpd \
install
dodir /bin
mv "${ED}"/{s,}bin/ip || die # bug #330115
dolib.a lib/libnetlink.a
insinto /usr/include
doins include/libnetlink.h
# Collides with net-analyzer/ifstat
# https://bugs.gentoo.org/868321
mv "${ED}"/sbin/ifstat{,-iproute2} || die
if use split-usr ; then
# Can remove compatibility symlink in a year: 2023-05-28.
# bug #547264
mv "${ED}"/sbin/ss "${ED}"/bin/ss || die
dosym -r /bin/ss /sbin/ss
fi
if use berkdb ; then
keepdir /var/lib/arpd
# bug #47482, arpd doesn't need to be in /sbin
dodir /usr/bin
mv "${ED}"/sbin/arpd "${ED}"/usr/bin/ || die
elif [[ -d "${ED}"/var/lib/arpd ]]; then
rmdir --ignore-fail-on-non-empty -p "${ED}"/var/lib/arpd || die
fi
}

View File

@ -18,7 +18,9 @@ HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables libbsd minimal nfs selinux split-usr" IUSE="atm berkdb bpf caps elf +iptables minimal nfs selinux split-usr"
# Needs root
RESTRICT="test"
# We could make libmnl optional, but it's tiny, so eh # We could make libmnl optional, but it's tiny, so eh
RDEPEND=" RDEPEND="
@ -30,7 +32,6 @@ RDEPEND="
caps? ( sys-libs/libcap ) caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= ) elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= ) iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
nfs? ( net-libs/libtirpc:= ) nfs? ( net-libs/libtirpc:= )
selinux? ( sys-libs/libselinux ) selinux? ( sys-libs/libselinux )
" "
@ -48,11 +49,10 @@ BDEPEND="
PATCHES=( PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907 "${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug #643722 "${FILESDIR}"/${PN}-5.12.0-configure-nomagic-nolibbsd.patch # bug #643722 & #911727
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch "${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
"${FILESDIR}"/${PN}-default-color-auto.patch "${FILESDIR}"/${PN}-6.4.0-add-missing-limits.h-include.patch
"${FILESDIR}"/${PN}-6.1.0-strncpy-overlap.patch "${FILESDIR}"/${PN}-6.4.0-disable-libbsd-fallback.patch # bug #911727
) )
src_prepare() { src_prepare() {
@ -138,10 +138,6 @@ src_configure() {
sed -i -e '/HAVE_SELINUX/d' config.mk || die sed -i -e '/HAVE_SELINUX/d' config.mk || die
fi fi
if ! use libbsd ; then
sed -i -e '/HAVE_LIBBSD/d' config.mk || die
fi
# ...Now switch on/off requested features via USE flags # ...Now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722 # this is only useful if the test did not set other things, per bug #643722
# Keep in sync with ifs above, or refactor to be unified. # Keep in sync with ifs above, or refactor to be unified.
@ -160,7 +156,6 @@ src_configure() {
IP_CONFIG_SETNS := ${setns} IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, bug #144265, bug #293709 # Use correct iptables dir, bug #144265, bug #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir) IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF EOF
} }
@ -168,6 +163,10 @@ src_compile() {
emake V=1 NETNS_RUN_DIR=/run/netns emake V=1 NETNS_RUN_DIR=/run/netns
} }
src_test() {
emake check
}
src_install() { src_install() {
if use minimal ; then if use minimal ; then
into / into /

View File

@ -10,7 +10,7 @@ if [[ ${PV} == 9999 ]] ; then
inherit git-r3 inherit git-r3
else else
SRC_URI="https://www.kernel.org/pub/linux/utils/net/${PN}/${P}.tar.xz" SRC_URI="https://www.kernel.org/pub/linux/utils/net/${PN}/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi fi
DESCRIPTION="kernel routing and traffic control utilities" DESCRIPTION="kernel routing and traffic control utilities"
@ -18,7 +18,7 @@ HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables libbsd minimal nfs selinux split-usr" IUSE="atm berkdb bpf caps elf +iptables minimal nfs selinux split-usr"
# Needs root # Needs root
RESTRICT="test" RESTRICT="test"
@ -32,7 +32,6 @@ RDEPEND="
caps? ( sys-libs/libcap ) caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= ) elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= ) iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
nfs? ( net-libs/libtirpc:= ) nfs? ( net-libs/libtirpc:= )
selinux? ( sys-libs/libselinux ) selinux? ( sys-libs/libselinux )
" "
@ -49,10 +48,10 @@ BDEPEND="
" "
PATCHES=( PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907 "${FILESDIR}"/${PN}-6.5.0-mtu.patch # bug #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug #643722 "${FILESDIR}"/${PN}-6.5.0-configure-nomagic-nolibbsd.patch # bug #643722 & #911727
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch "${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
"${FILESDIR}"/${PN}-6.4.0-disable-libbsd-fallback.patch # bug #911727
) )
src_prepare() { src_prepare() {
@ -138,10 +137,6 @@ src_configure() {
sed -i -e '/HAVE_SELINUX/d' config.mk || die sed -i -e '/HAVE_SELINUX/d' config.mk || die
fi fi
if ! use libbsd ; then
sed -i -e '/HAVE_LIBBSD/d' config.mk || die
fi
# ...Now switch on/off requested features via USE flags # ...Now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722 # this is only useful if the test did not set other things, per bug #643722
# Keep in sync with ifs above, or refactor to be unified. # Keep in sync with ifs above, or refactor to be unified.
@ -160,7 +155,6 @@ src_configure() {
IP_CONFIG_SETNS := ${setns} IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, bug #144265, bug #293709 # Use correct iptables dir, bug #144265, bug #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir) IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF EOF
} }

View File

@ -18,7 +18,7 @@ HOMEPAGE="https://wiki.linuxfoundation.org/networking/iproute2"
LICENSE="GPL-2" LICENSE="GPL-2"
SLOT="0" SLOT="0"
IUSE="atm berkdb bpf caps elf +iptables libbsd minimal nfs selinux split-usr" IUSE="atm berkdb bpf caps elf +iptables minimal nfs selinux split-usr"
# Needs root # Needs root
RESTRICT="test" RESTRICT="test"
@ -32,7 +32,6 @@ RDEPEND="
caps? ( sys-libs/libcap ) caps? ( sys-libs/libcap )
elf? ( virtual/libelf:= ) elf? ( virtual/libelf:= )
iptables? ( >=net-firewall/iptables-1.4.20:= ) iptables? ( >=net-firewall/iptables-1.4.20:= )
libbsd? ( dev-libs/libbsd )
nfs? ( net-libs/libtirpc:= ) nfs? ( net-libs/libtirpc:= )
selinux? ( sys-libs/libselinux ) selinux? ( sys-libs/libselinux )
" "
@ -50,9 +49,9 @@ BDEPEND="
PATCHES=( PATCHES=(
"${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907 "${FILESDIR}"/${PN}-3.1.0-mtu.patch # bug #291907
"${FILESDIR}"/${PN}-5.12.0-configure-nomagic.patch # bug #643722 "${FILESDIR}"/${PN}-5.12.0-configure-nomagic-nolibbsd.patch # bug #643722 & 911727
#"${FILESDIR}"/${PN}-5.1.0-portability.patch
"${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch "${FILESDIR}"/${PN}-5.7.0-mix-signal.h-include.patch
"${FILESDIR}"/${PN}-6.4.0-disable-libbsd-fallback.patch # bug #911727
) )
src_prepare() { src_prepare() {
@ -138,10 +137,6 @@ src_configure() {
sed -i -e '/HAVE_SELINUX/d' config.mk || die sed -i -e '/HAVE_SELINUX/d' config.mk || die
fi fi
if ! use libbsd ; then
sed -i -e '/HAVE_LIBBSD/d' config.mk || die
fi
# ...Now switch on/off requested features via USE flags # ...Now switch on/off requested features via USE flags
# this is only useful if the test did not set other things, per bug #643722 # this is only useful if the test did not set other things, per bug #643722
# Keep in sync with ifs above, or refactor to be unified. # Keep in sync with ifs above, or refactor to be unified.
@ -160,7 +155,6 @@ src_configure() {
IP_CONFIG_SETNS := ${setns} IP_CONFIG_SETNS := ${setns}
# Use correct iptables dir, bug #144265, bug #293709 # Use correct iptables dir, bug #144265, bug #293709
IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir) IPT_LIB_DIR := $(use iptables && ${PKG_CONFIG} xtables --variable=xtlibdir)
HAVE_LIBBSD := $(usex libbsd y n)
EOF EOF
} }