Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Nov 2015 03:46:06 +0000 (UTC)
From:      Hiroki Sato <hrs@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r401318 - in head/net/dhcp6: . files
Message-ID:  <201511120346.tAC3k6Yh063906@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hrs
Date: Thu Nov 12 03:46:05 2015
New Revision: 401318
URL: https://svnweb.freebsd.org/changeset/ports/401318

Log:
  - Set FD_CLOEXEC on sockets to prevent leakage.
  
  - Call a configuration script after addresses and prefixes are set
    on an interface.
  
  - Do not call rc.d scripts during uninstallation.
  
  Submitted by:	garga
  PR:		204462
  Obtained from:	pfSense
  Sponsored by:	Rubicon Communications (Netgate)

Added:
  head/net/dhcp6/files/patch-dhcp6c.c   (contents, props changed)
Modified:
  head/net/dhcp6/Makefile
  head/net/dhcp6/files/patch-Makefile.in
  head/net/dhcp6/pkg-plist

Modified: head/net/dhcp6/Makefile
==============================================================================
--- head/net/dhcp6/Makefile	Thu Nov 12 03:31:07 2015	(r401317)
+++ head/net/dhcp6/Makefile	Thu Nov 12 03:46:05 2015	(r401318)
@@ -3,7 +3,7 @@
 
 PORTNAME=	dhcp6
 PORTVERSION=	20080615
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	net ipv6
 MASTER_SITES=	SF/wide-dhcpv6/wide-dhcpv6/wide-dhcpv6-${PORTVERSION}
 DISTNAME=	wide-dhcpv6-${PORTVERSION}

Modified: head/net/dhcp6/files/patch-Makefile.in
==============================================================================
--- head/net/dhcp6/files/patch-Makefile.in	Thu Nov 12 03:31:07 2015	(r401317)
+++ head/net/dhcp6/files/patch-Makefile.in	Thu Nov 12 03:46:05 2015	(r401318)
@@ -1,6 +1,6 @@
---- Makefile.in.orig	2007-03-21 18:52:58.000000000 +0900
-+++ Makefile.in	2013-10-17 12:26:22.000000000 +0900
-@@ -102,14 +102,14 @@
+--- Makefile.in.orig	2007-03-21 09:52:58 UTC
++++ Makefile.in
+@@ -102,14 +102,14 @@ $(srcdir)/ianaopts.h: gentab.pl bootp-dh
  	expand bootp-dhcp-parameters | perl gentab.pl > ianaopts.h
  
  install::

Added: head/net/dhcp6/files/patch-dhcp6c.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/dhcp6/files/patch-dhcp6c.c	Thu Nov 12 03:46:05 2015	(r401318)
@@ -0,0 +1,72 @@
+--- dhcp6c.c.orig	2008-06-15 07:48:41 UTC
++++ dhcp6c.c
+@@ -67,6 +67,7 @@
+ #include <string.h>
+ #include <err.h>
+ #include <ifaddrs.h>
++#include <fcntl.h>
+ 
+ #include <dhcp6.h>
+ #include <config.h>
+@@ -257,7 +258,7 @@ client6_init()
+ {
+ 	struct addrinfo hints, *res;
+ 	static struct sockaddr_in6 sa6_allagent_storage;
+-	int error, on = 1;
++	int error, on = 0;
+ 
+ 	/* get our DUID */
+ 	if (get_duid(DUID_FILE, &client_duid)) {
+@@ -287,6 +288,20 @@ client6_init()
+ 		dprintf(LOG_ERR, FNAME, "socket");
+ 		exit(1);
+ 	}
++
++	if ((on = fcntl(sock, F_GETFL, 0)) == -1) {
++		dprintf(LOG_ERR, FNAME, "fctnl getflags");
++		exit(1);
++	}
++
++	on |= FD_CLOEXEC;
++
++	if ((on = fcntl(sock, F_SETFL, on)) == -1) {
++		dprintf(LOG_ERR, FNAME, "fctnl setflags");
++		exit(1);
++	}
++
++	on = 1;
+ 	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
+ 	}
+ 
+ 	/*
+-	 * Call the configuration script, if specified, to handle various
+-	 * configuration parameters.
+-	 */
+-	if (ifp->scriptpath != NULL && strlen(ifp->scriptpath) != 0) {
+-		dprintf(LOG_DEBUG, FNAME, "executes %s", ifp->scriptpath);
+-		client6_script(ifp->scriptpath, state, optinfo);
+-	}
+-
+-	/*
+ 	 * 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
+ 		    &optinfo->serverID, ev->authparam);
+ 	}
+ 
++	/*
++	 * Call the configuration script, if specified, to handle various
++	 * configuration parameters.
++	 */
++	if (ifp->scriptpath != NULL && strlen(ifp->scriptpath) != 0) {
++		dprintf(LOG_DEBUG, FNAME, "executes %s", ifp->scriptpath);
++		client6_script(ifp->scriptpath, state, optinfo);
++	}
++
+ 	dhcp6_remove_event(ev);
+ 
+ 	if (state == DHCP6S_RELEASE) {

Modified: head/net/dhcp6/pkg-plist
==============================================================================
--- head/net/dhcp6/pkg-plist	Thu Nov 12 03:31:07 2015	(r401317)
+++ head/net/dhcp6/pkg-plist	Thu Nov 12 03:46:05 2015	(r401318)
@@ -1,9 +1,3 @@
-@unexec %D/etc/rc.d/dhcp6s.sh forcestop 2>/dev/null || true
-@unexec %D/etc/rc.d/dhcp6relay.sh forcestop 2>/dev/null || true
-@unexec %D/etc/rc.d/dhcp6c.sh forcestop 2>/dev/null || true
-@unexec %D/etc/rc.d/dhcp6s forcestop 2>/dev/null || true
-@unexec %D/etc/rc.d/dhcp6relay  forcestop 2>/dev/null || true
-@unexec %D/etc/rc.d/dhcp6c forcestop 2>/dev/null || true
 etc/dhcp6s.conf.sample
 etc/dhcp6c.conf.sample
 sbin/dhcp6c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201511120346.tAC3k6Yh063906>