ports/76825: isc-dhcp3-server port should allow listening on loopback interfaces

Andrew Clark andrew.clark at ucsb.edu
Sat Jan 29 18:30:15 UTC 2005


>Number:         76825
>Category:       ports
>Synopsis:       isc-dhcp3-server port should allow listening on loopback interfaces
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 29 18:30:15 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Andrew Clark
>Release:        FreeBSD 4.10-STABLE i386
>Organization:
University of California, Santa Barbara
>Environment:
System: FreeBSD oit.ucsb.edu 4.10-STABLE FreeBSD 4.10-STABLE #0: Wed Sep 22 05:43:45 PDT 2004 root at oit.ucsb.edu:/usr/obj/usr/src/sys/OIT i386

isc-dhcp3-server-3.0.1.r14_6

>Description:
	ISC dhcp3 server does not consider loopback interfaces (among others) 
	as suitable interfaces.  Listening on a loopback can be useful. 

	For example - in a jail bound to a loopback.
				- for advertising a route to support anycast-ish games
			
	The FreeBSD port already modifies ISC dhcpd in a similar way for 
	non-broadcast interfaces.

>How-To-Repeat:
	Attempt to start ISC dhcpd on a loopback interface 

>Fix:
	For ISC dhcpd to properly listen and answer on a loopback, it appears
	necessary to have USE_SOCKETS defined in includes/util.h.

	I'm attaching two diffs.  The first against unpatched discover.c,
 	the second against 
	/usr/ports/net/isc-dhcp3-server/files/patch-common::discover.c

	I'd like to comment that it might be a good idea to allow an option to 
	listen on any active interface.  FreeBSD users can be inventive, and we
	like having enough rope with which to hang ourselves :-)  

	This is a patch against the unpatched (i.e., w/o FreeBSD port patches)
	ISC dhcpd:

--- discover.c.orig     Thu Jun 10 10:59:16 2004
+++ discover.c.new      Sat Jan 29 10:11:15 2005
@@ -254,7 +254,6 @@
                   as broadcast). Also skip down interfaces unless we're
                   trying to get a list of configurable interfaces. */
                if (((!(ifr.ifr_flags & IFF_BROADCAST) ||
-                     ifr.ifr_flags & IFF_LOOPBACK ||
                      ifr.ifr_flags & IFF_POINTOPOINT) && !tmp) ||
                    (!(ifr.ifr_flags & IFF_UP) &&
                     state != DISCOVER_UNCONFIGURED))

	
	This is a patch against 
	/usr/ports/net/isc-dhcp3-server/files/patch-common::discover.c

--- patch-common::discover.c    Tue Mar 16 12:31:15 2004
+++ patch-common::discover.c.new        Sat Jan 29 10:15:54 2005
@@ -138,8 +138,7 @@
 -                    ifr.ifr_flags & IFF_LOOPBACK ||
 -                    ifr.ifr_flags & IFF_POINTOPOINT) && !tmp) ||
 -                  (!(ifr.ifr_flags & IFF_UP) &&
-+              if ((ifa->ifa_flags & IFF_LOOPBACK) ||
-+                   (ifa->ifa_flags & IFF_POINTOPOINT) ||
++              if ((ifa->ifa_flags & IFF_POINTOPOINT) ||
 +                   (!(ifa->ifa_flags & IFF_UP) &&
                     state != DISCOVER_UNCONFIGURED))
                        continue;
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list