Skip site navigation (1)Skip section navigation (2)
Date:      Wed,  1 Jun 2011 19:52:30 +0400 (MSD)
From:      "Lev A. Serebryakov" <lev@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        douglas@douglasthrift.net
Subject:   ports/157501: [PATCH] Add support for isc-dhcrelay6 analogious to isc-dhcpd6
Message-ID:  <20110601155230.6386D4AC2D@onlyone.friendlyhosting.spb.ru>
Resent-Message-ID: <201106011600.p51G0NT7030688@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

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



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