1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-19 19:59:43 +00:00

New ports: net/isc-dhcp44-server, net/isc-dhcp44-client, net/isc-dhcp44-relay:

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/
This commit is contained in:
Ryan Steinmetz 2018-01-09 20:51:38 +00:00
parent bda22d9964
commit bd166fa1a3
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=458570
18 changed files with 985 additions and 0 deletions

View File

@ -284,6 +284,9 @@
SUBDIR += isc-dhcp43-client
SUBDIR += isc-dhcp43-relay
SUBDIR += isc-dhcp43-server
SUBDIR += isc-dhcp44-client
SUBDIR += isc-dhcp44-relay
SUBDIR += isc-dhcp44-server
SUBDIR += istgt
SUBDIR += jags
SUBDIR += jakarta-commons-net

View File

@ -0,0 +1,9 @@
# Created by: Ryan Steinmetz <zi@FreeBSD.org>
# $FreeBSD$
COMMENT= The ISC Dynamic Host Configuration Protocol client
SUBSYS= client
MASTERDIR= ${.CURDIR}/../isc-dhcp44-server
.include "${MASTERDIR}/Makefile"

View File

@ -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/

View File

@ -0,0 +1,10 @@
**** To setup dhclient, you may need to edit /etc/rc.conf to replace the
base system dhclient as follows:
dhclient_program="%%PREFIX%%/sbin/dhclient"
dhclient_flags="-q"
See dhclient(8), using the following command, for details about other
possible options:
MANPATH=%%MAN1PREFIX%%/man man 8 dhclient

View File

@ -0,0 +1,11 @@
sbin/dhclient
sbin/dhclient-script
man/man5/dhclient.conf.5.gz
man/man5/dhclient.leases.5.gz
man/man8/dhclient.8.gz
man/man8/dhclient-script.8.gz
@unexec if cmp -s %D/etc/dhclient.conf.example %D/etc/dhclient.conf; then rm -f %D/etc/dhclient.conf; fi
etc/dhclient.conf.example
@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

View File

@ -0,0 +1,9 @@
# Created by: Ryan Steinmetz <zi@FreeBSD.org>
# $FreeBSD$
COMMENT= The ISC Dynamic Host Configuration Protocol relay
SUBSYS= relay
MASTERDIR= ${.CURDIR}/../isc-dhcp44-server
.include "${MASTERDIR}/Makefile"

View File

@ -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/

View File

@ -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)

View File

@ -0,0 +1,6 @@
@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
man/man8/dhcrelay.8.gz

View File

@ -0,0 +1,185 @@
# Created by: Ryan Steinmetz <zi@FreeBSD.org>
# $FreeBSD$
PORTNAME= dhcp
PORTVERSION= 4.4.0b1
PORTREVISION= ${DHCP_PORTREVISION}
CATEGORIES= net
MASTER_SITES= ISC/${PORTNAME}/${PORTVERSION:S/P/-P/g} \
ZI
PKGNAMEPREFIX= isc-
PKGNAMESUFFIX= 44-${SUBSYS}
DISTNAME= ${PORTNAME}-${PORTVERSION:S/P/-P/g}
MAINTAINER= zi@FreeBSD.org
COMMENT?= ISC Dynamic Host Configuration Protocol server
LICENSE= ISCL
USES= gmake
PORTREVISION_SERVER= 0
PORTREVISION_CLIENT= 0
PORTREVISION_RELAY= 0
SUBSYS?= server
OPTIONS_DEFINE= IPV6
.if ${SUBSYS} == server
OPTIONS_DEFINE+= PARANOIA LDAP LDAP_SSL BIND_SYMBOLS DHCP4O6
OPTIONS_DEFAULT+= PARANOIA LDAP_SSL
DHCP4O6_DESC= Enable DHCPv4-over-DHCPv6 (TSV)
PARANOIA_DESC= Enable support for chroot
LDAP_SSL_DESC= Support LDAP over SSL/TLS
BIND_SYMBOLS_DESC= Enable BIND internal symbol table
.endif
# PORTREVISION and CONFLICTS handling
.if ${SUBSYS} == client
CONFLICTS= isc-dhcp3?-client-[0-9]* isc-dhcp4[123]-client-[0-9]*
DHCP_PORTREVISION= ${PORTREVISION_CLIENT}
.elif ${SUBSYS} == relay
CONFLICTS= isc-dhcp3?-relay-[0-9]* isc-dhcp4[123]-relay-[0-9]*
DHCP_PORTREVISION= ${PORTREVISION_RELAY}
.else
CONFLICTS= isc-dhcp3?-server-[0-9]* isc-dhcp4[123]-server-[0-9]*
DHCP_PORTREVISION= ${PORTREVISION_SERVER}
.endif
MAKE_JOBS_UNSAFE= yes
.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} == server
CONFIGURE_ARGS+=--localstatedir=/var
CFLAGS+= -fPIC
.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 ${PORT_OPTIONS:MPARANOIA}
CONFIGURE_ARGS+=--enable-paranoia --enable-early-chroot
SUB_LIST+= PARANOIA="yes"
.else
SUB_LIST+= PARANOIA="no"
.endif
.if ${PORT_OPTIONS:MLDAP}
CONFIGURE_ARGS+=--with-ldap --with-ldapcrypto
USE_OPENLDAP= yes
LDAP_SCRIPT= ${WRKSRC}/contrib/ldap/dhcpd-conf-to-ldap
LDAP_SCHEMA= ${WRKSRC}/contrib/ldap/dhcp.schema
LDAP_README= ${WRKSRC}/contrib/ldap/README.ldap
CPPFLAGS+= -I${LOCALBASE}/include -L${LOCALBASE}/lib
LIBS+= -L${LOCALBASE}/lib
PORTDOCS+= README.ldap
PLIST_SUB+= SCHEMA_DIR="${SCHEMA_DIR:S,^${PREFIX}/,,}" LDAP=""
USES+= shebangfix
SHEBANG_FILES= contrib/ldap/dhcpd-conf-to-ldap
.else
PLIST_SUB+= LDAP="@comment "
.endif
.if ${PORT_OPTIONS:MLDAP_SSL} && ${PORT_OPTIONS:MLDAP}
USES+= ssl
CONFIGURE_ARGS+=--with-ldapcrypto
LIBS+= -lssl
.endif
.if ${PORT_OPTIONS:MIPV6}
CONFIGURE_ARGS+=--enable-dhcpv6
PLIST_SUB+= IPV6=""
.else
CONFIGURE_ARGS+=--disable-dhcpv6
PLIST_SUB+= IPV6="@comment "
.endif
.if ${PORT_OPTIONS:MDHCP4O6}
CONFIGURE_ARGS+=--enable-dhcpv4o6
PLIST_SUB+= DHCP4O6=""
.else
CONFIGURE_ARGS+=--disable-dhcpv4o6
PLIST_SUB+= DHCP4O6="@comment "
.endif
.if ${PORT_OPTIONS:MBIND_SYMBOLS}
USES+= perl5
.else
EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-bind_Makefile.in
.endif
post-patch:
@${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
${MSG_FILE} > ${PKGMESSAGE}
@${REINPLACE_CMD} -e 's|/usr/local||g' \
${WRKSRC}/doc/examples/dhcpd-dhcpv6.conf
@${REINPLACE_CMD} ${REINPLACE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
${WRKSRC}/client/dhclient.conf.example
do-install:
${SETENV} DESTDIR=${STAGEDIR} ${MAKE} -C ${WRKSRC}/${SUBSYS} install
.if ${SUBSYS} == server
${SETENV} DESTDIR=${STAGEDIR} ${MAKE} -C ${WRKSRC}/dhcpctl install
#${SETENV} DESTDIR=${STAGEDIR} ${MAKE} -C ${WRKSRC}/dst install
${SETENV} DESTDIR=${STAGEDIR} ${MAKE} -C ${WRKSRC}/omapip install
${SETENV} DESTDIR=${STAGEDIR} ${MAKE} -C ${WRKSRC}/includes install
${SETENV} DESTDIR=${STAGEDIR} ${MAKE} -C ${WRKSRC}/common install
${INSTALL_DATA} ${WRKSRC}/dhcpctl/dhcpctl.h ${STAGEDIR}${PREFIX}/include
${MV} ${STAGEDIR}${PREFIX}/etc/dhcpd.conf.example ${STAGEDIR}${PREFIX}/etc/dhcpd.conf.sample
.if ${PORT_OPTIONS:MIPV6}
${INSTALL_DATA} ${WRKSRC}/doc/examples/dhcpd-dhcpv6.conf \
${STAGEDIR}${PREFIX}/etc/dhcpd6.conf.sample
.endif
.if ${PORT_OPTIONS:MLDAP}
@${MKDIR} ${STAGEDIR}${SCHEMA_DIR}
${INSTALL_DATA} ${LDAP_SCHEMA} ${STAGEDIR}${SCHEMA_DIR}
${INSTALL_SCRIPT} ${LDAP_SCRIPT} ${STAGEDIR}${PREFIX}/bin
.endif
.if ${PORT_OPTIONS:MLDAP}
${MKDIR} ${STAGEDIR}${DOCSDIR}
${INSTALL_MAN} ${LDAP_README} ${STAGEDIR}${DOCSDIR}
.endif
.endif
.if ${SUBSYS} == client
${INSTALL_SCRIPT} ${WRKSRC}/client/scripts/freebsd ${STAGEDIR}${PREFIX}/sbin/dhclient-script
.elif ${SUBSYS} == server
.if ${PORT_OPTIONS:MIPV6}
@${LN} -sf isc-dhcpd ${STAGEDIR}${PREFIX}/etc/rc.d/isc-dhcpd6
.endif
.elif ${SUBSYS} == relay
.if ${PORT_OPTIONS:MIPV6}
@${LN} -sf isc-dhcrelay ${STAGEDIR}${PREFIX}/etc/rc.d/isc-dhcrelay6
.endif
.endif
@${SED} ${PKGMESSAGE_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \
${MSG_FILE} > ${PKGMESSAGE}
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
TIMESTAMP = 1515530294
SHA256 (dhcp-4.4.0b1.tar.gz) = 9bb9fcef57e31660d43c83481d60cfa16fd2ad99fd7bbe7f0ae2ca81406a80c2
SIZE (dhcp-4.4.0b1.tar.gz) = 11151721

View File

@ -0,0 +1,11 @@
--- bind/Makefile.in.orig 2018-01-05 14:28:00 UTC
+++ bind/Makefile.in
@@ -21,7 +21,7 @@ bindsrcdir=@BINDSRCDIR@
prefix = @prefix@
exec_prefix = @exec_prefix@
-bindconfig = --without-openssl --without-libxml2 --without-libjson \
+bindconfig = --disable-symtable --without-openssl --without-libxml2 --without-libjson \
--without-gssapi --disable-threads --without-lmdb \
--includedir=@includedir@ --libdir=@libdir@ \
@BINDLT@ @BINDIOMUX@ @BINDCONFIG@ --enable-full-report

View File

@ -0,0 +1,536 @@
#! /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
# service(8) does not create an authentic environment, try to guess,
# and as of 10.3-RELEASE-p0, it will not find the indented name=
# assignments below. So give it a default.
# Trailing semicolon also for service(8)'s benefit:
name="$file" ;
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
# default name to "dhcpd" if guessing failed
# Trailing semicolon also for service(8)'s benefit:
name="${name:-dhcpd}" ;
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}_chrootdir:=/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}_chrootdir}\" ]"; then
err 1 "${name}_chrootdir must be set" \
"if ${name}_chroot_enable is enabled"
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}_chrootdir="
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_chrootdir=\${${name}_chrootdir}"
eval "_dhcpd_devdir=\${${name}_chrootdir}\${${name}_devdir}"
eval "_dhcpd_etcdir=\${${name}_chrootdir}\${${name}_etcdir}"
eval "_dhcpd_confdir=\${${name}_chrootdir}\${${name}_confdir}"
eval "_dhcpd_includedir=\${${name}_chrootdir}\${${name}_includedir}"
eval "_dhcpd_piddir=\${${name}_chrootdir}\${${name}_piddir}"
eval "_dhcpd_leasesdir=\${${name}_chrootdir}\${${name}_leasesdir}"
eval "_dhcpd_conffile=\${${name}_chrootdir}\${${name}_conffile}"
eval "_dhcpd_pidfile=\${${name}_chrootdir}\${${name}_pidfile}"
eval "_dhcpd_leasesfile=\${${name}_chrootdir}\${${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_chrootdir} ${_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"
# copy localtime only if it exists
if eval "[ -f \"\${${name}_etcdir}/\$_ltime\" ]"; then
eval "safe_copy \${${name}_etcdir}/\$_ltime \${_dhcpd_etcdir}/\$_ltime"
fi
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}_chrootdir}\" ]"; then
eval "rc_flags=\"\${rc_flags} -chroot \${${name}_chrootdir}\""
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_restartprecmd ()
{
setup_chroot
setup_flags
dhcpd_checkconfig
}
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_chrootdir=/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_restartprecmd"
uninstall_cmd=dhcpd_uninstall
configtest_cmd="dhcpd_restartprecmd"
extra_commands="uninstall configtest"
run_rc_command "$1"

View File

@ -0,0 +1,101 @@
#!/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="" # v4 dhcrelay server(s)
# dhcrelay_ifaces="" # v4 ethernet interface(s)
# dhcrelay6_lowers="" # v6 "lower" network interface(s)
# dhcrelay6_uppers="" # v6 "upper" network 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}"
}
dhcrelay6_precmd ()
{
local lowers _lowers uppers _uppers
eval "_lowers=\${${name}_lowers}"
eval "_uppers=\${${name}_uppers}"
if [ -z "${_lowers}" ]; then
err 1 "no ${name} lower(s) configured."
fi
if [ -z "${_uppers}" ]; then
err 1 "no ${name} upper(s) configured."
fi
lowers=
for lower in ${_lowers}; do
lowers="${lowers} -l ${lower}"
done
uppers=
for upper in ${_uppers}; do
uppers="${uppers} -u ${upper}"
done
rc_flags="${rc_flags} ${ipversion} ${lowers} ${uppers}"
}
. /etc/rc.subr
rcvar=${name}_enable
command=%%PREFIX%%/sbin/dhcrelay
pidfile=/var/run/${name}.pid
start_precmd=${name}_precmd
load_rc_config ${name}
run_rc_command "$1"

View File

@ -0,0 +1,11 @@
--- client/dhclient.conf.example.orig 2015-09-11 20:11:21 UTC
+++ client/dhclient.conf.example
@@ -11,7 +11,7 @@ retry 60;
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;

View File

@ -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/

View File

@ -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.

View File

@ -0,0 +1,29 @@
@unexec echo "You should stop the dhcpd and dhcpd6 daemons if you are permanently removing this port."
@sample etc/dhcpd.conf.sample
%%IPV6%%@sample etc/dhcpd6.conf.sample
%%IPV6%%etc/rc.d/isc-dhcpd6
sbin/dhcpd
bin/omshell
%%LDAP%%bin/dhcpd-conf-to-ldap
man/man1/omshell.1.gz
man/man3/dhcpctl.3.gz
man/man3/omapi.3.gz
man/man5/dhcpd.conf.5.gz
man/man5/dhcpd.leases.5.gz
man/man5/dhcp-eval.5.gz
man/man5/dhcp-options.5.gz
man/man8/dhcpd.8.gz
include/dhcpctl.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/libdhcp.a
lib/libdhcpctl.a
lib/libomapi.a
%%LDAP%%%%SCHEMA_DIR%%/dhcp.schema