From owner-freebsd-ports-bugs@FreeBSD.ORG Sat Jul 18 18:30:06 2009 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 623231065686 for ; Sat, 18 Jul 2009 18:30:06 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 3D9448FC27 for ; Sat, 18 Jul 2009 18:30:06 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n6IIU6ML021800 for ; Sat, 18 Jul 2009 18:30:06 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n6IIU6Pk021797; Sat, 18 Jul 2009 18:30:06 GMT (envelope-from gnats) Resent-Date: Sat, 18 Jul 2009 18:30:06 GMT Resent-Message-Id: <200907181830.n6IIU6Pk021797@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Josh Paetzel Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 847CA106566B for ; Sat, 18 Jul 2009 18:26:14 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id 696C18FC0A for ; Sat, 18 Jul 2009 18:26:14 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n6IIQEh8028452 for ; Sat, 18 Jul 2009 18:26:14 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.3/8.14.3/Submit) id n6IIQEMb028451; Sat, 18 Jul 2009 18:26:14 GMT (envelope-from nobody) Message-Id: <200907181826.n6IIQEMb028451@www.freebsd.org> Date: Sat, 18 Jul 2009 18:26:14 GMT From: Josh Paetzel To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: ports/136890: [PATCH} update net/isc-dhcp31-server X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jul 2009 18:30:06 -0000 >Number: 136890 >Category: ports >Synopsis: [PATCH} update net/isc-dhcp31-server >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 Jul 18 18:30:05 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Josh Paetzel >Release: 8.0-CURRENT >Organization: >Environment: FreeBSD virt80.tcbug.org 8.0-CURRENT FreeBSD 8.0-CURRENT #1: Sat Jun 13 10:21:06 UTC 2009 root@virt80.tcbug.org:/usr/obj/usr/src/sys/VIRT80 amd64 >Description: Update dhcp31 port to latest patch release that includes SA fixes. Update rcNG script to support checking the config file upon restart Integrate multi IP jail patchdone by @jhb for net/isc-dhcp30-server >How-To-Repeat: >Fix: Apply the following patch http://people.freebsd.org/~jpaetzel/ports/net/isc-dhcp31-server/patch.diff Patch attached with submission follows: Index: isc-dhcpd.in =================================================================== RCS file: /home/ncvs/ports/net/isc-dhcp31-server/files/isc-dhcpd.in,v retrieving revision 1.5 diff -u -r1.5 isc-dhcpd.in --- isc-dhcpd.in 15 Jul 2009 16:55:51 -0000 1.5 +++ isc-dhcpd.in 18 Jul 2009 13:13:13 -0000 @@ -700,6 +700,25 @@ fi } +dhcpd_checkconfig () +{ + local rc_flags_saved rc_flags_our + rc_flags_saved="$rc_flags" + setup_flags + # Eliminate '-q' flag if it is present + rc_flags_our=`echo "${rc_flags}" | sed -Ee's/(^-q | -q | -q$)'//` + rc_flags="${rc_flags_saved}" + if ${command} -t -q ${rc_flags_our}; then + true + else + echo "Configuration file sanity check failed:" + echo "=======================================" + ${command} -t ${rc_flags_our} + echo "=======================================" + false + fi +} + rcvar=${name}_enable load_rc_config ${name} @@ -718,6 +737,7 @@ required_files=${dhcpd_conf} start_precmd=${name}_precmd stop_postcmd=${name}_postcmd +restart_precmd="dhcpd_checkconfig" install_cmd=dhcpd_install uninstall_cmd=dhcpd_uninstall extra_commands="install uninstall" Index: patch-server::dhcpd.c =================================================================== RCS file: /home/ncvs/ports/net/isc-dhcp31-server/files/patch-server::dhcpd.c,v retrieving revision 1.3 diff -u -r1.3 patch-server::dhcpd.c --- patch-server::dhcpd.c 14 Mar 2007 17:14:06 -0000 1.3 +++ patch-server::dhcpd.c 18 Jul 2009 12:21:04 -0000 @@ -1,5 +1,5 @@ ---- server/dhcpd.c.orig Thu Jun 10 19:59:52 2004 -+++ server/dhcpd.c Fri Jun 25 15:49:09 2004 +--- server/dhcpd.c.orig 2009-07-18 12:17:49.000000000 +0000 ++++ server/dhcpd.c 2009-07-18 12:16:17.000000000 +0000 @@ -47,6 +47,22 @@ #include "version.h" #include @@ -22,8 +22,8 @@ + static void usage PROTO ((void)); - TIME cur_time; -@@ -195,6 +211,35 @@ + struct iaddr server_identifier; +@@ -193,6 +209,46 @@ omapi_object_dereference (&listener, MDL); } @@ -42,14 +42,25 @@ +#endif /* PARANOIA */ + +#if defined (JAIL) -+static void setup_jail (char *chroot_dir, char *hostname, u_int32_t ip_number) ++#if !defined(JAIL_API_VERSION) ++#define JAIL_API_VERSION 0 ++#endif ++static void setup_jail (char *chroot_dir, char *hostname, struct in_addr ip_addr) +{ + struct jail j; + -+ j.version = 0; ++ memset(&j, 0, sizeof(j)); ++ j.version = JAIL_API_VERSION; + j.path = chroot_dir; + j.hostname = hostname; -+ j.ip_number = ip_number; ++#if JAIL_API_VERSION == 0 ++ j.ip_number = ntoh1(ip_addr.s_addr); ++#elif JAIL_API_VERSION ==2 ++ j.ip4s = 1; ++ j.ip4 = &ip_addr; ++#else ++#error Unsupported jail API ++#endif + + if (jail (&j) < 0) + log_fatal ("jail(%s, %s): %m", chroot_dir, hostname); @@ -59,7 +70,7 @@ int main (argc, argv, envp) int argc; char **argv, **envp; -@@ -227,6 +272,25 @@ +@@ -225,6 +281,25 @@ char *traceinfile = (char *)0; char *traceoutfile = (char *)0; #endif @@ -78,14 +89,14 @@ +#endif /* PARANOIA || JAIL */ +#if defined (JAIL) + char *set_jail = 0; -+ u_int32_t jail_ip_address = 0; /* Good as long as it's IPv4 ... */ ++ struct in_addr jail_ip_address; + int no_dhcpd_jail = 0; + char *s2; +#endif /* JAIL */ - /* Make sure we have stdin, stdout and stderr. */ - status = open ("/dev/null", O_RDWR); -@@ -289,6 +353,39 @@ + /* Make sure that file descriptors 0 (stdin), 1, (stdout), and + 2 (stderr) are open. To do this, we assume that when we +@@ -290,6 +365,38 @@ if (++i == argc) usage (); server = argv [i]; @@ -119,13 +130,12 @@ + usage (); + if (inet_pton (AF_INET, argv[i], &jail_ip_address) < 0) + log_fatal ("invalid ip address: %s", argv[i]); -+ jail_ip_address = ntohl (jail_ip_address); + no_dhcpd_jail = 1; +#endif /* JAIL */ } else if (!strcmp (argv [i], "-cf")) { if (++i == argc) usage (); -@@ -366,6 +463,28 @@ +@@ -367,6 +474,27 @@ if (!no_dhcpd_pid && (s = getenv ("PATH_DHCPD_PID"))) { path_dhcpd_pid = s; } @@ -148,13 +158,12 @@ + set_jail = s; + if (inet_pton (AF_INET, s2, &jail_ip_address) < 0) + log_fatal ("invalid ip address: %s", s2); -+ jail_ip_address = ntohl (jail_ip_address); + } +#endif /* JAIL */ if (!quiet) { log_info ("%s %s", message, DHCP_VERSION); -@@ -388,6 +507,57 @@ +@@ -393,6 +521,57 @@ trace_seed_stop, MDL); #endif @@ -212,7 +221,7 @@ /* Default to the DHCP/BOOTP port. */ if (!local_port) { -@@ -462,6 +632,9 @@ +@@ -467,6 +646,9 @@ #endif /* Initialize icmp support... */ @@ -222,7 +231,7 @@ if (!cftest && !lftest) icmp_startup (1, lease_pinged); -@@ -491,6 +664,14 @@ +@@ -496,6 +678,14 @@ postconf_initialization (quiet); @@ -237,7 +246,7 @@ /* test option should cause an early exit */ if (cftest && !lftest) exit(0); -@@ -533,7 +714,22 @@ +@@ -538,7 +728,22 @@ else if (pid) exit (0); } @@ -259,8 +268,8 @@ + /* Read previous pid file. */ if ((i = open (path_dhcpd_pid, O_RDONLY)) >= 0) { - status = read (i, pbuf, (sizeof pbuf) - 1); -@@ -877,8 +1073,24 @@ + status = read(i, pbuf, (sizeof pbuf) - 1); +@@ -877,8 +1082,24 @@ log_info (copyright); log_info (arr); >Release-Note: >Audit-Trail: >Unformatted: