busybox: add upstream patch to fix send_to_from
This fixes ntpd when queries are sent to secondary IPv4 IP addresses. See https://bugs.busybox.net/show_bug.cgi?id=9146 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
parent
859d30d521
commit
39f8e46bb4
2 changed files with 38 additions and 1 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
|||
|
||||
PKG_NAME:=busybox
|
||||
PKG_VERSION:=1.25.1
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
PKG_FLAGS:=essential
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
From 7cef4817d6d6d61a1166ed7dfc13537b95c65970 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Thu, 15 Sep 2016 13:20:51 +0200
|
||||
Subject: [PATCH] libbb:/send_to_from: do not require that "to" should have the
|
||||
same AF. Closes 9146
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
---
|
||||
libbb/udp_io.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/libbb/udp_io.c
|
||||
+++ b/libbb/udp_io.c
|
||||
@@ -70,7 +70,13 @@ send_to_from(int fd, void *buf, size_t l
|
||||
msg.msg_flags = flags;
|
||||
|
||||
cmsgptr = CMSG_FIRSTHDR(&msg);
|
||||
- if (to->sa_family == AF_INET && from->sa_family == AF_INET) {
|
||||
+ /*
|
||||
+ * Users report that to->sa_family can be AF_INET6 too,
|
||||
+ * if "to" was acquired by recv_from_to(). IOW: recv_from_to()
|
||||
+ * was seen showing IPv6 "from" even when the destination
|
||||
+ * of received packet (our local address) was IPv4.
|
||||
+ */
|
||||
+ if (/* to->sa_family == AF_INET && */ from->sa_family == AF_INET) {
|
||||
struct in_pktinfo *pktptr;
|
||||
cmsgptr->cmsg_level = IPPROTO_IP;
|
||||
cmsgptr->cmsg_type = IP_PKTINFO;
|
||||
@@ -86,7 +92,7 @@ send_to_from(int fd, void *buf, size_t l
|
||||
pktptr->ipi_spec_dst = ((struct sockaddr_in*)from)->sin_addr;
|
||||
}
|
||||
# if ENABLE_FEATURE_IPV6 && defined(IPV6_PKTINFO)
|
||||
- else if (to->sa_family == AF_INET6 && from->sa_family == AF_INET6) {
|
||||
+ else if (/* to->sa_family == AF_INET6 && */ from->sa_family == AF_INET6) {
|
||||
struct in6_pktinfo *pktptr;
|
||||
cmsgptr->cmsg_level = IPPROTO_IPV6;
|
||||
cmsgptr->cmsg_type = IPV6_PKTINFO;
|
Loading…
Reference in a new issue