diff options
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 |