diff --git a/meta/recipes-core/busybox/busybox/0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch b/meta/recipes-core/busybox/busybox/0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch new file mode 100644 index 0000000000..812a507489 --- /dev/null +++ b/meta/recipes-core/busybox/busybox/0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch @@ -0,0 +1,33 @@ +From 34ecc3b7aefdd6c31e8691bd5485037bbabedbd4 Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Sun, 14 Aug 2016 01:30:34 +0200 +Subject: [PATCH] ip: fix an improper optimization: req.r.rtm_scope may be + nonzero here + +Signed-off-by: Denys Vlasenko +--- +Upstream-Status: Backport +Signed-off-by: André Draszik + + networking/libiproute/iproute.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c +index e674e9a0d..48dc6e3d9 100644 +--- a/networking/libiproute/iproute.c ++++ b/networking/libiproute/iproute.c +@@ -362,10 +362,9 @@ IF_FEATURE_IP_RULE(ARG_table,) + req.r.rtm_scope = RT_SCOPE_NOWHERE; + + if (cmd != RTM_DELROUTE) { ++ req.r.rtm_scope = RT_SCOPE_UNIVERSE; + if (RTPROT_BOOT != 0) + req.r.rtm_protocol = RTPROT_BOOT; +- if (RT_SCOPE_UNIVERSE != 0) +- req.r.rtm_scope = RT_SCOPE_UNIVERSE; + if (RTN_UNICAST != 0) + req.r.rtm_type = RTN_UNICAST; + } +-- +2.11.0 + diff --git a/meta/recipes-core/busybox/busybox/0001-iproute-support-scope-.-Closes-8561.patch b/meta/recipes-core/busybox/busybox/0001-iproute-support-scope-.-Closes-8561.patch new file mode 100644 index 0000000000..66bc76e65e --- /dev/null +++ b/meta/recipes-core/busybox/busybox/0001-iproute-support-scope-.-Closes-8561.patch @@ -0,0 +1,122 @@ +From ce4bc1ed048233e89ee4cb95830bf6f01d523d1e Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Wed, 30 Dec 2015 17:32:51 +0100 +Subject: [PATCH] iproute: support "scope". Closes 8561 + +function old new delta +iproute_modify 1051 1120 +69 + +Signed-off-by: Denys Vlasenko + +Upstream-Status: Backport +Modified patch to build against busybox 1.24.1: +- s/invarg_1_to_2/invarg +Signed-off-by: André Draszik +--- + networking/libiproute/iproute.c | 52 ++++++++++++++++++++++++++--------------- + 1 file changed, 33 insertions(+), 19 deletions(-) + +diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c +index d232ee6fd..82827488f 100644 +--- a/networking/libiproute/iproute.c ++++ b/networking/libiproute/iproute.c +@@ -313,12 +313,13 @@ static int FAST_FUNC print_route(const struct sockaddr_nl *who UNUSED_PARAM, + static int iproute_modify(int cmd, unsigned flags, char **argv) + { + static const char keywords[] ALIGN1 = +- "src\0""via\0""mtu\0""lock\0""protocol\0"IF_FEATURE_IP_RULE("table\0") ++ "src\0""via\0""mtu\0""lock\0""scope\0""protocol\0"IF_FEATURE_IP_RULE("table\0") + "dev\0""oif\0""to\0""metric\0""onlink\0"; + enum { + ARG_src, + ARG_via, + ARG_mtu, PARM_lock, ++ ARG_scope, + ARG_protocol, + IF_FEATURE_IP_RULE(ARG_table,) + ARG_dev, +@@ -344,6 +345,7 @@ IF_FEATURE_IP_RULE(ARG_table,) + unsigned mxlock = 0; + char *d = NULL; + smalluint ok = 0; ++ smalluint scope_ok = 0; + int arg; + + memset(&req, 0, sizeof(req)); +@@ -352,15 +354,18 @@ IF_FEATURE_IP_RULE(ARG_table,) + req.n.nlmsg_flags = NLM_F_REQUEST | flags; + req.n.nlmsg_type = cmd; + req.r.rtm_family = preferred_family; +- if (RT_TABLE_MAIN) /* if it is zero, memset already did it */ ++ if (RT_TABLE_MAIN != 0) /* if it is zero, memset already did it */ + req.r.rtm_table = RT_TABLE_MAIN; +- if (RT_SCOPE_NOWHERE) ++ if (RT_SCOPE_NOWHERE != 0) + req.r.rtm_scope = RT_SCOPE_NOWHERE; + + if (cmd != RTM_DELROUTE) { +- req.r.rtm_protocol = RTPROT_BOOT; +- req.r.rtm_scope = RT_SCOPE_UNIVERSE; +- req.r.rtm_type = RTN_UNICAST; ++ if (RTPROT_BOOT != 0) ++ req.r.rtm_protocol = RTPROT_BOOT; ++ if (RT_SCOPE_UNIVERSE != 0) ++ req.r.rtm_scope = RT_SCOPE_UNIVERSE; ++ if (RTN_UNICAST != 0) ++ req.r.rtm_type = RTN_UNICAST; + } + + mxrta->rta_type = RTA_METRICS; +@@ -393,6 +398,13 @@ IF_FEATURE_IP_RULE(ARG_table,) + } + mtu = get_unsigned(*argv, "mtu"); + rta_addattr32(mxrta, sizeof(mxbuf), RTAX_MTU, mtu); ++ } else if (arg == ARG_scope) { ++ uint32_t scope; ++ NEXT_ARG(); ++ if (rtnl_rtscope_a2n(&scope, *argv)) ++ invarg(*argv, "scope"); ++ req.r.rtm_scope = scope; ++ scope_ok = 1; + } else if (arg == ARG_protocol) { + uint32_t prot; + NEXT_ARG(); +@@ -469,20 +481,22 @@ IF_FEATURE_IP_RULE(ARG_table,) + addattr_l(&req.n, sizeof(req), RTA_METRICS, RTA_DATA(mxrta), RTA_PAYLOAD(mxrta)); + } + +- if (req.r.rtm_type == RTN_LOCAL || req.r.rtm_type == RTN_NAT) +- req.r.rtm_scope = RT_SCOPE_HOST; +- else +- if (req.r.rtm_type == RTN_BROADCAST +- || req.r.rtm_type == RTN_MULTICAST +- || req.r.rtm_type == RTN_ANYCAST +- ) { +- req.r.rtm_scope = RT_SCOPE_LINK; +- } +- else if (req.r.rtm_type == RTN_UNICAST || req.r.rtm_type == RTN_UNSPEC) { +- if (cmd == RTM_DELROUTE) +- req.r.rtm_scope = RT_SCOPE_NOWHERE; +- else if (!(ok & gw_ok)) ++ if (!scope_ok) { ++ if (req.r.rtm_type == RTN_LOCAL || req.r.rtm_type == RTN_NAT) ++ req.r.rtm_scope = RT_SCOPE_HOST; ++ else ++ if (req.r.rtm_type == RTN_BROADCAST ++ || req.r.rtm_type == RTN_MULTICAST ++ || req.r.rtm_type == RTN_ANYCAST ++ ) { + req.r.rtm_scope = RT_SCOPE_LINK; ++ } ++ else if (req.r.rtm_type == RTN_UNICAST || req.r.rtm_type == RTN_UNSPEC) { ++ if (cmd == RTM_DELROUTE) ++ req.r.rtm_scope = RT_SCOPE_NOWHERE; ++ else if (!(ok & gw_ok)) ++ req.r.rtm_scope = RT_SCOPE_LINK; ++ } + } + + if (req.r.rtm_family == AF_UNSPEC) { +-- +2.11.0 + diff --git a/meta/recipes-core/busybox/busybox_1.24.1.bb b/meta/recipes-core/busybox/busybox_1.24.1.bb index a97847d7c6..6ccbffd97b 100644 --- a/meta/recipes-core/busybox/busybox_1.24.1.bb +++ b/meta/recipes-core/busybox/busybox_1.24.1.bb @@ -58,6 +58,8 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://ifupdown-pass-interface-device-name-for-ipv6-route-c.patch \ file://BUG9071_buffer_overflow_arp.patch \ file://busybox-tar-add-IF_FEATURE_-checks.patch \ + file://0001-iproute-support-scope-.-Closes-8561.patch \ + file://0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch \ " SRC_URI_append_libc-musl = " file://musl.cfg "