Module Name: src
Committed By: martin
Date: Sat Aug 25 11:38:19 UTC 2018
Modified Files:
src/doc [netbsd-8]: 3RDPARTY
src/external/bsd/dhcpcd/dist/src [netbsd-8]: defs.h dhcp.c dhcp6.c
if-bsd.c if.c ipv4.c ipv6.c
Log Message:
Sync to head the following, requested by roy in ticket #981:
external/bsd/dhcpcd/dist/src/defs.h up to 1.1.1.16
external/bsd/dhcpcd/dist/src/dhcp.c up to 1.13
external/bsd/dhcpcd/dist/src/dhcp6.c up to 1.1.1.13
external/bsd/dhcpcd/dist/src/if-bsd.c up to 1.1.1.9
external/bsd/dhcpcd/dist/src/if.c up to 1.1.1.9
external/bsd/dhcpcd/dist/src/ipv4.c up to 1.1.1.10
external/bsd/dhcpcd/dist/src/ipv6.c up to 1.1.1.12
doc/3RDPARTY (manually edited)
Import dhcpcd-7.0.8 with the following changes:
* Don't use IP_PKTINFO on NetBSD-7 as it's incomplete.
* Workaround RTM_NEWADDR sending the wrong broadcast address
on NetBSD-7.
* Silence diagnostics if an address vanishes when reading
it's flags on all BSD's.
* Misc compiler warnings fixed.
To generate a diff of this commit:
cvs rdiff -u -r1.1444.2.16 -r1.1444.2.17 src/doc/3RDPARTY
cvs rdiff -u -r1.1.1.4.2.5 -r1.1.1.4.2.6 \
src/external/bsd/dhcpcd/dist/src/defs.h
cvs rdiff -u -r1.1.1.3.8.4 -r1.1.1.3.8.5 \
src/external/bsd/dhcpcd/dist/src/dhcp.c
cvs rdiff -u -r1.1.1.4.2.3 -r1.1.1.4.2.4 \
src/external/bsd/dhcpcd/dist/src/dhcp6.c
cvs rdiff -u -r1.1.1.3.2.3 -r1.1.1.3.2.4 \
src/external/bsd/dhcpcd/dist/src/if-bsd.c
cvs rdiff -u -r1.1.1.3.2.2 -r1.1.1.3.2.3 \
src/external/bsd/dhcpcd/dist/src/if.c \
src/external/bsd/dhcpcd/dist/src/ipv4.c
cvs rdiff -u -r1.1.1.3.2.4 -r1.1.1.3.2.5 \
src/external/bsd/dhcpcd/dist/src/ipv6.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/doc/3RDPARTY
diff -u src/doc/3RDPARTY:1.1444.2.16 src/doc/3RDPARTY:1.1444.2.17
--- src/doc/3RDPARTY:1.1444.2.16 Sat Aug 11 14:54:49 2018
+++ src/doc/3RDPARTY Sat Aug 25 11:38:19 2018
@@ -1,4 +1,4 @@
-# $NetBSD: 3RDPARTY,v 1.1444.2.16 2018/08/11 14:54:49 martin Exp $
+# $NetBSD: 3RDPARTY,v 1.1444.2.17 2018/08/25 11:38:19 martin Exp $
#
# This file contains a list of the software that has been integrated into
# NetBSD where we are not the primary maintainer.
@@ -334,8 +334,8 @@ Notes:
Use the dhcp2netbsd script.
Package: dhcpcd
-Version: 7.0.7
-Current Vers: 7.0.7
+Version: 7.0.8
+Current Vers: 7.0.8
Maintainer: roy
Archive Site: ftp://roy.marples.name/pub/dhcpcd/
Home Page: http://roy.marples.name/projects/dhcpcd/
Index: src/external/bsd/dhcpcd/dist/src/defs.h
diff -u src/external/bsd/dhcpcd/dist/src/defs.h:1.1.1.4.2.5 src/external/bsd/dhcpcd/dist/src/defs.h:1.1.1.4.2.6
--- src/external/bsd/dhcpcd/dist/src/defs.h:1.1.1.4.2.5 Fri Jul 27 10:22:52 2018
+++ src/external/bsd/dhcpcd/dist/src/defs.h Sat Aug 25 11:38:19 2018
@@ -28,7 +28,7 @@
#define CONFIG_H
#define PACKAGE "dhcpcd"
-#define VERSION "7.0.7"
+#define VERSION "7.0.8"
#ifndef CONFIG
# define CONFIG SYSCONFDIR "/" PACKAGE ".conf"
Index: src/external/bsd/dhcpcd/dist/src/dhcp.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcp.c:1.1.1.3.8.4 src/external/bsd/dhcpcd/dist/src/dhcp.c:1.1.1.3.8.5
--- src/external/bsd/dhcpcd/dist/src/dhcp.c:1.1.1.3.8.4 Thu Jun 7 18:34:03 2018
+++ src/external/bsd/dhcpcd/dist/src/dhcp.c Sat Aug 25 11:38:19 2018
@@ -86,6 +86,11 @@
#define IPDEFTTL 64 /* RFC1340 */
#endif
+/* NetBSD-7 has an incomplete IP_PKTINFO implementation. */
+#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 800000000
+#undef IP_PKTINFO
+#endif
+
/* Assert the correct structure size for on wire */
__CTASSERT(sizeof(struct ip) == 20);
__CTASSERT(sizeof(struct udphdr) == 8);
@@ -3267,7 +3272,7 @@ get_udp_data(void *udp, size_t *len)
struct bootp_pkt *p;
p = (struct bootp_pkt *)udp;
- *len = ntohs(p->ip.ip_len) - sizeof(p->ip) - sizeof(p->udp);
+ *len = (size_t)ntohs(p->ip.ip_len) - sizeof(p->ip) - sizeof(p->udp);
return (char *)udp + offsetof(struct bootp_pkt, bootp);
}
Index: src/external/bsd/dhcpcd/dist/src/dhcp6.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.1.1.4.2.3 src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.1.1.4.2.4
--- src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.1.1.4.2.3 Thu Jun 7 18:34:03 2018
+++ src/external/bsd/dhcpcd/dist/src/dhcp6.c Sat Aug 25 11:38:19 2018
@@ -777,7 +777,6 @@ dhcp6_makemessage(struct interface *ifp)
/* FALLTHROUGH */
case DH6S_INIT:
for (l = 0; l < ifo->ia_len; l++) {
- ifia = &ifo->ia[l];
len += sizeof(o) + sizeof(uint32_t); /* IAID */
/* IA_TA does not have T1 or T2 timers */
if (ifo->ia[l].ia_type != D6_OPTION_IA_TA)
Index: src/external/bsd/dhcpcd/dist/src/if-bsd.c
diff -u src/external/bsd/dhcpcd/dist/src/if-bsd.c:1.1.1.3.2.3 src/external/bsd/dhcpcd/dist/src/if-bsd.c:1.1.1.3.2.4
--- src/external/bsd/dhcpcd/dist/src/if-bsd.c:1.1.1.3.2.3 Thu Jun 7 18:34:03 2018
+++ src/external/bsd/dhcpcd/dist/src/if-bsd.c Sat Aug 25 11:38:19 2018
@@ -1103,9 +1103,32 @@ if_ifa(struct dhcpcd_ctx *ctx, const str
sin = (const void *)rti_info[RTAX_NETMASK];
mask.s_addr = sin != NULL && sin->sin_family == AF_INET ?
sin->sin_addr.s_addr : INADDR_ANY;
+
+#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 800000000
+ /* NetBSD-7 and older send an invalid broadcast address.
+ * So we need to query the actual address to get
+ * the right one. */
+ {
+ struct in_aliasreq ifra;
+
+ memset(&ifra, 0, sizeof(ifra));
+ strlcpy(ifra.ifra_name, ifp->name,
+ sizeof(ifra.ifra_name));
+ ifra.ifra_addr.sin_family = AF_INET;
+ ifra.ifra_addr.sin_len = sizeof(ifra.ifra_addr);
+ ifra.ifra_addr.sin_addr = addr;
+ if (ioctl(ctx->pf_inet_fd, SIOCGIFALIAS, &ifra) == -1) {
+ if (errno != EADDRNOTAVAIL)
+ logerr("%s: SIOCGIFALIAS", __func__);
+ break;
+ }
+ bcast = ifra.ifra_broadaddr.sin_addr;
+ }
+#else
sin = (const void *)rti_info[RTAX_BRD];
bcast.s_addr = sin != NULL && sin->sin_family == AF_INET ?
sin->sin_addr.s_addr : INADDR_ANY;
+#endif
#if defined(__FreeBSD__) || defined(__DragonFly__)
/* FreeBSD sends RTM_DELADDR for each assigned address
@@ -1134,8 +1157,8 @@ if_ifa(struct dhcpcd_ctx *ctx, const str
if (ifam->ifam_type == RTM_DELADDR)
addrflags = 0 ;
else if ((addrflags = if_addrflags(ifp, &addr, NULL)) == -1) {
- logerr("%s: if_addrflags: %s",
- ifp->name, inet_ntoa(addr));
+ if (errno != EADDRNOTAVAIL)
+ logerr("%s: if_addrflags", __func__);
break;
}
#endif
@@ -1160,7 +1183,8 @@ if_ifa(struct dhcpcd_ctx *ctx, const str
if (ifam->ifam_type == RTM_DELADDR)
addrflags = 0;
else if ((addrflags = if_addrflags6(ifp, &addr6, NULL)) == -1) {
- logerr("%s: if_addrflags6", ifp->name);
+ if (errno != EADDRNOTAVAIL)
+ logerr("%s: if_addrflags6", __func__);
break;
}
#endif
Index: src/external/bsd/dhcpcd/dist/src/if.c
diff -u src/external/bsd/dhcpcd/dist/src/if.c:1.1.1.3.2.2 src/external/bsd/dhcpcd/dist/src/if.c:1.1.1.3.2.3
--- src/external/bsd/dhcpcd/dist/src/if.c:1.1.1.3.2.2 Mon Apr 9 16:46:34 2018
+++ src/external/bsd/dhcpcd/dist/src/if.c Sat Aug 25 11:38:19 2018
@@ -240,10 +240,8 @@ if_learnaddrs(struct dhcpcd_ctx *ctx, st
addrflags = if_addrflags(ifp, &addr->sin_addr,
ifa->ifa_name);
if (addrflags == -1) {
- if (errno != EEXIST)
- logerr("%s: if_addrflags: %s",
- __func__,
- inet_ntoa(addr->sin_addr));
+ if (errno != EEXIST && errno != EADDRNOTAVAIL)
+ logerr("%s: if_addrflags", __func__);
continue;
}
#endif
@@ -266,7 +264,7 @@ if_learnaddrs(struct dhcpcd_ctx *ctx, st
addrflags = if_addrflags6(ifp, &sin6->sin6_addr,
ifa->ifa_name);
if (addrflags == -1) {
- if (errno != EEXIST)
+ if (errno != EEXIST && errno != EADDRNOTAVAIL)
logerr("%s: if_addrflags6", __func__);
continue;
}
Index: src/external/bsd/dhcpcd/dist/src/ipv4.c
diff -u src/external/bsd/dhcpcd/dist/src/ipv4.c:1.1.1.3.2.2 src/external/bsd/dhcpcd/dist/src/ipv4.c:1.1.1.3.2.3
--- src/external/bsd/dhcpcd/dist/src/ipv4.c:1.1.1.3.2.2 Mon Apr 9 16:46:34 2018
+++ src/external/bsd/dhcpcd/dist/src/ipv4.c Sat Aug 25 11:38:19 2018
@@ -816,9 +816,17 @@ ipv4_handleifa(struct dhcpcd_ctx *ctx,
bool ia_is_new;
#if 0
- logdebugx("%s: %s %s/%d %d", ifname,
- cmd == RTM_NEWADDR ? "RTM_NEWADDR" : cmd == RTM_DELADDR ? "RTM_DELADDR" : "???",
- inet_ntoa(*addr), inet_ntocidr(*mask), addrflags);
+ char sbrdbuf[INET_ADDRSTRLEN];
+ const char *sbrd;
+
+ if (brd)
+ sbrd = inet_ntop(AF_INET, brd, sbrdbuf, sizeof(sbrdbuf));
+ else
+ sbrd = NULL;
+ logdebugx("%s: %s %s/%d %s %d", ifname,
+ cmd == RTM_NEWADDR ? "RTM_NEWADDR" :
+ cmd == RTM_DELADDR ? "RTM_DELADDR" : "???",
+ inet_ntoa(*addr), inet_ntocidr(*mask), sbrd, addrflags);
#endif
if (ifs == NULL)
Index: src/external/bsd/dhcpcd/dist/src/ipv6.c
diff -u src/external/bsd/dhcpcd/dist/src/ipv6.c:1.1.1.3.2.4 src/external/bsd/dhcpcd/dist/src/ipv6.c:1.1.1.3.2.5
--- src/external/bsd/dhcpcd/dist/src/ipv6.c:1.1.1.3.2.4 Fri Jul 27 10:22:52 2018
+++ src/external/bsd/dhcpcd/dist/src/ipv6.c Sat Aug 25 11:38:19 2018
@@ -430,7 +430,7 @@ ipv6_mask(struct in6_addr *mask, int len
bits = len % NBBY;
for (i = 0; i < bytes; i++)
mask->s6_addr[i] = 0xff;
- if (bits) {
+ if (bits != 0) {
/* Coverify false positive.
* bytelen cannot be 16 if bitlen is non zero */
/* coverity[overrun-local] */
@@ -567,7 +567,8 @@ ipv6_checkaddrflags(void *arg)
alias = NULL;
#endif
if ((flags = if_addrflags6(ia->iface, &ia->addr, alias)) == -1) {
- logerr("%s: if_addrflags6", ia->iface->name);
+ if (errno != EEXIST && errno != EADDRNOTAVAIL)
+ logerr("%s: if_addrflags6", __func__);
return;
}