ports/157501: [PATCH] Add support for isc-dhcrelay6 analogious to isc-dhcpd6
Lev A. Serebryakov
lev at FreeBSD.org
Wed Jun 1 16:00:24 UTC 2011
>Number: 157501
>Category: ports
>Synopsis: [PATCH] Add support for isc-dhcrelay6 analogious to isc-dhcpd6
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Jun 01 16:00:23 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Lev A. Serebryakov
>Release: FreeBSD 8.2-STABLE amd64
>Organization:
>Environment:
System: FreeBSD blob.home.serebryakov.spb.ru 8.2-STABLE FreeBSD 8.2-STABLE #17: Tue May 31 22:07:48 MSD 2011 lev at blob.home.serebryakov.spb.ru:/usr/obj/usr/src/sys/BLOB amd64
>Description:
net/isc-dchp41-server port installs two RC_SUPR scripts: isc-dhcpd and isc-dhcpd6 when it is built with IPv6 support.
net/isc-dchp41-relay could be built with IPv6 support, but it doesn't provide way to start two realys (for IPv4 and IPv6) simultaneously.
This PR changes RC_SUBR script isc-dhcrelay to support such operations, and install link from isc-dhcrelay to isc-dhcrelay6 when port is built with IPv6 support.
NB: patch is rooted in `net' directory, as it changes files in TWO ports directories.
>How-To-Repeat:
>Fix:
Index: isc-dhcp41-relay/pkg-plist
===================================================================
RCS file: /home/pcvs/ports/net/isc-dhcp41-relay/pkg-plist,v
retrieving revision 1.1
diff -u -r1.1 pkg-plist
--- isc-dhcp41-relay/pkg-plist 6 May 2010 20:24:00 -0000 1.1
+++ isc-dhcp41-relay/pkg-plist 1 Jun 2011 15:40:19 -0000
@@ -1,4 +1,6 @@
@comment $FreeBSD: ports/net/isc-dhcp41-relay/pkg-plist,v 1.1 2010/05/06 20:24:00 wxs 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
Index: isc-dhcp41-server/Makefile
===================================================================
RCS file: /home/pcvs/ports/net/isc-dhcp41-server/Makefile,v
retrieving revision 1.20
diff -u -r1.20 Makefile
--- isc-dhcp41-server/Makefile 9 May 2011 00:58:17 -0000 1.20
+++ isc-dhcp41-server/Makefile 1 Jun 2011 15:40:20 -0000
@@ -24,7 +24,7 @@
PATCHLEVEL= R2
PORTREVISION_SERVER= 0
PORTREVISION_CLIENT= 0
-PORTREVISION_RELAY= 0
+PORTREVISION_RELAY= 1
SUBSYS?= server
WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}-${PATCHLEVEL}
Index: isc-dhcp41-server/files/isc-dhcrelay.in
===================================================================
RCS file: /home/pcvs/ports/net/isc-dhcp41-server/files/isc-dhcrelay.in,v
retrieving revision 1.1
diff -u -r1.1 isc-dhcrelay.in
--- isc-dhcp41-server/files/isc-dhcrelay.in 6 May 2010 20:24:01 -0000 1.1
+++ isc-dhcp41-server/files/isc-dhcrelay.in 1 Jun 2011 15:40:20 -0000
@@ -16,25 +16,49 @@
# 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
+ local ifaces _servers _ifaces
+
+ eval "_servers=\${${name}_servers}"
+ eval "_ifaces=\${${name}_ifaces}"
- if [ -z "${dhcrelay_servers}" ]; then
- err 1 "no dhcrelay server(s) configured."
+ if [ -z "${_servers}" ]; then
+ err 1 "no ${name} server(s) configured."
fi
ifaces=
- for iface in ${dhcrelay_ifaces}; do
+ for iface in ${_ifaces}; do
ifaces="${ifaces} -i ${iface}"
done
- rc_flags="${rc_flags} ${ifaces} ${dhcrelay_servers}"
+ rc_flags="${rc_flags} ${ipversion} ${ifaces} ${_servers}"
}
. /etc/rc.subr
-name=dhcrelay
rcvar=${name}_enable
command=%%PREFIX%%/sbin/${name}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list