aboutsummaryrefslogtreecommitdiff
path: root/net/dhcp6/files
diff options
context:
space:
mode:
authorHiroki Sato <hrs@FreeBSD.org>2016-01-04 07:03:16 +0000
committerHiroki Sato <hrs@FreeBSD.org>2016-01-04 07:03:16 +0000
commitef901777ebe8b055b156c7f557bc25be5c58da36 (patch)
tree749dee7045eb4398f887f96174ac3692be8e1996 /net/dhcp6/files
parentfed27602c8e2ce8e8ab53683df6d333f7c12b7bf (diff)
downloadports-ef901777ebe8b055b156c7f557bc25be5c58da36.tar.gz
ports-ef901777ebe8b055b156c7f557bc25be5c58da36.zip
Notes
Diffstat (limited to 'net/dhcp6/files')
-rw-r--r--net/dhcp6/files/patch-addrconf.c11
-rw-r--r--net/dhcp6/files/patch-auth.c11
-rw-r--r--net/dhcp6/files/patch-dhcp6c.c64
3 files changed, 82 insertions, 4 deletions
diff --git a/net/dhcp6/files/patch-addrconf.c b/net/dhcp6/files/patch-addrconf.c
new file mode 100644
index 000000000000..fdd208bd715f
--- /dev/null
+++ b/net/dhcp6/files/patch-addrconf.c
@@ -0,0 +1,11 @@
+--- addrconf.c.orig 2008-06-15 07:48:40 UTC
++++ addrconf.c
+@@ -173,7 +173,7 @@ update_address(ia, addr, dhcpifp, ctlp,
+ sacreate ? "create" : "update",
+ in6addr2str(&addr->addr, 0), addr->pltime, addr->vltime);
+
+- if (sa->addr.vltime != 0)
++ if (sa->addr.vltime != 0 || sacreate)
+ if (na_ifaddrconf(IFADDRCONF_ADD, sa) < 0)
+ return (-1);
+
diff --git a/net/dhcp6/files/patch-auth.c b/net/dhcp6/files/patch-auth.c
new file mode 100644
index 000000000000..7441e1609849
--- /dev/null
+++ b/net/dhcp6/files/patch-auth.c
@@ -0,0 +1,11 @@
+--- auth.c.orig 2007-03-21 09:52:57 UTC
++++ auth.c
+@@ -222,7 +222,7 @@ hmacmd5_invalidate(hmacmd5_t *ctx)
+ {
+ md5_invalidate(&ctx->md5ctx);
+ memset(ctx->key, 0, sizeof(ctx->key));
+- memset(ctx, 0, sizeof(ctx));
++ memset(ctx, 0, sizeof(*ctx));
+ }
+
+ /*
diff --git a/net/dhcp6/files/patch-dhcp6c.c b/net/dhcp6/files/patch-dhcp6c.c
index 70645a010f34..d86fcbf55790 100644
--- a/net/dhcp6/files/patch-dhcp6c.c
+++ b/net/dhcp6/files/patch-dhcp6c.c
@@ -8,7 +8,15 @@
#include <dhcp6.h>
#include <config.h>
-@@ -257,7 +258,7 @@ client6_init()
+@@ -88,7 +89,6 @@ static sig_atomic_t sig_flags = 0;
+ const dhcp6_mode_t dhcp6_mode = DHCP6_MODE_CLIENT;
+
+ int sock; /* inbound/outbound udp port */
+-int rtsock; /* routing socket */
+ int ctlsock = -1; /* control TCP port */
+ char *ctladdr = DEFAULT_CLIENT_CONTROL_ADDR;
+ char *ctlport = DEFAULT_CLIENT_CONTROL_PORT;
+@@ -257,7 +257,7 @@ client6_init()
{
struct addrinfo hints, *res;
static struct sockaddr_in6 sa6_allagent_storage;
@@ -17,7 +25,7 @@
/* get our DUID */
if (get_duid(DUID_FILE, &client_duid)) {
-@@ -287,6 +288,20 @@ client6_init()
+@@ -287,6 +287,20 @@ client6_init()
dprintf(LOG_ERR, FNAME, "socket");
exit(1);
}
@@ -38,7 +46,55 @@
if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT,
&on, sizeof(on)) < 0) {
dprintf(LOG_ERR, FNAME,
-@@ -1828,15 +1843,6 @@ client6_recvreply(ifp, dh6, len, optinfo
+@@ -337,13 +351,6 @@ client6_init()
+ }
+ freeaddrinfo(res);
+
+- /* open a routing socket to watch the routing table */
+- if ((rtsock = socket(PF_ROUTE, SOCK_RAW, 0)) < 0) {
+- dprintf(LOG_ERR, FNAME, "open a routing socket: %s",
+- strerror(errno));
+- exit(1);
+- }
+-
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = PF_INET6;
+ hints.ai_socktype = SOCK_DGRAM;
+@@ -596,7 +603,7 @@ get_ifname(bpp, lenp, ifbuf, ifbuflen)
+ if (*lenp < ifnamelen || ifnamelen > ifbuflen)
+ return (-1);
+
+- memset(ifbuf, 0, sizeof(ifbuf));
++ memset(ifbuf, 0, ifbuflen);
+ memcpy(ifbuf, *bpp, ifnamelen);
+ if (ifbuf[ifbuflen - 1] != '\0')
+ return (-1); /* not null terminated */
+@@ -763,6 +770,15 @@ client6_ifctl(ifname, command)
+
+ switch(command) {
+ case DHCP6CTL_COMMAND_START:
++ /*
++ * The ifid might have changed, so reset it before releasing the
++ * lease.
++ */
++ if (ifreset(ifp)) {
++ dprintf(LOG_NOTICE, FNAME, "failed to reset %s",
++ ifname);
++ return (-1);
++ }
+ free_resources(ifp);
+ if (client6_start(ifp)) {
+ dprintf(LOG_NOTICE, FNAME, "failed to restart %s",
+@@ -929,7 +945,7 @@ construct_confdata(ifp, ev)
+ "failed to create a new event data");
+ goto fail;
+ }
+- memset(evd, 0, sizeof(evd));
++ memset(evd, 0, sizeof(*evd));
+
+ memset(&iaparam, 0, sizeof(iaparam));
+ iaparam.iaid = iac->iaid;
+@@ -1828,15 +1844,6 @@ client6_recvreply(ifp, dh6, len, optinfo
}
/*
@@ -54,7 +110,7 @@
* Set refresh timer for configuration information specified in
* information-request. If the timer value is specified by the server
* in an information refresh time option, use it; use the protocol
-@@ -1888,6 +1894,15 @@ client6_recvreply(ifp, dh6, len, optinfo
+@@ -1888,6 +1895,15 @@ client6_recvreply(ifp, dh6, len, optinfo
&optinfo->serverID, ev->authparam);
}