Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/bsd/dhcpcd/dist Import dhcpcd-7.0.7 with the follow...
details: https://anonhg.NetBSD.org/src/rev/82a629c7d917
branches: trunk
changeset: 991636:82a629c7d917
user: roy <roy%NetBSD.org@localhost>
date: Tue Jul 24 07:58:31 2018 +0000
description:
Import dhcpcd-7.0.7 with the following changes:
* host routes work correctly again
* vlanid is also used to calculate slaac stable private addresses
diffstat:
external/bsd/dhcpcd/dist/configure | 24 ++++++++++++------------
external/bsd/dhcpcd/dist/src/defs.h | 2 +-
external/bsd/dhcpcd/dist/src/if-linux.c | 6 +++---
external/bsd/dhcpcd/dist/src/ipv6.c | 11 ++++++++++-
external/bsd/dhcpcd/dist/src/route.c | 23 ++++++++++++++++++-----
5 files changed, 44 insertions(+), 22 deletions(-)
diffs (254 lines):
diff -r e54c579bb6e3 -r 82a629c7d917 external/bsd/dhcpcd/dist/configure
--- a/external/bsd/dhcpcd/dist/configure Tue Jul 24 05:40:15 2018 +0000
+++ b/external/bsd/dhcpcd/dist/configure Tue Jul 24 07:58:31 2018 +0000
@@ -713,7 +713,7 @@
fi
if [ "$ARC4RANDOM" = no ]; then
echo "COMPAT_SRCS+= compat/arc4random.c" >>$CONFIG_MK
- echo "#include \"compat/arc4random.h\"" >>$CONFIG_H
+ echo "#include \"compat/arc4random.h\"" >>$CONFIG_H
fi
if [ -z "$ARC4RANDOM_UNIFORM" ]; then
@@ -735,7 +735,7 @@
fi
if [ "$ARC4RANDOM_UNIFORM" = no ]; then
echo "COMPAT_SRCS+= compat/arc4random_uniform.c" >>$CONFIG_MK
- echo "#include \"compat/arc4random_uniform.h\"" >>$CONFIG_H
+ echo "#include \"compat/arc4random_uniform.h\"" >>$CONFIG_H
fi
if [ -z "$STRLCPY" ]; then
@@ -759,7 +759,7 @@
fi
if [ "$STRLCPY" = no ]; then
echo "COMPAT_SRCS+= compat/strlcpy.c" >>$CONFIG_MK
- echo "#include \"compat/strlcpy.h\"" >>$CONFIG_H
+ echo "#include \"compat/strlcpy.h\"" >>$CONFIG_H
fi
if [ -z "$PIDFILE_LOCK" ]; then
@@ -791,7 +791,7 @@
fi
if [ "$PIDFILE_LOCK" = no ]; then
echo "COMPAT_SRCS+= compat/pidfile.c" >>$CONFIG_MK
- echo "#include \"compat/pidfile.h\"" >>$CONFIG_H
+ echo "#include \"compat/pidfile.h\"" >>$CONFIG_H
else
echo "#define HAVE_UTIL_H" >>$CONFIG_H
if [ -n "$LIBUTIL" ]; then
@@ -842,7 +842,7 @@
fi
if [ "$STRTOI" = no ]; then
echo "COMPAT_SRCS+= compat/strtoi.c compat/strtou.c" >>$CONFIG_MK
- echo "#include \"compat/strtoi.h\"" >>$CONFIG_H
+ echo "#include \"compat/strtoi.h\"" >>$CONFIG_H
fi
if [ -z "$DPRINTF" ]; then
@@ -863,7 +863,7 @@
fi
if [ "$DPRINTF" = no ]; then
echo "COMPAT_SRCS+= compat/dprintf.c" >>$CONFIG_MK
- echo "#include \"compat/dprintf.h\"" >>$CONFIG_H
+ echo "#include \"compat/dprintf.h\"" >>$CONFIG_H
fi
if [ -z "$TAILQ_FOREACH_SAFE" ]; then
@@ -937,7 +937,7 @@
if [ "$TAILQ_FOREACH" = yes ]; then
echo "#include <sys/queue.h>">>$CONFIG_H
fi
- echo "#include \"compat/queue.h\"">>$CONFIG_H
+ echo "#include \"compat/queue.h\"">>$CONFIG_H
else
echo "#define HAVE_SYS_QUEUE_H" >>$CONFIG_H
fi
@@ -962,7 +962,7 @@
fi
if [ "$REALLOCARRAY" = no ]; then
echo "COMPAT_SRCS+= compat/reallocarray.c" >>$CONFIG_MK
- echo "#include \"compat/reallocarray.h\"">>$CONFIG_H
+ echo "#include \"compat/reallocarray.h\"">>$CONFIG_H
fi
# Set this for eloop
echo "#define HAVE_REALLOCARRAY" >>$CONFIG_H
@@ -1091,7 +1091,7 @@
rm -f _be64enc.c _be64enc
fi
if [ "$BE64ENC" = no ]; then
- echo "#include \"compat/endian.h\"" >>$CONFIG_H
+ echo "#include \"compat/endian.h\"" >>$CONFIG_H
fi
if [ -z "$FLS64" ]; then
@@ -1145,7 +1145,7 @@
rm -f _md5.c _md5
fi
if [ "$MD5" = no ]; then
- echo "#include \"compat/crypt/md5.h\"" >>$CONFIG_H
+ echo "#include \"compat/crypt/md5.h\"" >>$CONFIG_H
echo "MD5_SRC= compat/crypt/md5.c" >>$CONFIG_MK
else
echo "MD5_SRC=" >>$CONFIG_MK
@@ -1236,7 +1236,7 @@
fi
fi
if [ "$SHA2" = no ]; then
- echo "#include \"compat/crypt/sha256.h\"" >>$CONFIG_H
+ echo "#include \"compat/crypt/sha256.h\"" >>$CONFIG_H
echo "SHA256_SRC= compat/crypt/sha256.c" >>$CONFIG_MK
else
echo "SHA256_SRC=" >>$CONFIG_MK
@@ -1284,7 +1284,7 @@
rm -f _hmac.c _hmac
fi
if [ "$HMAC" = no ]; then
- echo "#include \"compat/crypt/hmac.h\"" >>$CONFIG_H
+ echo "#include \"compat/crypt/hmac.h\"" >>$CONFIG_H
echo "HMAC_SRC= compat/crypt/hmac.c" >>$CONFIG_MK
else
# echo "#define HAVE_HMAC_H" >>$CONFIG_H
diff -r e54c579bb6e3 -r 82a629c7d917 external/bsd/dhcpcd/dist/src/defs.h
--- a/external/bsd/dhcpcd/dist/src/defs.h Tue Jul 24 05:40:15 2018 +0000
+++ b/external/bsd/dhcpcd/dist/src/defs.h Tue Jul 24 07:58:31 2018 +0000
@@ -28,7 +28,7 @@
#define CONFIG_H
#define PACKAGE "dhcpcd"
-#define VERSION "7.0.6"
+#define VERSION "7.0.7"
#ifndef CONFIG
# define CONFIG SYSCONFDIR "/" PACKAGE ".conf"
diff -r e54c579bb6e3 -r 82a629c7d917 external/bsd/dhcpcd/dist/src/if-linux.c
--- a/external/bsd/dhcpcd/dist/src/if-linux.c Tue Jul 24 05:40:15 2018 +0000
+++ b/external/bsd/dhcpcd/dist/src/if-linux.c Tue Jul 24 07:58:31 2018 +0000
@@ -430,8 +430,6 @@
memset(rt, 0, sizeof(*rt));
if (rtm->rtm_type == RTN_UNREACHABLE)
rt->rt_flags |= RTF_REJECT;
- if (rtm->rtm_scope == RT_SCOPE_HOST)
- rt->rt_flags |= RTF_HOST;
rta = (struct rtattr *)RTM_RTA(rtm);
len = RTM_PAYLOAD(nlm);
@@ -491,6 +489,8 @@
rt->rt_netmask.sa_family = rtm->rtm_family;
sa_fromprefix(&rt->rt_netmask, rtm->rtm_dst_len);
+ if (sa_is_allones(&rt->rt_netmask))
+ rt->rt_flags |= RTF_HOST;
#if 0
if (rt->rtp_ifp == NULL && rt->src.s_addr != INADDR_ANY) {
@@ -1228,7 +1228,7 @@
nlm.rt.rtm_protocol = RTPROT_BOOT;
if (rt->rt_ifp->flags & IFF_LOOPBACK)
nlm.rt.rtm_scope = RT_SCOPE_HOST;
- else if (gateway_unspec || sa_is_allones(&rt->rt_netmask))
+ else if (gateway_unspec)
nlm.rt.rtm_scope = RT_SCOPE_LINK;
else
nlm.rt.rtm_scope = RT_SCOPE_UNIVERSE;
diff -r e54c579bb6e3 -r 82a629c7d917 external/bsd/dhcpcd/dist/src/ipv6.c
--- a/external/bsd/dhcpcd/dist/src/ipv6.c Tue Jul 24 05:40:15 2018 +0000
+++ b/external/bsd/dhcpcd/dist/src/ipv6.c Tue Jul 24 07:58:31 2018 +0000
@@ -253,6 +253,7 @@
const struct in6_addr *prefix, int prefix_len,
const unsigned char *netiface, size_t netiface_len,
const unsigned char *netid, size_t netid_len,
+ unsigned short vlanid,
uint32_t *dad_counter,
const unsigned char *secret, size_t secret_len)
{
@@ -267,6 +268,8 @@
l = (size_t)(ROUNDUP8(prefix_len) / NBBY);
len = l + netiface_len + netid_len + sizeof(*dad_counter) + secret_len;
+ if (vlanid != 0)
+ len += sizeof(vlanid);
if (len > sizeof(buf)) {
errno = ENOBUFS;
return -1;
@@ -281,6 +284,12 @@
p += netiface_len;
memcpy(p, netid, netid_len);
p += netid_len;
+ /* Don't use a vlanid if not set.
+ * This ensures prior versions have the same unique address. */
+ if (vlanid != 0) {
+ memcpy(p, &vlanid, sizeof(vlanid));
+ p += sizeof(vlanid);
+ }
memcpy(p, dad_counter, sizeof(*dad_counter));
p += sizeof(*dad_counter);
memcpy(p, secret, secret_len);
@@ -333,7 +342,7 @@
r = ipv6_makestableprivate1(addr, prefix, prefix_len,
ifp->hwaddr, ifp->hwlen,
ifp->ssid, ifp->ssid_len,
- &dad,
+ ifp->vlanid, &dad,
ifp->ctx->secret, ifp->ctx->secret_len);
if (r == 0)
diff -r e54c579bb6e3 -r 82a629c7d917 external/bsd/dhcpcd/dist/src/route.c
--- a/external/bsd/dhcpcd/dist/src/route.c Tue Jul 24 05:40:15 2018 +0000
+++ b/external/bsd/dhcpcd/dist/src/route.c Tue Jul 24 07:58:31 2018 +0000
@@ -44,6 +44,21 @@
#include "route.h"
#include "sa.h"
+/*
+ * On some systems, host routes have no need for a netmask.
+ * However DHCP specifies host routes using an all-ones netmask.
+ * This handy function allows easy comparison when the two
+ * differ.
+ */
+static int
+rt_cmp_netmask(const struct rt *rt1, const struct rt *rt2)
+{
+
+ if (rt1->rt_flags & RTF_HOST && rt2->rt_flags & RTF_HOST)
+ return 0;
+ return sa_cmp(&rt1->rt_netmask, &rt2->rt_netmask);
+}
+
void
rt_init(struct dhcpcd_ctx *ctx)
{
@@ -63,14 +78,12 @@
assert(cmd != NULL);
assert(rt != NULL);
- assert(rt->rt_ifp != NULL);
- ifname = rt->rt_ifp->name;
sa_addrtop(&rt->rt_dest, dest, sizeof(dest));
prefix = sa_toprefix(&rt->rt_netmask);
sa_addrtop(&rt->rt_gateway, gateway, sizeof(gateway));
-
gateway_unspec = sa_is_unspecified(&rt->rt_gateway);
+ ifname = rt->rt_ifp == NULL ? "(null)" : rt->rt_ifp->name;
if (rt->rt_flags & RTF_HOST) {
if (gateway_unspec)
@@ -236,7 +249,7 @@
(f->rt_ifp == NULL ||
rt->rt_ifp->metric == f->rt_ifp->metric) &&
#endif
- sa_cmp(&rt->rt_netmask, &f->rt_netmask) == 0)
+ rt_cmp_netmask(f, rt) == 0)
return rt;
}
return NULL;
@@ -345,7 +358,7 @@
ort->rt_metric == nrt->rt_metric &&
#endif
sa_cmp(&ort->rt_dest, &nrt->rt_dest) == 0 &&
- sa_cmp(&ort->rt_netmask, &nrt->rt_netmask) == 0 &&
+ rt_cmp_netmask(ort, nrt) == 0 &&
sa_cmp(&ort->rt_gateway, &nrt->rt_gateway) == 0)
{
if (ort->rt_mtu == nrt->rt_mtu)
Home |
Main Index |
Thread Index |
Old Index