svn commit: r405216 - in head/net/dhcp6: . files
Hiroki Sato
hrs at FreeBSD.org
Mon Jan 4 07:03:18 UTC 2016
Author: hrs
Date: Mon Jan 4 07:03:16 2016
New Revision: 405216
URL: https://svnweb.freebsd.org/changeset/ports/405216
Log:
Add patches to fix the following bugs:
- Fix renewal of IA_NA [*]
- Update ifid on interface restart, it may have changed [*]
- Remove unnecessary PF_ROUTE socket. [*]
- Fix wrong length used in memset().
Obtained from: Debian/Ubuntu/Fedora/Red Hat packages via OpenBSD [*]
Suggested by: Brad Smith [*]
Added:
head/net/dhcp6/files/patch-addrconf.c (contents, props changed)
head/net/dhcp6/files/patch-auth.c (contents, props changed)
Modified:
head/net/dhcp6/Makefile
head/net/dhcp6/files/patch-dhcp6c.c
Modified: head/net/dhcp6/Makefile
==============================================================================
--- head/net/dhcp6/Makefile Mon Jan 4 06:44:45 2016 (r405215)
+++ head/net/dhcp6/Makefile Mon Jan 4 07:03:16 2016 (r405216)
@@ -3,7 +3,7 @@
PORTNAME= dhcp6
PORTVERSION= 20080615
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= net ipv6
MASTER_SITES= SF/wide-dhcpv6/wide-dhcpv6/wide-dhcpv6-${PORTVERSION}
DISTNAME= wide-dhcpv6-${PORTVERSION}
Added: head/net/dhcp6/files/patch-addrconf.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/dhcp6/files/patch-addrconf.c Mon Jan 4 07:03:16 2016 (r405216)
@@ -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);
+
Added: head/net/dhcp6/files/patch-auth.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/net/dhcp6/files/patch-auth.c Mon Jan 4 07:03:16 2016 (r405216)
@@ -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));
+ }
+
+ /*
Modified: head/net/dhcp6/files/patch-dhcp6c.c
==============================================================================
--- head/net/dhcp6/files/patch-dhcp6c.c Mon Jan 4 06:44:45 2016 (r405215)
+++ head/net/dhcp6/files/patch-dhcp6c.c Mon Jan 4 07:03:16 2016 (r405216)
@@ -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);
}
More information about the svn-ports-all
mailing list