Module Name: src
Committed By: roy
Date: Fri Mar 27 11:33:47 UTC 2015
Modified Files:
src/external/bsd/dhcpcd/dist: common.c defs.h if-options.c ipv4.c
ipv6.c
src/external/bsd/dhcpcd/dist/crypt: hmac_md5.c
Log Message:
Sync
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/external/bsd/dhcpcd/dist/common.c \
src/external/bsd/dhcpcd/dist/ipv6.c
cvs rdiff -u -r1.15 -r1.16 src/external/bsd/dhcpcd/dist/defs.h
cvs rdiff -u -r1.21 -r1.22 src/external/bsd/dhcpcd/dist/if-options.c
cvs rdiff -u -r1.12 -r1.13 src/external/bsd/dhcpcd/dist/ipv4.c
cvs rdiff -u -r1.6 -r1.7 src/external/bsd/dhcpcd/dist/crypt/hmac_md5.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/dhcpcd/dist/common.c
diff -u src/external/bsd/dhcpcd/dist/common.c:1.9 src/external/bsd/dhcpcd/dist/common.c:1.10
--- src/external/bsd/dhcpcd/dist/common.c:1.9 Thu Mar 26 10:26:37 2015
+++ src/external/bsd/dhcpcd/dist/common.c Fri Mar 27 11:33:46 2015
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: common.c,v 1.9 2015/03/26 10:26:37 roy Exp $");
+ __RCSID("$NetBSD: common.c,v 1.10 2015/03/27 11:33:46 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -231,9 +231,9 @@ logger(struct dhcpcd_ctx *ctx, int pri,
break;
}
*fp++ = '\0';
+ fmt = fmt_cpy;
}
- fmt = fmt_cpy;
#endif
if (ctx == NULL || !(ctx->options & DHCPCD_QUIET)) {
Index: src/external/bsd/dhcpcd/dist/ipv6.c
diff -u src/external/bsd/dhcpcd/dist/ipv6.c:1.9 src/external/bsd/dhcpcd/dist/ipv6.c:1.10
--- src/external/bsd/dhcpcd/dist/ipv6.c:1.9 Thu Mar 26 10:26:37 2015
+++ src/external/bsd/dhcpcd/dist/ipv6.c Fri Mar 27 11:33:46 2015
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: ipv6.c,v 1.9 2015/03/26 10:26:37 roy Exp $");
+ __RCSID("$NetBSD: ipv6.c,v 1.10 2015/03/27 11:33:46 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -1822,9 +1822,6 @@ ipv6_handlert(struct dhcpcd_ctx *ctx, in
static int
nc_route(struct rt6 *ort, struct rt6 *nrt)
{
-#ifdef HAVE_ROUTE_METRIC
- int retval;
-#endif
/* Don't set default routes if not asked to */
if (IN6_IS_ADDR_UNSPECIFIED(&nrt->dest) &&
@@ -1849,22 +1846,30 @@ nc_route(struct rt6 *ort, struct rt6 *nr
#ifdef HAVE_ROUTE_METRIC
/* With route metrics, we can safely add the new route before
* deleting the old route. */
- if ((retval = if_route6(RTM_ADD, nrt)) == -1)
- logger(nrt->iface->ctx, LOG_ERR, "if_route6 (ADD): %m");
- if (ort && if_route6(RTM_DELETE, ort) == -1 &&
- errno != ESRCH)
- logger(nrt->iface->ctx, LOG_ERR, "if_route6 (DEL): %m");
- return retval;
-#else
+ if (if_route6(RTM_ADD, nrt) == 0) {
+ if (ort && if_route6(RTM_DELETE, ort) == -1 &&
+ errno != ESRCH)
+ logger(nrt->iface->ctx, LOG_ERR, "if_route6 (DEL): %m");
+ return 0;
+ }
+
+ /* If the kernel claims the route exists we need to rip out the
+ * old one first. */
+ if (errno != EEXIST || ort == NULL)
+ goto logerr;
+#endif
+
/* No route metrics, we need to delete the old route before
* adding the new one. */
if (ort && if_route6(RTM_DELETE, ort) == -1 && errno != ESRCH)
logger(nrt->iface->ctx, LOG_ERR, "if_route6: %m");
if (if_route6(RTM_ADD, nrt) == 0)
return 0;
+#ifdef HAVE_ROUTE_METRIC
+logerr:
+#endif
logger(nrt->iface->ctx, LOG_ERR, "if_route6 (ADD): %m");
return -1;
-#endif
}
static int
Index: src/external/bsd/dhcpcd/dist/defs.h
diff -u src/external/bsd/dhcpcd/dist/defs.h:1.15 src/external/bsd/dhcpcd/dist/defs.h:1.16
--- src/external/bsd/dhcpcd/dist/defs.h:1.15 Thu Mar 26 10:26:37 2015
+++ src/external/bsd/dhcpcd/dist/defs.h Fri Mar 27 11:33:46 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.15 2015/03/26 10:26:37 roy Exp $ */
+/* $NetBSD: defs.h,v 1.16 2015/03/27 11:33:46 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -30,7 +30,7 @@
#define CONFIG_H
#define PACKAGE "dhcpcd"
-#define VERSION "6.8.0"
+#define VERSION "6.8.1"
#ifndef CONFIG
# define CONFIG SYSCONFDIR "/" PACKAGE ".conf"
Index: src/external/bsd/dhcpcd/dist/if-options.c
diff -u src/external/bsd/dhcpcd/dist/if-options.c:1.21 src/external/bsd/dhcpcd/dist/if-options.c:1.22
--- src/external/bsd/dhcpcd/dist/if-options.c:1.21 Thu Mar 26 10:26:37 2015
+++ src/external/bsd/dhcpcd/dist/if-options.c Fri Mar 27 11:33:46 2015
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: if-options.c,v 1.21 2015/03/26 10:26:37 roy Exp $");
+ __RCSID("$NetBSD: if-options.c,v 1.22 2015/03/27 11:33:46 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -53,6 +53,7 @@
#include "dhcp.h"
#include "dhcp6.h"
#include "dhcpcd-embedded.h"
+#include "if.h"
#include "if-options.h"
#include "ipv4.h"
@@ -1041,7 +1042,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
}
TAILQ_INIT(ifo->routes);
}
- rt = malloc(sizeof(*rt));
+ rt = calloc(1, sizeof(*rt));
if (rt == NULL) {
logger(ctx, LOG_ERR, "%s: %m", __func__);
*fp = ' ';
@@ -1066,7 +1067,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
}
TAILQ_INIT(ifo->routes);
}
- rt = malloc(sizeof(*rt));
+ rt = calloc(1, sizeof(*rt));
if (rt == NULL) {
logger(ctx, LOG_ERR, "%s: %m", __func__);
return -1;
Index: src/external/bsd/dhcpcd/dist/ipv4.c
diff -u src/external/bsd/dhcpcd/dist/ipv4.c:1.12 src/external/bsd/dhcpcd/dist/ipv4.c:1.13
--- src/external/bsd/dhcpcd/dist/ipv4.c:1.12 Thu Mar 26 10:26:37 2015
+++ src/external/bsd/dhcpcd/dist/ipv4.c Fri Mar 27 11:33:46 2015
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: ipv4.c,v 1.12 2015/03/26 10:26:37 roy Exp $");
+ __RCSID("$NetBSD: ipv4.c,v 1.13 2015/03/27 11:33:46 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -335,6 +335,12 @@ ipv4_handlert(struct dhcpcd_ctx *ctx, in
if (ctx->ipv4_kroutes == NULL)
return 0;
+ /* DHCP host routes have a gateway of the destination.
+ * We need to emulate that */
+ if (rt->gate.s_addr == INADDR_ANY &&
+ rt->net.s_addr == INADDR_BROADCAST)
+ rt->gate = rt->dest;
+
f = ipv4_findrt(ctx, rt, 1);
switch (cmd) {
case RTM_ADD:
@@ -367,9 +373,6 @@ ipv4_handlert(struct dhcpcd_ctx *ctx, in
static int
nc_route(struct rt *ort, struct rt *nrt)
{
-#ifdef HAVE_ROUTE_METRIC
- int retval;
-#endif
/* Don't set default routes if not asked to */
if (nrt->dest.s_addr == 0 &&
@@ -402,21 +405,29 @@ nc_route(struct rt *ort, struct rt *nrt)
#ifdef HAVE_ROUTE_METRIC
/* With route metrics, we can safely add the new route before
* deleting the old route. */
- if ((retval = if_route(RTM_ADD, nrt)) == -1)
- logger(nrt->iface->ctx, LOG_ERR, "if_route (ADD): %m");
- if (ort && if_route(RTM_DELETE, ort) == -1 && errno != ESRCH)
- logger(nrt->iface->ctx, LOG_ERR, "if_route (DEL): %m");
- return retval;
-#else
+ if (if_route(RTM_ADD, nrt) == 0) {
+ if (ort && if_route(RTM_DELETE, ort) == -1 && errno != ESRCH)
+ logger(nrt->iface->ctx, LOG_ERR, "if_route (DEL): %m");
+ return 0;
+ }
+
+ /* If the kernel claims the route exists we need to rip out the
+ * old one first. */
+ if (errno != EEXIST || ort == NULL)
+ goto logerr;
+#endif
+
/* No route metrics, we need to delete the old route before
* adding the new one. */
if (ort && if_route(RTM_DELETE, ort) == -1 && errno != ESRCH)
logger(nrt->iface->ctx, LOG_ERR, "if_route (DEL): %m");
if (if_route(RTM_ADD, nrt) == 0)
return 0;
+#ifdef HAVE_ROUTE_METRIC
+logerr:
+#endif
logger(nrt->iface->ctx, LOG_ERR, "if_route (ADD): %m");
return -1;
-#endif
}
static int
@@ -701,8 +712,10 @@ ipv4_buildroutes(struct dhcpcd_ctx *ctx)
free(or);
} else {
if (state->added & STATE_FAKE) {
- if (!ipv4_findrt(ctx, rt, 1))
- continue;
+ or = ipv4_findrt(ctx, rt, 1);
+ if (or == NULL ||
+ or->gate.s_addr != rt->gate.s_addr)
+ continue;
} else {
if (n_route(rt) != 0)
continue;
Index: src/external/bsd/dhcpcd/dist/crypt/hmac_md5.c
diff -u src/external/bsd/dhcpcd/dist/crypt/hmac_md5.c:1.6 src/external/bsd/dhcpcd/dist/crypt/hmac_md5.c:1.7
--- src/external/bsd/dhcpcd/dist/crypt/hmac_md5.c:1.6 Fri Jan 30 09:47:05 2015
+++ src/external/bsd/dhcpcd/dist/crypt/hmac_md5.c Fri Mar 27 11:33:47 2015
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: hmac_md5.c,v 1.6 2015/01/30 09:47:05 roy Exp $");
+ __RCSID("$NetBSD: hmac_md5.c,v 1.7 2015/03/27 11:33:47 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -60,7 +60,7 @@ hmac_md5(const uint8_t *text, size_t tex
/* Ensure key is no bigger than HMAC_PAD_LEN */
if (key_len > HMAC_PAD_LEN) {
MD5Init(&context);
- MD5Update(&context, key, key_len);
+ MD5Update(&context, key, (unsigned int)key_len);
MD5Final(tk, &context);
key = tk;
key_len = MD5_DIGEST_LENGTH;
@@ -81,7 +81,7 @@ hmac_md5(const uint8_t *text, size_t tex
/* inner MD5 */
MD5Init(&context);
MD5Update(&context, k_ipad, HMAC_PAD_LEN);
- MD5Update(&context, text, text_len);
+ MD5Update(&context, text, (unsigned int)text_len);
MD5Final(digest, &context);
/* outer MD5 */