aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorDoug Barton <dougb@FreeBSD.org>2011-07-07 19:45:26 +0000
committerDoug Barton <dougb@FreeBSD.org>2011-07-07 19:45:26 +0000
commite080f8cb9aacdb2ce2a5e471fe87538d9dcd977e (patch)
tree48bf3c1365e5d0c7b8dda6b091d4703ddf0255c7 /net
parent867344907176122e9dcd727e48ad6fca3c981ac2 (diff)
downloadports-e080f8cb9aacdb2ce2a5e471fe87538d9dcd977e.tar.gz
ports-e080f8cb9aacdb2ce2a5e471fe87538d9dcd977e.zip
ISC DHCP 4.2.x includes features that were not included in DHCP 4.1.x.
These include: Processing the DHCP to DNS server transactions in an asynchronous fashion. The DHCP server or client can now continue with it's processing while awaiting replies from the DNS server. There are a number of DHCPv6 limitations and features missing in this release, which will be addressed in the future: - DHCPv6 includes human-readable text in status code messages, in English. A method to reconfigure or support other languages would be preferable. - The "host-identifier" option is limited to a simple token. - The client and server can only operate DHCPv4 or DHCPv6 at a time, not both. To use both protocols simultaneously, two instances of the relevant daemon are required, one with the '-6' command line option. PR: ports/158516 Submitted by: Ryan Steinmetz <rpsfa@rit.edu>
Notes
Notes: svn path=/head/; revision=277279
Diffstat (limited to 'net')
-rw-r--r--net/Makefile3
-rw-r--r--net/isc-dhcp42-client/Makefile13
-rw-r--r--net/isc-dhcp42-client/pkg-descr9
-rw-r--r--net/isc-dhcp42-client/pkg-message10
-rw-r--r--net/isc-dhcp42-client/pkg-plist8
-rw-r--r--net/isc-dhcp42-relay/Makefile13
-rw-r--r--net/isc-dhcp42-relay/pkg-descr9
-rw-r--r--net/isc-dhcp42-relay/pkg-message8
-rw-r--r--net/isc-dhcp42-relay/pkg-plist6
-rw-r--r--net/isc-dhcp42-server/Makefile203
-rw-r--r--net/isc-dhcp42-server/distinfo2
-rw-r--r--net/isc-dhcp42-server/files/extra-patch-bind__Makefile11
-rw-r--r--net/isc-dhcp42-server/files/isc-dhcpd.in524
-rw-r--r--net/isc-dhcp42-server/files/isc-dhcrelay.in70
-rw-r--r--net/isc-dhcp42-server/files/patch-client__Makefile.in13
-rw-r--r--net/isc-dhcp42-server/files/patch-client__dhclient.conf11
-rw-r--r--net/isc-dhcp42-server/files/patch-server__Makefile.am23
-rw-r--r--net/isc-dhcp42-server/files/patch-server__Makefile.in13
-rw-r--r--net/isc-dhcp42-server/files/patch-server__bpf.c10
-rw-r--r--net/isc-dhcp42-server/pkg-descr9
-rw-r--r--net/isc-dhcp42-server/pkg-message26
-rw-r--r--net/isc-dhcp42-server/pkg-plist31
22 files changed, 1025 insertions, 0 deletions
diff --git a/net/Makefile b/net/Makefile
index 83338767f5a1..df8cfc03fbc4 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -260,6 +260,9 @@
SUBDIR += isc-dhcp41-server
SUBDIR += isc-dhcp41-client
SUBDIR += isc-dhcp41-relay
+ SUBDIR += isc-dhcp42-server
+ SUBDIR += isc-dhcp42-client
+ SUBDIR += isc-dhcp42-relay
SUBDIR += iscsi-target
SUBDIR += istgt
SUBDIR += iwi-firmware
diff --git a/net/isc-dhcp42-client/Makefile b/net/isc-dhcp42-client/Makefile
new file mode 100644
index 000000000000..971c40e4fab2
--- /dev/null
+++ b/net/isc-dhcp42-client/Makefile
@@ -0,0 +1,13 @@
+# Ports collection makefile for: isc-dhcp42-client
+# Date created: 29 June 2011
+# Whom: Ryan Steinmetz <rpsfa@rit.edu>
+#
+# $FreeBSD$
+#
+
+COMMENT= The ISC Dynamic Host Configuration Protocol client
+
+SUBSYS= client
+MASTERDIR= ${.CURDIR}/../isc-dhcp42-server
+
+.include "${MASTERDIR}/Makefile"
diff --git a/net/isc-dhcp42-client/pkg-descr b/net/isc-dhcp42-client/pkg-descr
new file mode 100644
index 000000000000..f7aff7b6b485
--- /dev/null
+++ b/net/isc-dhcp42-client/pkg-descr
@@ -0,0 +1,9 @@
+The ISC Dynamic Host Configuration Protocol Distribution provides a
+freely redistributable reference implementation of all aspects of the
+DHCP protocol, through a suite of DHCP tools:
+
+ * A DHCP server
+ * A DHCP client (this port)
+ * A DHCP relay agent
+
+WWW: https://www.isc.org/products/DHCP/
diff --git a/net/isc-dhcp42-client/pkg-message b/net/isc-dhcp42-client/pkg-message
new file mode 100644
index 000000000000..b3746cd3ffeb
--- /dev/null
+++ b/net/isc-dhcp42-client/pkg-message
@@ -0,0 +1,10 @@
+**** To setup dhclient, you may need to edit /etc/rc.conf to replace the
+ base system dhclient as follows:
+
+ dhcp_program="%%PREFIX%%/sbin/dhclient"
+ dhcp_flags="-q"
+
+ See dhclient(8), using the following command, for details about other
+ possible options:
+
+ MANPATH=%%MAN1PREFIX%%/man man 8 dhclient
diff --git a/net/isc-dhcp42-client/pkg-plist b/net/isc-dhcp42-client/pkg-plist
new file mode 100644
index 000000000000..06b9afd39ee3
--- /dev/null
+++ b/net/isc-dhcp42-client/pkg-plist
@@ -0,0 +1,8 @@
+@comment $FreeBSD$
+sbin/dhclient
+sbin/dhclient-script
+@unexec if cmp -s %D/etc/dhclient.conf.sample %D/etc/dhclient.conf; then rm -f %D/etc/dhclient.conf; fi
+etc/dhclient.conf.sample
+@exec if [ ! -f %D/etc/dhclient.conf ] ; then cp -p %D/%F %B/dhclient.conf; fi
+@exec [ -f /var/run/dhclient.leases ] || touch /var/run/dhclient.leases
+@unexec [ -s /var/run/dhclient.leases ] || rm -f /var/run/dhclient.leases
diff --git a/net/isc-dhcp42-relay/Makefile b/net/isc-dhcp42-relay/Makefile
new file mode 100644
index 000000000000..ebcc85c36221
--- /dev/null
+++ b/net/isc-dhcp42-relay/Makefile
@@ -0,0 +1,13 @@
+# Ports collection makefile for: isc-dhcp42-relay
+# Date created: 29 June 2011
+# Whom: Ryan Steinmetz <rpsfa@rit.edu>
+#
+# $FreeBSD$
+#
+
+COMMENT= The ISC Dynamic Host Configuration Protocol relay
+
+SUBSYS= relay
+MASTERDIR= ${.CURDIR}/../isc-dhcp42-server
+
+.include "${MASTERDIR}/Makefile"
diff --git a/net/isc-dhcp42-relay/pkg-descr b/net/isc-dhcp42-relay/pkg-descr
new file mode 100644
index 000000000000..13a4d863a58d
--- /dev/null
+++ b/net/isc-dhcp42-relay/pkg-descr
@@ -0,0 +1,9 @@
+The ISC Dynamic Host Configuration Protocol Distribution provides a
+freely redistributable reference implementation of all aspects of the
+DHCP protocol, through a suite of DHCP tools:
+
+ * A DHCP server
+ * A DHCP client
+ * A DHCP relay agent (this port)
+
+WWW: https://www.isc.org/products/DHCP/
diff --git a/net/isc-dhcp42-relay/pkg-message b/net/isc-dhcp42-relay/pkg-message
new file mode 100644
index 000000000000..3b246d6a38c2
--- /dev/null
+++ b/net/isc-dhcp42-relay/pkg-message
@@ -0,0 +1,8 @@
+**** This port installs the dhcp relay daemon, but doesn't invoke dhcrelay by
+ default. If you want to invoke dhcrelay at startup, add the following
+ lines to /etc/rc.conf:
+
+ dhcrelay_enable="YES"
+ dhcrelay_flags="" # command option(s)
+ dhcrelay_servers="" # dhcrelay server(s)
+ dhcrelay_ifaces="" # ethernet interface(s)
diff --git a/net/isc-dhcp42-relay/pkg-plist b/net/isc-dhcp42-relay/pkg-plist
new file mode 100644
index 000000000000..9451e9795e35
--- /dev/null
+++ b/net/isc-dhcp42-relay/pkg-plist
@@ -0,0 +1,6 @@
+@comment $FreeBSD: /tmp/pcvs/ports/net/isc-dhcp42-relay/pkg-plist,v 1.1 2011-07-07 19:45:26 dougb Exp $
+@unexec %D/etc/rc.d/isc-dhcrelay.sh forcestop 2>/dev/null || true
+@unexec %D/etc/rc.d/isc-dhcrelay forcestop 2>/dev/null || true
+%%IPV6%%@unexec %D/etc/rc.d/isc-dhcrelay6 forcestop 2>/dev/null || true
+%%IPV6%%etc/rc.d/isc-dhcrelay6
+sbin/dhcrelay
diff --git a/net/isc-dhcp42-server/Makefile b/net/isc-dhcp42-server/Makefile
new file mode 100644
index 000000000000..4bc6353d2e75
--- /dev/null
+++ b/net/isc-dhcp42-server/Makefile
@@ -0,0 +1,203 @@
+# Ports collection makefile for: isc-dhcp42-server
+# Date created: 29 June 2011
+# Whom: Ryan Steinmetz <rpsfa@rit.edu>
+#
+# $FreeBSD$
+#
+
+PORTNAME= dhcp
+DISTVERSION= 4.2.1
+#PORTREVISION= ${DHCP_PORTREVISION}
+CATEGORIES= net
+MASTER_SITES= ${MASTER_SITE_ISC}
+MASTER_SITE_SUBDIR= dhcp
+PKGNAMEPREFIX= isc-
+PKGNAMESUFFIX= 42-${SUBSYS}
+DISTNAME= ${PORTNAME}-${DISTVERSION}-${PATCHLEVEL}
+
+MAINTAINER= rpsfa@rit.edu
+COMMENT?= The ISC Dynamic Host Configuration Protocol server
+
+USE_GMAKE= yes
+
+LICENSE= ISCL
+
+PATCHLEVEL= P1
+PORTREVISION_SERVER= 0
+PORTREVISION_CLIENT= 0
+PORTREVISION_RELAY= 0
+
+SUBSYS?= server
+WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}-${PATCHLEVEL}
+
+UNIQUENAME= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
+
+OPTIONS= DHCP_IPV6 "Enable support for IPv6" on
+
+.if ${SUBSYS} == server
+OPTIONS+= DHCP_PARANOIA "Enable support for chroot" on \
+ DHCP_LDAP "With LDAP support" off \
+ DHCP_LDAP_SSL "Support LDAP over SSL/TLS" on \
+ BIND_SYMBOLS "Enable BIND internal symbol table" off
+.endif
+
+# PORTREVISION and CONFLICTS handling
+.if ${SUBSYS} == client
+CONFLICTS= isc-dhcp3?-client-[0-9]* isc-dhcp41-client-[0-9]*
+DHCP_PORTREVISION= ${PORTREVISION_CLIENT}
+.elif ${SUBSYS} == relay
+CONFLICTS= isc-dhcp3?-relay-[0-9]* isc-dhcp41-relay-[0-9]*
+DHCP_PORTREVISION= ${PORTREVISION_RELAY}
+.else
+CONFLICTS= isc-dhcp3?-server-[0-9]* isc-dhcp41-server-[0-9]*
+DHCP_PORTREVISION= ${PORTREVISION_SERVER}
+.endif
+
+.if ${SUBSYS} == server
+USERS= dhcpd
+GROUPS= dhcpd
+.endif
+
+MAN_COMPRESSED= no
+GNU_CONFIGURE= yes
+CPPFLAGS+= -D_PATH_DHCLIENT_SCRIPT='\"${PREFIX}/sbin/dhclient-script\"' -D_PATH_DHCLIENT_CONF='\"${PREFIX}/etc/dhclient.conf\"' -D_PATH_DHCPD_CONF='\"${PREFIX}/etc/dhcpd.conf\"'
+SCRIPTS_ENV+= PKG_PREFIX=${PREFIX}
+
+.include <bsd.port.options.mk>
+
+.if ${SUBSYS} == client
+MAN5+= dhclient.conf.5 dhclient.leases.5
+MAN8+= dhclient.8 dhclient-script.8
+CONF_FILE= dhclient.conf
+.elif ${SUBSYS} == server
+CONFIGURE_ARGS+= --localstatedir=/var
+MAN5+= dhcpd.conf.5 dhcpd.leases.5 dhcp-eval.5 dhcp-options.5
+MAN8+= dhcpd.8
+MAN1= omshell.1
+MAN3= dhcpctl.3 omapi.3
+CFLAGS+= -fPIC
+CONF_FILE= dhcpd.conf
+.if defined(WITH_DHCP_IPV6)
+CONF_FILE+= dhcpd6.conf
+.endif
+.else
+MAN8+= dhcrelay.8
+.endif
+
+DESCR= ${.CURDIR}/pkg-descr
+PLIST= ${.CURDIR}/pkg-plist
+
+.if ${SUBSYS} == server
+USE_RC_SUBR= isc-dhcpd
+.elif ${SUBSYS} == relay
+USE_RC_SUBR= isc-dhcrelay
+.endif
+
+SCHEMA_DIR= ${PREFIX}/share/${PKGBASE}
+DOCSDIR= ${PREFIX}/share/doc/${PKGBASE}
+DATADIR= /var/db
+
+MSG_FILE= ${.CURDIR}/pkg-message
+PKGMESSAGE= ${WRKDIR}/pkg-message
+
+REINPLACE_SUB= PREFIX="${PREFIX}"
+PKGMESSAGE_SUB= PREFIX="${PREFIX}" MAN1PREFIX="${MAN1PREFIX}" \
+ DOCSDIR="${DOCSDIR}"
+
+.if defined(WITH_DHCP_PARANOIA)
+CONFIGURE_ARGS+=--enable-paranoia --enable-early-chroot
+SUB_LIST+= PARANOIA=yes
+.else
+SUB_LIST+= PARANOIA=no
+.endif
+
+.if defined(WITH_DHCP_LDAP)
+CONFIGURE_ARGS+=--with-ldap
+USE_OPENLDAP= yes
+LDAP_SCRIPT= ${WRKSRC}/contrib/ldap/dhcpd-conf-to-ldap
+LDAP_SCHEMA= ${WRKSRC}/contrib/ldap/dhcp.schema
+CFLAGS+= -I${LOCALBASE}/include -L${LOCALBASE}/lib
+PORTDOCS+= README.ldap
+PLIST_SUB+= SCHEMA_DIR="${SCHEMA_DIR:S,^${PREFIX}/,,}" LDAP=""
+.else
+PLIST_SUB+= LDAP="@comment "
+.endif
+
+.if defined(WITH_DHCP_LDAP_SSL) && defined(WITH_DHCP_LDAP)
+USE_OPENSSL= yes
+CONFIGURE_ARGS+=--with-ldapcrypto
+CONFIGURE_ENV+= LIBS="-lssl"
+.include "${PORTSDIR}/Mk/bsd.openssl.mk"
+.endif
+
+.if defined(WITH_DHCP_IPV6)
+CONFIGURE_ARGS+=--enable-dhcpv6
+PLIST_SUB+= IPV6=""
+.else
+CONFIGURE_ARGS+=--disable-dhcpv6
+PLIST_SUB+= IPV6="@comment "
+.endif
+
+.if defined(WITH_BIND_SYMBOLS)
+USE_PERL5= yes
+.else
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-bind__Makefile
+.endif
+
+post-patch:
+ @${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
+ ${MSG_FILE} > ${PKGMESSAGE}
+ @${REINPLACE_CMD} ${REINPLACE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
+ ${WRKSRC}/client/dhclient.conf
+
+do-install:
+ ${MAKE} -C ${WRKSRC}/${SUBSYS} install
+.if ${SUBSYS} == server
+ ${MAKE} -C ${WRKSRC}/dhcpctl install
+ ${MAKE} -C ${WRKSRC}/dst install
+ ${MAKE} -C ${WRKSRC}/omapip install
+ ${MAKE} -C ${WRKSRC}/includes install
+ ${MAKE} -C ${WRKSRC}/common install
+ ${INSTALL_DATA} ${WRKSRC}/dhcpctl/dhcpctl.h ${PREFIX}/include
+.if defined(WITH_DHCP_IPV6)
+ ${INSTALL_DATA} ${WRKSRC}/doc/examples/dhcpd-dhcpv6.conf \
+ ${PREFIX}/etc/dhcpd6.conf.sample
+.endif
+.if defined(WITH_DHCP_LDAP)
+ @${MKDIR} ${SCHEMA_DIR}
+ ${INSTALL_DATA} ${LDAP_SCHEMA} ${SCHEMA_DIR}
+ ${INSTALL_SCRIPT} ${LDAP_SCRIPT} ${PREFIX}/bin
+.endif
+.if defined(WITH_DHCP_LDAP) && !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ ${INSTALL_MAN} ${WRKSRC}/contrib/ldap/README.ldap ${DOCSDIR}
+.endif
+.endif
+
+post-install:
+.if defined(CONF_FILE)
+.for FILE in ${CONF_FILE}
+ if [ ! -f ${PREFIX}/etc/${FILE} ]; then \
+ ${CP} -p ${PREFIX}/etc/${FILE}.sample ${PREFIX}/etc/${FILE} ; \
+ fi
+.endfor
+.endif
+.if ${SUBSYS} == client
+ ${INSTALL_SCRIPT} ${WRKSRC}/client/scripts/freebsd ${PREFIX}/sbin/dhclient-script
+.elif ${SUBSYS} == server
+.if defined(WITH_DHCP_IPV6)
+ @${LN} -sf isc-dhcpd ${PREFIX}/etc/rc.d/isc-dhcpd6
+.endif
+.elif ${SUBSYS} == relay
+.if defined(WITH_DHCP_IPV6)
+ @${LN} -sf isc-dhcrelay ${PREFIX}/etc/rc.d/isc-dhcrelay6
+.endif
+.endif
+ @${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
+ ${MSG_FILE} > ${PKGMESSAGE}
+#@${REINPLACE_CMD} -e '/^%%LDAP%%/d' ${PKGMESSAGE}
+ @${ECHO_MSG}
+ @${CAT} ${PKGMESSAGE}
+ @${ECHO_MSG}
+
+.include <bsd.port.mk>
diff --git a/net/isc-dhcp42-server/distinfo b/net/isc-dhcp42-server/distinfo
new file mode 100644
index 000000000000..f776fd213545
--- /dev/null
+++ b/net/isc-dhcp42-server/distinfo
@@ -0,0 +1,2 @@
+SHA256 (dhcp-4.2.1-P1.tar.gz) = 6cd5e06512c53ad43d71400f39071ce0bd07f074e416c727d5bc7e5949ec55ec
+SIZE (dhcp-4.2.1-P1.tar.gz) = 8797289
diff --git a/net/isc-dhcp42-server/files/extra-patch-bind__Makefile b/net/isc-dhcp42-server/files/extra-patch-bind__Makefile
new file mode 100644
index 000000000000..135768648d47
--- /dev/null
+++ b/net/isc-dhcp42-server/files/extra-patch-bind__Makefile
@@ -0,0 +1,11 @@
+--- ./bind/Makefile.orig 2011-06-29 07:31:02.000000000 -0400
++++ ./bind/Makefile 2011-06-29 07:31:22.000000000 -0400
+@@ -45,7 +45,7 @@
+ # Currently disable the epoll and devpoll options as they don't interact
+ # well with the DHCP code.
+ @echo Configuring BIND Export libraries for DHCP.
+- @(cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib > ${binddir}/configure.log)
++ @(cd ${bindsrcdir} && ./configure --disable-symtable --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib > ${binddir}/configure.log)
+
+ # Build the export libraries
+ @echo Building BIND Export libraries - this takes some time.
diff --git a/net/isc-dhcp42-server/files/isc-dhcpd.in b/net/isc-dhcp42-server/files/isc-dhcpd.in
new file mode 100644
index 000000000000..daca8370ca39
--- /dev/null
+++ b/net/isc-dhcp42-server/files/isc-dhcpd.in
@@ -0,0 +1,524 @@
+#! /bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: dhcpd
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf to enable dhcpd:
+#
+# dhcpd_enable="YES"
+
+. /etc/rc.subr
+
+case $0 in
+/etc/rc*)
+ # during boot (shutdown) $0 is /etc/rc (/etc/rc.shutdown),
+ # so get the name of the script from $_file
+ name=$_file
+ ;;
+*)
+ name=$0
+ ;;
+esac
+
+name=${name##*/isc-}
+paranoia=%%PARANOIA%% # compiled in paranoia?
+
+load_rc_config ${name}
+
+# override these variables in /etc/rc.conf
+eval ": \${${name}_enable:=\"NO\"}"
+# dhcpd_flags="" # -q -early_chroot # command option(s)
+# dhcpd_ifaces="" # ethernet interface(s)
+eval ": \${${name}_conf:=%%PREFIX%%/etc/${name}.conf}" # configuration file
+eval ": \${${name}_withumask:=022}" # file creation mask
+
+eval ": \${${name}_chuser_enable:=\"%%PARANOIA%%\"}" # runs w/o privileges?
+eval ": \${${name}_withuser:=dhcpd}" # user name to run as
+eval ": \${${name}_withgroup:=dhcpd}" # group name to run as
+
+eval ": \${${name}_chroot_enable:=\"NO\"}" # runs chrooted?
+eval ": \${${name}_devfs_enable:=\"YES\"}" # devfs if available?
+eval ": \${${name}_rootdir:=/var/db/${name}}" # directory to run in
+# dhcpd_includedir="" # directory for included config files
+
+safe_run () # rc command [args...]
+{
+ local _rc
+
+ _rc=$1
+ shift
+
+ if [ "${_rc}" -eq 0 ]; then
+ debug safe_run: "$@"
+ "$@" || _rc=1
+ else
+ warn safe_run: "$@"
+ fi
+ return ${_rc}
+}
+
+precious () # entry...
+{
+ local _entry _rc
+
+ _rc=0
+ for _entry; do
+ # do nothing if /dev, /var/run or /var/db
+ echo ${_entry} | egrep -q '^//*(dev|var//*(run|db))?/*$' || _rc=1
+ done
+ debug precious: "$@" rc=${_rc}
+ return ${_rc}
+}
+
+lsmod () # user group file...
+{
+ local _entry _user _group _rc
+
+ _user=$1 _group=$2
+ shift 2
+
+ _rc=0
+ for _entry; do
+ ls -ld ${_entry} 2> /dev/null |
+ awk -v u=${_user} -v g=${_group} '{
+ exit ((u && $3 != u) || (g && $4 != g))
+ }' || _rc=1
+ done
+ debug lsmod: "$@" rc=${_rc}
+ return ${_rc}
+}
+
+safe_chmog () # entry...
+{
+ local _entry _user _group _usergroup _rc
+
+ eval "_user=\${${name}_withuser}"
+ eval "_group=\${${name}_withgroup}"
+
+ _rc=0
+ if [ -n "${_user}" -o -n "${_group}" ]; then
+ _usergroup=${_user}${_group:+:${_group}}
+ for _entry; do
+ if [ -d ${_entry} ] && mounted ${_entry}; then
+ continue
+ fi
+ if [ -e ${_entry} ] &&
+ ! precious ${_entry} &&
+ ! lsmod ${_user} ${_group} ${_entry} &&
+ ! safe_run ${_rc} chown ${_usergroup} ${_entry}; then
+ warn "unable to change permissions of ${_entry}"
+ _rc=1
+ fi
+ done
+ fi
+ return ${_rc}
+}
+
+safe_mkdir () # dir...
+{
+ local _dir _rc
+
+ _rc=0
+ for _dir; do
+ if [ ! -d ${_dir} ] &&
+ ! precious ${_dir} &&
+ ! safe_run ${_rc} mkdir -p ${_dir}; then
+ err 1 "unable to create directory ${_dir}"
+ _rc=1
+ fi
+ done
+ safe_run ${_rc} safe_chmog "$@" || _rc=1
+ return ${_rc}
+}
+
+safe_rmdir () # dir...
+{
+ local _dir _rc
+
+ _rc=0
+ for _dir; do
+ if [ -d ${_dir} ] &&
+ ! precious ${_dir} &&
+ ! mounted ${_dir}; then
+ if safe_run ${_rc} rmdir ${_dir}; then
+ safe_run ${_rc} safe_rmdir ${_dir%/*} || _rc=1
+ else
+ warn "unable to remove directory ${_dir}"
+ _rc=1
+ fi
+ fi
+ done
+ return ${_rc}
+}
+
+safe_touch () # file...
+{
+ local _file _rc
+
+ _rc=0
+ for _file; do
+ if [ ! -e ${_file} ] &&
+ ! safe_run ${_rc} touch ${_file}; then
+ err 1 "unable to create file ${_file}"
+ _rc=1
+ fi
+ done
+ safe_run ${_rc} safe_chmog "$@" || _rc=1
+ return ${_rc}
+}
+
+safe_remove () # entry...
+{
+ local _entry _rc
+
+ _rc=0
+ for _entry; do
+ if [ -f ${_entry} ]; then
+ if ! safe_run ${_rc} rm -f ${_entry}; then
+ warn "unable to remove file ${_entry}"
+ _rc=1
+ fi
+ elif [ -d ${_entry} ] &&
+ ! precious ${_entry} &&
+ ! mounted ${_entry}; then
+ if ! safe_run ${_rc} rm -rf ${_entry}; then
+ warn "unable to remove directory ${_entry}"
+ _rc=1
+ fi
+ fi
+ done
+ return ${_rc}
+}
+
+safe_copy () # src dst
+{
+ local _src _dst _rc
+
+ _src=$1 _dst=$2
+
+ _rc=0
+ if [ -f ${_src} ]; then
+ if ! safe_run ${_rc} safe_remove ${_dst} ||
+ ! safe_run ${_rc} cp -p ${_src} ${_dst}; then
+ err 1 "unable to copy file ${_src} to ${_dst}"
+ _rc=1
+ fi
+ safe_run ${_rc} safe_chmog ${_dst} || _rc=1
+ elif [ -d ${_src} ] &&
+ ! precious ${_dst} &&
+ ! mounted ${_dst}; then
+ if ! safe_run ${_rc} pax -rw -pe -ts "|^${_src}||" \
+ ${_src} ${_dst}; then
+ err 1 "unable to copy directory ${_src} to ${_dst}"
+ _rc=1
+ fi
+ else
+ err 1 "unable to copy ${_src} to ${_dst}" \
+ "-- not a file or a directory"
+ _rc=1
+ fi
+ return ${_rc}
+}
+
+mounted () # dir...
+{
+ local _rc
+
+ _rc=1
+ if checkyesno ${name}_devfs_enable; then
+ mount -t devfs | awk '
+ BEGIN { n = ARGC; ARGC = 2 }
+ { for (i = 2; i != n; i++) if ($3 == ARGV[i]) exit 1 }
+ ' - "$@" || _rc=0
+ fi
+ debug mounted: "$@" rc=${_rc}
+ return ${_rc}
+}
+
+safe_mount () # dir
+{
+ local _dir _rc
+
+ _dir=$1
+
+ _rc=0
+ if checkyesno ${name}_devfs_enable &&
+ ! mounted ${_dir} &&
+ ! safe_run ${_rc} mount -t devfs devfs ${_dir}; then
+ err 1 "unable to mount ${_dir}"
+ _rc=1
+ fi
+ return ${_rc}
+}
+
+safe_umount () # dir
+{
+ local _dir _rc
+
+ _dir=$1
+
+ _rc=0
+ if checkyesno ${name}_devfs_enable &&
+ mounted ${_dir} &&
+ ! safe_run ${_rc} umount ${_dir}; then
+ warn "unable to unmount ${_dir}"
+ _rc=1
+ fi
+ return ${_rc}
+}
+
+check_chuser ()
+{
+ if checkyesno paranoia; then
+ if checkyesno ${name}_chuser_enable &&
+ eval "[ -z \"\${${name}_withuser}\" -a -z \"\${${name}_withgroup}\" ]"; then
+ err 1 "one of ${name}_withuser and ${name}_withgroup" \
+ "must be set if ${name}_chuser_enable is enabled"
+ fi
+ else
+ if checkyesno ${name}_chuser_enable; then
+ warn "${name}_chuser_enable disabled -- not compiled in"
+ eval "${name}_chuser_enable=NO"
+ fi
+ fi
+}
+
+check_chroot ()
+{
+ if checkyesno paranoia; then
+ if checkyesno ${name}_chroot_enable; then
+ if eval "[ -z \"\${${name}_rootdir}\" ]"; then
+ err 1 "${name}_rootdir must be set" \
+ "if ${name}_chroot_enable is enabled"
+ fi
+ if test `uname -r | cut -c 1` -le 6; then
+ if checkyesno ${name}_devfs_enable &&
+ ! ( type mount_devfs ) > /dev/null 2>&1;
+ then
+ warn "${name}_devfs_enable disabled" \
+ "-- not available"
+ eval "${name}_devfs_enable=NO"
+ fi
+ fi
+ else
+ eval "${name}_devfs_enable=NO"
+ fi
+ else
+ if checkyesno ${name}_chroot_enable; then
+ warn "${name}_chroot_enable disabled -- not compiled in"
+ eval "${name}_chroot_enable=NO"
+ fi
+ eval "${name}_devfs_enable=NO"
+ fi
+}
+
+rcvar_chuser ()
+{
+ if checkyesno paranoia && checkyesno ${name}_chuser_enable; then
+ eval "${name}_piddir=\${__dhcpd_piddir}/\${name}"
+ eval "${name}_leasesdir=\${__dhcpd_leasesdir}/\${name}"
+ else
+ eval unset "${name}_withuser= ${name}_withgroup="
+ fi
+}
+
+rcvar_chroot ()
+{
+ if ! checkyesno paranoia || ! checkyesno ${name}_chroot_enable; then
+ eval "${name}_rootdir="
+ elif checkyesno paranoia && checkyesno ${name}_chroot_enable; then
+ eval "${name}_devdir=\${__dhcpd_devdir}"
+ eval "${name}_etcdir=\${__dhcpd_etcdir}"
+ fi
+}
+
+rcvar_pidnleases ()
+{
+ if ! checkyesno ${name}_chuser_enable; then
+ eval "${name}_piddir=\${__dhcpd_piddir}"
+ eval "${name}_leasesdir=\${__dhcpd_leasesdir}"
+ fi
+ eval "${name}_pidfile=\${${name}_piddir}/\${name}.pid"
+ eval "${name}_leasesfile=\${${name}_leasesdir}/\${name}.leases"
+ eval "${name}_conffile=\${${name}_conf}" # for convenience only
+ eval "${name}_confdir=\$(dirname \${${name}_conffile})"
+}
+
+rcvar_rooted ()
+{
+ eval "_dhcpd_rootdir=\${${name}_rootdir}"
+ eval "_dhcpd_devdir=\${${name}_rootdir}\${${name}_devdir}"
+ eval "_dhcpd_etcdir=\${${name}_rootdir}\${${name}_etcdir}"
+ eval "_dhcpd_confdir=\${${name}_rootdir}\${${name}_confdir}"
+ eval "_dhcpd_includedir=\${${name}_rootdir}\${${name}_includedir}"
+ eval "_dhcpd_piddir=\${${name}_rootdir}\${${name}_piddir}"
+ eval "_dhcpd_leasesdir=\${${name}_rootdir}\${${name}_leasesdir}"
+ eval "_dhcpd_conffile=\${${name}_rootdir}\${${name}_conffile}"
+ eval "_dhcpd_pidfile=\${${name}_rootdir}\${${name}_pidfile}"
+ eval "_dhcpd_leasesfile=\${${name}_rootdir}\${${name}_leasesfile}"
+}
+
+setup_umask ()
+{
+ if eval "[ -n \"\${${name}_withumask}\" ]"; then
+ eval "umask \${${name}_withumask}"
+ fi
+}
+
+setup_chroot ()
+{
+ local _hconf _hosts _ltime _rconf
+
+ _hconf=host.conf
+ _hosts=hosts
+ _ltime=localtime
+ _rconf=resolv.conf
+
+ if checkyesno paranoia && checkyesno ${name}_chroot_enable; then
+ if ! mounted ${_dhcpd_devdir}; then
+ safe_mkdir ${_dhcpd_devdir}/_
+ # XXX /_ hack! so, .../dev is root owned.
+ fi
+ safe_mkdir ${_dhcpd_rootdir} ${_dhcpd_etcdir}/_ ${_dhcpd_confdir}
+ # XXX /_ hack! so, .../etc is root owned.
+ if checkyesno ${name}_devfs_enable; then
+ safe_mount ${_dhcpd_devdir}
+ else
+ eval "safe_copy \${${name}_devdir} \${_dhcpd_devdir}"
+ fi
+ eval "safe_copy \${${name}_conffile} \${_dhcpd_conffile}"
+ eval "safe_copy \${${name}_etcdir}/\$_hconf \${_dhcpd_etcdir}/\$_hconf"
+ eval "safe_copy \${${name}_etcdir}/\$_hosts \${_dhcpd_etcdir}/\$_hosts"
+ eval "safe_copy \${${name}_etcdir}/\$_ltime \${_dhcpd_etcdir}/\$_ltime"
+ eval "safe_copy \${${name}_etcdir}/\$_rconf \${_dhcpd_etcdir}/\$_rconf"
+ # copy dhcpd_includedir if defined and available
+ if eval "[ -d \"\${${name}_includedir}\" ]"; then
+ safe_mkdir ${_dhcpd_includedir}
+ eval "safe_copy \${${name}_includedir} \${_dhcpd_includedir}"
+ fi
+ fi
+}
+
+setup_chuser ()
+{
+ if checkyesno paranoia && {
+ checkyesno ${name}_chuser_enable || checkyesno ${name}_chroot_enable
+ }; then
+ safe_mkdir ${_dhcpd_piddir} ${_dhcpd_leasesdir}
+ fi
+}
+
+setup_leases ()
+{
+ safe_touch ${_dhcpd_leasesfile}
+}
+
+setup_flags ()
+{
+ if [ "${name}" = "dhcpd6" ]; then
+ rc_flags="${rc_flags} -6"
+ fi
+ if eval "[ -n \"\${${name}_conf}\" ]"; then
+ eval "rc_flags=\"\${rc_flags} -cf \${${name}_conf}\""
+ fi
+ if eval "[ -n \"\${${name}_leasesfile}\" ]"; then
+ eval "rc_flags=\"\${rc_flags} -lf \${${name}_leasesfile}\""
+ fi
+ if eval "[ -n \"\${${name}_pidfile}\" ]"; then
+ eval "rc_flags=\"\${rc_flags} -pf \${${name}_pidfile}\""
+ fi
+ if eval "[ -n \"\${${name}_withuser}\" ]"; then
+ eval "rc_flags=\"\${rc_flags} -user \${${name}_withuser}\""
+ fi
+ if eval "[ -n \"\${${name}_withgroup}\" ]"; then
+ eval "rc_flags=\"\${rc_flags} -group \${${name}_withgroup}\""
+ fi
+ if eval "[ -n \"\${${name}_rootdir}\" ]"; then
+ eval "rc_flags=\"\${rc_flags} -chroot \${${name}_rootdir}\""
+ fi
+ eval "rc_flags=\"\${rc_flags} \${${name}_ifaces}\""
+}
+
+cleanup_chroot ()
+{
+ if checkyesno paranoia && checkyesno ${name}_chroot_enable; then
+ safe_umount ${_dhcpd_devdir}
+ fi
+}
+
+dhcpd_stop ()
+{
+ if sh $0 forcestatus; then
+ sh $0 forcestop
+ fi
+}
+
+dhcpd_check ()
+{
+ check_chuser
+ check_chroot
+}
+
+dhcpd_rcvar ()
+{
+ rcvar_chuser
+ rcvar_chroot
+ rcvar_pidnleases
+ rcvar_rooted
+}
+
+dhcpd_precmd ()
+{
+ setup_umask
+ setup_chroot
+ setup_chuser
+ setup_leases
+ setup_flags
+}
+
+dhcpd_postcmd ()
+{
+ cleanup_chroot
+}
+
+dhcpd_checkconfig ()
+{
+ local rc_flags_mod
+ setup_flags
+ rc_flags_mod="$rc_flags"
+ # Eliminate '-q' flag if it is present
+ case "$rc_flags" in
+ *-q*) rc_flags_mod=`echo "${rc_flags}" | sed -Ee 's/(^-q | -q | -q$)//'` ;;
+ esac
+ if ! ${command} -t -q ${rc_flags_mod}; then
+ err 1 "`${command} -t ${rc_flags_mod}` Configuration file sanity check failed"
+ fi
+}
+
+rcvar=${name}_enable
+load_rc_config ${name}
+
+__dhcpd_uninstall="NO" # internal use only
+__dhcpd_devdir=/dev # devices directory
+__dhcpd_etcdir=/etc # etc directory
+__dhcpd_piddir=/var/run # pid file directory
+__dhcpd_leasesdir=/var/db # leases file directory
+#__dhcpd_rootdir=/var/db/${name} # root directory
+
+dhcpd_check
+dhcpd_rcvar
+
+command=%%PREFIX%%/sbin/dhcpd
+pidfile=${_dhcpd_pidfile}
+eval "required_files=\${${name}_conf}"
+start_precmd=dhcpd_precmd
+stop_postcmd=dhcpd_postcmd
+restart_precmd="dhcpd_checkconfig"
+uninstall_cmd=dhcpd_uninstall
+extra_commands="uninstall"
+
+run_rc_command "$1"
diff --git a/net/isc-dhcp42-server/files/isc-dhcrelay.in b/net/isc-dhcp42-server/files/isc-dhcrelay.in
new file mode 100644
index 000000000000..6994157835c7
--- /dev/null
+++ b/net/isc-dhcp42-server/files/isc-dhcrelay.in
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: dhcrelay
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf to enable dhcrelay:
+#
+# dhcrelay_enable="YES"
+
+# override these variables in /etc/rc.conf
+dhcrelay_enable=${dhcrelay_enable:-"NO"}
+dhcrelay6_enable=${dhcrelay6_enable:-"NO"}
+# dhcrelay_flags="" # command option(s)
+# dhcrelay_servers="" # dhcrelay server(s)
+# dhcrelay_ifaces="" # ethernet interface(s)
+
+case $0 in
+/etc/rc*)
+ # during boot (shutdown) $0 is /etc/rc (/etc/rc.shutdown),
+ # so get the name of the script from $_file
+ name=$_file
+ ;;
+*)
+ name=$0
+ ;;
+esac
+
+name=${name##*/isc-}
+
+case ${name} in
+*6)
+ ipversion=-6
+ ;;
+*)
+ ipversion=-4
+ ;;
+esac
+
+dhcrelay_precmd ()
+{
+ local ifaces _servers _ifaces
+
+ eval "_servers=\${${name}_servers}"
+ eval "_ifaces=\${${name}_ifaces}"
+
+ if [ -z "${_servers}" ]; then
+ err 1 "no ${name} server(s) configured."
+ fi
+
+ ifaces=
+ for iface in ${_ifaces}; do
+ ifaces="${ifaces} -i ${iface}"
+ done
+
+ rc_flags="${rc_flags} ${ipversion} ${ifaces} ${_servers}"
+}
+
+. /etc/rc.subr
+
+rcvar=${name}_enable
+
+command=%%PREFIX%%/sbin/${name}
+pidfile=/var/run/${name}.pid
+start_precmd=${name}_precmd
+
+load_rc_config ${name}
+run_rc_command "$1"
diff --git a/net/isc-dhcp42-server/files/patch-client__Makefile.in b/net/isc-dhcp42-server/files/patch-client__Makefile.in
new file mode 100644
index 000000000000..77d7639365d1
--- /dev/null
+++ b/net/isc-dhcp42-server/files/patch-client__Makefile.in
@@ -0,0 +1,13 @@
+--- client/Makefile.in.orig 2010-11-24 13:58:02.077206326 -0500
++++ client/Makefile.in 2010-11-24 13:59:01.452202855 -0500
+@@ -354,8 +354,8 @@
+ @list='$(dist_sysconf_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+- echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
+- $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
++ echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f.sample'"; \
++ $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f.sample"; \
+ done
+
+ uninstall-dist_sysconfDATA:
diff --git a/net/isc-dhcp42-server/files/patch-client__dhclient.conf b/net/isc-dhcp42-server/files/patch-client__dhclient.conf
new file mode 100644
index 000000000000..163beaee6394
--- /dev/null
+++ b/net/isc-dhcp42-server/files/patch-client__dhclient.conf
@@ -0,0 +1,11 @@
+--- ./client/dhclient.conf.orig 2010-05-02 20:39:06.000000000 -0400
++++ ./client/dhclient.conf 2010-05-02 20:39:16.000000000 -0400
+@@ -11,7 +11,7 @@
+ reboot 10;
+ select-timeout 5;
+ initial-interval 2;
+-script "/etc/dhclient-script";
++script "%%PREFIX%%/sbin/dhclient-script";
+ media "-link0 -link1 -link2", "link0 link1";
+ reject 192.33.137.209;
+
diff --git a/net/isc-dhcp42-server/files/patch-server__Makefile.am b/net/isc-dhcp42-server/files/patch-server__Makefile.am
new file mode 100644
index 000000000000..d92124b72909
--- /dev/null
+++ b/net/isc-dhcp42-server/files/patch-server__Makefile.am
@@ -0,0 +1,23 @@
+--- server/Makefile.am.orig 2010-10-24 11:42:38.419499721 -0400
++++ server/Makefile.am 2010-10-24 11:44:01.489499357 -0400
+@@ -1,6 +1,7 @@
+ AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"'
+
+ dist_sysconf_DATA = dhcpd.conf
++dist_sysconfDATA_INSTALL = $(INSTALL_DATA)
+ sbin_PROGRAMS = dhcpd
+ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
+ omapi.c mdb.c stables.c salloc.c ddns.c dhcpleasequery.c \
+@@ -13,3 +14,12 @@
+ man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
+ EXTRA_DIST = $(man_MANS)
+
++install-dist_sysconfDATA: $(dist_sysconf_DATA)
++ @$(NORMAL_INSTALL)
++ test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
++ @list='$(dist_sysconf_DATA)'; for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ $(am__strip_dir) \
++ echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f.sample'"; \
++ $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f.sample"; \
++ done
diff --git a/net/isc-dhcp42-server/files/patch-server__Makefile.in b/net/isc-dhcp42-server/files/patch-server__Makefile.in
new file mode 100644
index 000000000000..6ae828933da5
--- /dev/null
+++ b/net/isc-dhcp42-server/files/patch-server__Makefile.in
@@ -0,0 +1,13 @@
+--- ./server/Makefile.in.orig 2010-01-07 19:47:06.000000000 -0500
++++ ./server/Makefile.in 2010-05-02 20:38:26.000000000 -0400
+@@ -370,8 +370,8 @@
+ @list='$(dist_sysconf_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+- echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
+- $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
++ echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f.sample'"; \
++ $(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f.sample"; \
+ done
+
+ uninstall-dist_sysconfDATA:
diff --git a/net/isc-dhcp42-server/files/patch-server__bpf.c b/net/isc-dhcp42-server/files/patch-server__bpf.c
new file mode 100644
index 000000000000..8bf85e902537
--- /dev/null
+++ b/net/isc-dhcp42-server/files/patch-server__bpf.c
@@ -0,0 +1,10 @@
+--- common/bpf.c.orig 2010-10-22 10:38:06.623559939 +0400
++++ common/bpf.c 2010-10-22 10:38:26.436563986 +0400
+@@ -577,6 +577,7 @@
+ */
+ switch (sa->sdl_type) {
+ case IFT_ETHER:
++ case IFT_L2VLAN:
+ hw->hlen = sa->sdl_alen + 1;
+ hw->hbuf[0] = HTYPE_ETHER;
+ memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen);
diff --git a/net/isc-dhcp42-server/pkg-descr b/net/isc-dhcp42-server/pkg-descr
new file mode 100644
index 000000000000..54058e91a824
--- /dev/null
+++ b/net/isc-dhcp42-server/pkg-descr
@@ -0,0 +1,9 @@
+The ISC Dynamic Host Configuration Protocol Distribution provides a
+freely redistributable reference implementation of all aspects of the
+DHCP protocol, through a suite of DHCP tools:
+
+ * A DHCP server (this port)
+ * A DHCP client
+ * A DHCP relay agent
+
+WWW: https://www.isc.org/products/DHCP/
diff --git a/net/isc-dhcp42-server/pkg-message b/net/isc-dhcp42-server/pkg-message
new file mode 100644
index 000000000000..a481bc1aeed3
--- /dev/null
+++ b/net/isc-dhcp42-server/pkg-message
@@ -0,0 +1,26 @@
+**** To setup dhcpd, please edit %%PREFIX%%/etc/dhcpd.conf.
+
+**** This port installs the dhcp daemon, but doesn't invoke dhcpd by default.
+ If you want to invoke dhcpd at startup, add these lines to /etc/rc.conf:
+
+ dhcpd_enable="YES" # dhcpd enabled?
+ dhcpd_flags="-q" # command option(s)
+ dhcpd_conf="%%PREFIX%%/etc/dhcpd.conf" # configuration file
+ dhcpd_ifaces="" # ethernet interface(s)
+ dhcpd_withumask="022" # file creation mask
+
+**** If compiled with paranoia support (the default), the following rc.conf
+ options are also supported:
+
+ dhcpd_chuser_enable="YES" # runs w/o privileges?
+ dhcpd_withuser="dhcpd" # user name to run as
+ dhcpd_withgroup="dhcpd" # group name to run as
+ dhcpd_chroot_enable="YES" # runs chrooted?
+ dhcpd_devfs_enable="YES" # use devfs if available?
+ dhcpd_rootdir="/var/db/dhcpd" # directory to run in
+ dhcpd_includedir="<some_dir>" # directory with config-
+ files to include
+
+**** WARNING: never edit the chrooted or jailed dhcpd.conf file but
+ %%PREFIX%%/etc/dhcpd.conf instead which is always copied where
+ needed upon startup.
diff --git a/net/isc-dhcp42-server/pkg-plist b/net/isc-dhcp42-server/pkg-plist
new file mode 100644
index 000000000000..b9ccd19a3638
--- /dev/null
+++ b/net/isc-dhcp42-server/pkg-plist
@@ -0,0 +1,31 @@
+@comment $FreeBSD$
+@unexec %D/etc/rc.d/isc-dhcpd forcestop 2>/dev/null || true
+%%IPV6%%@unexec %D/etc/rc.d/isc-dhcpd6 forcestop 2>/dev/null || true
+@unexec if cmp -s %D/etc/dhcpd.conf.sample %D/etc/dhcpd.conf; then rm -f %D/etc/dhcpd.conf; fi
+etc/dhcpd.conf.sample
+@exec if [ ! -f %D/etc/dhcpd.conf ] ; then cp -p %D/%F %B/dhcpd.conf; fi
+%%IPV6%%@unexec if cmp -s %D/etc/dhcpd6.conf.sample %D/etc/dhcpd6.conf; then rm -f %D/etc/dhcpd6.conf; fi
+%%IPV6%%etc/dhcpd6.conf.sample
+%%IPV6%%@exec if [ ! -f %D/etc/dhcpd6.conf ] ; then cp -p %D/%F %B/dhcpd6.conf; fi
+%%IPV6%%etc/rc.d/isc-dhcpd6
+sbin/dhcpd
+bin/omshell
+%%LDAP%%bin/dhcpd-conf-to-ldap
+include/dhcpctl.h
+include/isc-dhcp/dst.h
+include/omapip/alloc.h
+include/omapip/buffer.h
+include/omapip/omapip.h
+include/omapip/omapip_p.h
+include/omapip/hash.h
+include/omapip/trace.h
+include/omapip/convert.h
+include/omapip/isclib.h
+include/omapip/result.h
+lib/libdhcpctl.a
+lib/libomapi.a
+lib/libdst.a
+%%LDAP%%%%SCHEMA_DIR%%/dhcp.schema
+%%LDAP%%@dirrm %%SCHEMA_DIR%%
+@dirrm include/omapip
+@dirrm include/isc-dhcp