Module Name: src
Committed By: roy
Date: Fri Nov 14 12:00:54 UTC 2014
Modified Files:
src/external/bsd/dhcpcd/dist: arp.c auth.c auth.h common.c config.h
defs.h dhcp.c dhcpcd.c dhcpcd.h eloop.c if-options.c ipv4.c
ipv4ll.c ipv4ll.h ipv6.h ipv6nd.h
Log Message:
Sync
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/external/bsd/dhcpcd/dist/arp.c \
src/external/bsd/dhcpcd/dist/auth.c src/external/bsd/dhcpcd/dist/auth.h \
src/external/bsd/dhcpcd/dist/common.c \
src/external/bsd/dhcpcd/dist/config.h src/external/bsd/dhcpcd/dist/defs.h \
src/external/bsd/dhcpcd/dist/dhcpcd.h \
src/external/bsd/dhcpcd/dist/eloop.c src/external/bsd/dhcpcd/dist/ipv4.c \
src/external/bsd/dhcpcd/dist/ipv4ll.c \
src/external/bsd/dhcpcd/dist/ipv4ll.h src/external/bsd/dhcpcd/dist/ipv6.h \
src/external/bsd/dhcpcd/dist/ipv6nd.h
cvs rdiff -u -r1.22 -r1.23 src/external/bsd/dhcpcd/dist/dhcp.c
cvs rdiff -u -r1.16 -r1.17 src/external/bsd/dhcpcd/dist/dhcpcd.c
cvs rdiff -u -r1.17 -r1.18 src/external/bsd/dhcpcd/dist/if-options.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/arp.c
diff -u src/external/bsd/dhcpcd/dist/arp.c:1.6 src/external/bsd/dhcpcd/dist/arp.c:1.7
--- src/external/bsd/dhcpcd/dist/arp.c:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/arp.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: arp.c,v 1.6 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: arp.c,v 1.7 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -320,8 +320,10 @@ arp_free(struct arp_state *astate)
eloop_timeout_delete(astate->iface->ctx->eloop, NULL, astate);
state = D_STATE(astate->iface);
TAILQ_REMOVE(&state->arp_states, astate, next);
- if (state->arp_ipv4ll == astate)
+ if (state->arp_ipv4ll == astate) {
+ ipv4ll_stop(astate->iface);
state->arp_ipv4ll = NULL;
+ }
free(astate);
}
}
@@ -355,6 +357,10 @@ arp_close(struct interface *ifp)
}
while ((astate = TAILQ_FIRST(&state->arp_states))) {
+#ifndef __clang_analyzer__
+ /* clang guard needed for a more compex variant on this bug:
+ * http://llvm.org/bugs/show_bug.cgi?id=18222 */
arp_free(astate);
+#endif
}
}
Index: src/external/bsd/dhcpcd/dist/auth.c
diff -u src/external/bsd/dhcpcd/dist/auth.c:1.6 src/external/bsd/dhcpcd/dist/auth.c:1.7
--- src/external/bsd/dhcpcd/dist/auth.c:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/auth.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: auth.c,v 1.6 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: auth.c,v 1.7 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -29,7 +29,6 @@
*/
#include <sys/file.h>
-#include <sys/queue.h>
#include <errno.h>
#include <fcntl.h>
#include <inttypes.h>
Index: src/external/bsd/dhcpcd/dist/auth.h
diff -u src/external/bsd/dhcpcd/dist/auth.h:1.6 src/external/bsd/dhcpcd/dist/auth.h:1.7
--- src/external/bsd/dhcpcd/dist/auth.h:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/auth.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: auth.h,v 1.6 2014/11/07 20:51:02 roy Exp $ */
+/* $NetBSD: auth.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -30,7 +30,7 @@
#ifndef AUTH_H
#define AUTH_H
-#include <sys/queue.h>
+#include "config.h"
#define DHCPCD_AUTH_SEND (1 << 0)
#define DHCPCD_AUTH_REQUIRE (1 << 1)
Index: src/external/bsd/dhcpcd/dist/common.c
diff -u src/external/bsd/dhcpcd/dist/common.c:1.6 src/external/bsd/dhcpcd/dist/common.c:1.7
--- src/external/bsd/dhcpcd/dist/common.c:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/common.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: common.c,v 1.6 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: common.c,v 1.7 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -33,10 +33,6 @@
# define _GNU_SOURCE
#endif
-#ifndef __sun
-# include <sys/cdefs.h>
-#endif
-
#ifdef __APPLE__
# include <mach/mach_time.h>
# include <mach/kern_return.h>
Index: src/external/bsd/dhcpcd/dist/config.h
diff -u src/external/bsd/dhcpcd/dist/config.h:1.6 src/external/bsd/dhcpcd/dist/config.h:1.7
--- src/external/bsd/dhcpcd/dist/config.h:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/config.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: config.h,v 1.6 2014/11/07 20:51:02 roy Exp $ */
+/* $NetBSD: config.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/* netbsd */
#define SYSCONFDIR "/etc"
@@ -7,6 +7,7 @@
#define LIBEXECDIR "/libexec"
#define DBDIR "/var/db"
#define RUNDIR "/var/run"
+#include <sys/queue.h>
#define HAVE_SPAWN_H
#define HAVE_MD5_H
#define SHA2_H <sha2.h>
Index: src/external/bsd/dhcpcd/dist/defs.h
diff -u src/external/bsd/dhcpcd/dist/defs.h:1.6 src/external/bsd/dhcpcd/dist/defs.h:1.7
--- src/external/bsd/dhcpcd/dist/defs.h:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/defs.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.6 2014/11/07 20:51:02 roy Exp $ */
+/* $NetBSD: defs.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -30,7 +30,7 @@
#define CONFIG_H
#define PACKAGE "dhcpcd"
-#define VERSION "6.6.1"
+#define VERSION "6.6.2"
#ifndef CONFIG
# define CONFIG SYSCONFDIR "/" PACKAGE ".conf"
Index: src/external/bsd/dhcpcd/dist/dhcpcd.h
diff -u src/external/bsd/dhcpcd/dist/dhcpcd.h:1.6 src/external/bsd/dhcpcd/dist/dhcpcd.h:1.7
--- src/external/bsd/dhcpcd/dist/dhcpcd.h:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/dhcpcd.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: dhcpcd.h,v 1.6 2014/11/07 20:51:02 roy Exp $ */
+/* $NetBSD: dhcpcd.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -30,10 +30,10 @@
#ifndef DHCPCD_H
#define DHCPCD_H
-#include <sys/queue.h>
#include <sys/socket.h>
#include <net/if.h>
+#include "config.h"
#include "defs.h"
#include "control.h"
#include "if-options.h"
Index: src/external/bsd/dhcpcd/dist/eloop.c
diff -u src/external/bsd/dhcpcd/dist/eloop.c:1.6 src/external/bsd/dhcpcd/dist/eloop.c:1.7
--- src/external/bsd/dhcpcd/dist/eloop.c:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/eloop.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: eloop.c,v 1.6 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: eloop.c,v 1.7 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -31,7 +31,6 @@
/* Needed for ppoll(2) */
#define _GNU_SOURCE
-#include <sys/queue.h>
#include <sys/time.h>
#include <errno.h>
@@ -41,6 +40,7 @@
#include <stdlib.h>
#include <syslog.h>
+#include "config.h"
#include "common.h"
#include "dhcpcd.h"
#include "eloop.h"
@@ -242,7 +242,8 @@ eloop_q_timeout_delete(struct eloop_ctx
struct eloop_timeout *t, *tt;
TAILQ_FOREACH_SAFE(t, &ctx->timeouts, next, tt) {
- if (t->queue == queue && t->arg == arg &&
+ if ((queue == 0 || t->queue == queue) &&
+ t->arg == arg &&
(!callback || t->callback == callback))
{
TAILQ_REMOVE(&ctx->timeouts, t, next);
Index: src/external/bsd/dhcpcd/dist/ipv4.c
diff -u src/external/bsd/dhcpcd/dist/ipv4.c:1.6 src/external/bsd/dhcpcd/dist/ipv4.c:1.7
--- src/external/bsd/dhcpcd/dist/ipv4.c:1.6 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/ipv4.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: ipv4.c,v 1.6 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: ipv4.c,v 1.7 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -28,7 +28,6 @@
* SUCH DAMAGE.
*/
-#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/types.h>
Index: src/external/bsd/dhcpcd/dist/ipv4ll.c
diff -u src/external/bsd/dhcpcd/dist/ipv4ll.c:1.6 src/external/bsd/dhcpcd/dist/ipv4ll.c:1.7
--- src/external/bsd/dhcpcd/dist/ipv4ll.c:1.6 Fri Nov 7 20:51:03 2014
+++ src/external/bsd/dhcpcd/dist/ipv4ll.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: ipv4ll.c,v 1.6 2014/11/07 20:51:03 roy Exp $");
+ __RCSID("$NetBSD: ipv4ll.c,v 1.7 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -90,7 +90,6 @@ ipv4ll_pick_addr(const struct arp_state
if (addr == astate->failed.s_addr)
continue;
- state = D_CSTATE(astate->iface);
/* Ensure we don't have the address on another interface */
TAILQ_FOREACH(ifp, astate->iface->ctx->ifaces, next) {
state = D_CSTATE(ifp);
@@ -109,14 +108,19 @@ static void
ipv4ll_probed(struct arp_state *astate)
{
struct dhcp_state *state = D_STATE(astate->iface);
+ struct dhcp_message *offer;
- free(state->offer);
- state->offer = ipv4ll_make_lease(astate->addr.s_addr);
- if (state->offer == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
- return;
+ if (state->state != DHS_BOUND) {
+ /* A DHCP lease could have already been offered.
+ * Backup and replace once the IPv4LL addres is bound */
+ offer = state->offer;
+ state->offer = ipv4ll_make_lease(astate->addr.s_addr);
+ if (state->offer == NULL)
+ syslog(LOG_ERR, "%s: %m", __func__);
+ else
+ dhcp_bind(astate->iface, astate);
+ state->offer = offer;
}
- dhcp_bind(astate->iface, astate);
}
static void
@@ -253,3 +257,11 @@ ipv4ll_start(void *arg)
astate->addr.s_addr = ipv4ll_pick_addr(astate);
arp_probe(astate);
}
+
+void
+ipv4ll_stop(struct interface *ifp)
+{
+ struct dhcp_state *state = D_STATE(ifp);
+
+ eloop_timeout_delete(ifp->ctx->eloop, NULL, state->arp_ipv4ll);
+}
Index: src/external/bsd/dhcpcd/dist/ipv4ll.h
diff -u src/external/bsd/dhcpcd/dist/ipv4ll.h:1.6 src/external/bsd/dhcpcd/dist/ipv4ll.h:1.7
--- src/external/bsd/dhcpcd/dist/ipv4ll.h:1.6 Fri Nov 7 20:51:03 2014
+++ src/external/bsd/dhcpcd/dist/ipv4ll.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ipv4ll.h,v 1.6 2014/11/07 20:51:03 roy Exp $ */
+/* $NetBSD: ipv4ll.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -33,5 +33,6 @@
void ipv4ll_start(void *);
void ipv4ll_claimed(void *);
void ipv4ll_handle_failure(void *);
+void ipv4ll_stop(struct interface *);
#endif
Index: src/external/bsd/dhcpcd/dist/ipv6.h
diff -u src/external/bsd/dhcpcd/dist/ipv6.h:1.6 src/external/bsd/dhcpcd/dist/ipv6.h:1.7
--- src/external/bsd/dhcpcd/dist/ipv6.h:1.6 Fri Nov 7 20:51:03 2014
+++ src/external/bsd/dhcpcd/dist/ipv6.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ipv6.h,v 1.6 2014/11/07 20:51:03 roy Exp $ */
+/* $NetBSD: ipv6.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -30,7 +30,6 @@
#ifndef IPV6_H
#define IPV6_H
-#include <sys/queue.h>
#include <sys/uio.h>
#include <netinet/in.h>
@@ -40,6 +39,7 @@
# include <linux/ipv6.h>
#endif
+#include "config.h"
#include "dhcpcd.h"
#define ALLROUTERS "ff02::2"
Index: src/external/bsd/dhcpcd/dist/ipv6nd.h
diff -u src/external/bsd/dhcpcd/dist/ipv6nd.h:1.6 src/external/bsd/dhcpcd/dist/ipv6nd.h:1.7
--- src/external/bsd/dhcpcd/dist/ipv6nd.h:1.6 Fri Nov 7 20:51:03 2014
+++ src/external/bsd/dhcpcd/dist/ipv6nd.h Fri Nov 14 12:00:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ipv6nd.h,v 1.6 2014/11/07 20:51:03 roy Exp $ */
+/* $NetBSD: ipv6nd.h,v 1.7 2014/11/14 12:00:54 roy Exp $ */
/*
* dhcpcd - DHCP client daemon
@@ -30,10 +30,9 @@
#ifndef IPV6ND_H
#define IPV6ND_H
-#include <sys/queue.h>
-
#include <time.h>
+#include "config.h"
#include "dhcpcd.h"
#include "ipv6.h"
Index: src/external/bsd/dhcpcd/dist/dhcp.c
diff -u src/external/bsd/dhcpcd/dist/dhcp.c:1.22 src/external/bsd/dhcpcd/dist/dhcp.c:1.23
--- src/external/bsd/dhcpcd/dist/dhcp.c:1.22 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/dhcp.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: dhcp.c,v 1.22 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: dhcp.c,v 1.23 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -2175,8 +2175,12 @@ dhcp_drop(struct interface *ifp, const c
eloop_timeout_delete(ifp->ctx->eloop, NULL, ifp);
return;
}
- /* Don't reset DHCP state if we have an IPv4LL address and link is up */
- if (state->state != DHS_IPV4LL_BOUND || ifp->carrier != LINK_UP) {
+ /* Don't reset DHCP state if we have an IPv4LL address and link is up,
+ * unless the interface is departing. */
+ if (state->state != DHS_IPV4LL_BOUND ||
+ ifp->carrier != LINK_UP ||
+ ifp->options->options & DHCPCD_DEPARTED)
+ {
eloop_timeout_delete(ifp->ctx->eloop, NULL, ifp);
dhcp_auth_reset(&state->auth);
dhcp_close(ifp);
Index: src/external/bsd/dhcpcd/dist/dhcpcd.c
diff -u src/external/bsd/dhcpcd/dist/dhcpcd.c:1.16 src/external/bsd/dhcpcd/dist/dhcpcd.c:1.17
--- src/external/bsd/dhcpcd/dist/dhcpcd.c:1.16 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/dhcpcd.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: dhcpcd.c,v 1.16 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: dhcpcd.c,v 1.17 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -33,7 +33,6 @@ const char dhcpcd_copyright[] = "Copyrig
#define _WITH_DPRINTF /* Stop FreeBSD bitching */
#include <sys/file.h>
-#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/time.h>
@@ -317,13 +316,15 @@ stop_interface(struct interface *ifp)
ipv6nd_drop(ifp);
dhcp_drop(ifp, "STOP");
arp_close(ifp);
- eloop_timeout_delete(ctx->eloop, NULL, ifp);
if (ifp->options->options & DHCPCD_DEPARTED)
script_runreason(ifp, "DEPARTED");
else
script_runreason(ifp, "STOPPED");
- // Remove the interface from our list
+ /* Delete all timeouts for the interfaces */
+ eloop_q_timeout_delete(ctx->eloop, 0, NULL, ifp);
+
+ /* Remove the interface from our list */
TAILQ_REMOVE(ifp->ctx->ifaces, ifp, next);
if_free(ifp);
Index: src/external/bsd/dhcpcd/dist/if-options.c
diff -u src/external/bsd/dhcpcd/dist/if-options.c:1.17 src/external/bsd/dhcpcd/dist/if-options.c:1.18
--- src/external/bsd/dhcpcd/dist/if-options.c:1.17 Fri Nov 7 20:51:02 2014
+++ src/external/bsd/dhcpcd/dist/if-options.c Fri Nov 14 12:00:54 2014
@@ -1,5 +1,5 @@
#include <sys/cdefs.h>
- __RCSID("$NetBSD: if-options.c,v 1.17 2014/11/07 20:51:02 roy Exp $");
+ __RCSID("$NetBSD: if-options.c,v 1.18 2014/11/14 12:00:54 roy Exp $");
/*
* dhcpcd - DHCP client daemon
@@ -32,7 +32,6 @@
#include <sys/param.h>
#include <sys/types.h>
-#include <sys/queue.h>
#include <arpa/inet.h>