Index: isc-dhcp/ANONCVS
===================================================================
RCS file: isc-dhcp/ANONCVS
diff -N isc-dhcp/ANONCVS
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ isc-dhcp/ANONCVS	9 Oct 2003 02:20:19 -0000
@@ -0,0 +1,129 @@
+	  Anonymous CVS Access for the ISC DHCP Distribution
+
+The ISC DHCP distribution can be accessed using "anonymous" CVS.
+"Anonymous" cvs uses the CVS "pserver" mechanism to allow anybody on
+the Internet to access a CVS repository without having to register in
+any way.   Anonymous CVS allows you to access changes as soon as the
+DHCP developers commit them, rather than having to wait for the next
+snapshot or patchlevel.   Changes that have not yet been released yet
+are not guaranteed to work, but they can nonetheless be useful in many
+cases.
+
+			  TABLE OF CONTENTS
+
+		1. What is anonymous CVS?
+		2. How can i start using it?
+		3. Checking out the latest code in a release
+		4. Checking out the latest code
+		5. Checking out a specific release
+		6. When to update
+
+			WHAT IS ANONYMOUS CVS?
+
+Anonymous CVS also allows you to browse through the history of the
+DHCP distribution, and examine the revision history of specific files
+to see how they have changed between revisions, to try to figure out
+why something that was working before is no longer working, or just to
+see when a certain change was made.
+
+		      HOW CAN I START USING IT?
+
+To use anonymous CVS to access the DHCP distribution, you must first
+"log in".   You should only need to do this once, but it is a
+necessary step, even though access is anonymous.   Anonymous users log
+in as user "nobody", password "nobody".   To do this, type:
+
+	cvs -d :pserver:nobody@dhcp.cvs.isc.org:/cvsroot login
+
+You will be prompted for a password - type "nobody".   If you get some
+kind of error indicating that cvs doesn't know how to log you in, you
+are probably running an old version of cvs, and should upgrade.   This
+should work with cvs version 1.10.
+
+Once you have logged in, you can check out a version of the DHCP
+distribution, so the next question is, which version?
+
+	      CHECKING OUT THE LATEST CODE IN A RELEASE
+
+There are currently four major versions of the distribution - Release
+1, Release 2, Release 3, and the current development tree.   Releases
+1, 2 and 3 are branches in the CVS repository.   To check out the
+latest code on any of these branches, you would use a branch tag of
+RELEASE_1, RELEASE_2 or RELEASE_3 in the following command:
+
+	(setenv CVSROOT :pserver:nobody@dhcp.cvs.isc.org:/cvsroot;
+	 cvs checkout -d dhcp-2.0 -r RELEASE_2 DHCP)
+
+Note that the example is for Release 2.
+
+		     CHECKING OUT THE LATEST CODE
+
+To check out the current engineering version, use:
+
+	(setenv CVSROOT :pserver:nobody@dhcp.cvs.isc.org:/cvsroot;
+	 cvs checkout -d dhcp-current DHCP)
+
+Note that the current engineering version is a work in progress, and
+there is no real guarantee that it will work for you.
+
+		   CHECKING OUT A SPECIFIC RELEASE
+
+You can also check out specific versions of the DHCP distribution.
+There are three kinds of version tags you may find - alpha tags, beta
+tags and release tags.   Alpha tags look like this:
+
+	V#-ALPHA-YYYYMMDD
+
+# is the release number.   YYYYMMDD is the date of the release, with a
+4-digit year, the month expressed as a number (January=1), and the day
+of the month specified as a number, with the first day of the month
+being 1.
+
+Beta tags look like this:
+
+	V#-BETA-%-PATCH-*
+
+Where # is the release number, % is the Beta number (usually 1) and *
+is the patchlevel.   In the future there may also be beta tags that
+look like this:
+
+	V#-#-BETA-%-PATCH-*
+
+Where #-# is the major version followed by the minor version - for
+example, when the first 3.1 beta comes out, the tag will look like
+this:
+
+	V3-1-BETA-1-PATCH-0
+
+Release tags look like this:
+
+	V#-%-*
+
+Where # is the major version, % is the minor version, and * is the
+patchlevel.   So the tag for 1.0pl2 is V1-0-2, and to check it out,
+you'd type:
+
+	(setenv CVSROOT :pserver:nobody@dhcp.cvs.isc.org:/cvsroot;
+	 cvs checkout -d dhcp-1.0pl2 -rV1-0-2 DHCP)
+
+Whenever changes are checked in to the ISC DHCP repository, or files
+are tagged, a notice is sent to the dhcp-source-changes@isc.org
+mailing list.   You can subscribe to this list by sending mail to
+dhcp-source-changes-request@isc.org, and you will then get immediate
+notification when changes are made.   You may find the volume of mail
+on this list annoying, however.
+
+			    WHEN TO UPDATE
+
+We do not recommend that you do an update immediately after you see a
+change on the dhcp-source-changes mailing list - instead, it's best to
+wait a while to make sure that any changes that change depends on have
+also been committed.   Also, sometimes when development is being done
+on two machines, the developers will check in a tentative change that
+hasn't been tested at all so that they can update on a different
+machine and test the change.   The best way to avoid accidentally
+getting one of these changes is to not update aggressively - when a
+change is made, wait a while before updating, to make sure that it's
+not going to be quickly followed by another change.
+
+
Index: isc-dhcp/FREEBSD-upgrade
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/FREEBSD-upgrade,v
retrieving revision 1.2
diff -u -r1.2 FREEBSD-upgrade
--- isc-dhcp/FREEBSD-upgrade	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/FREEBSD-upgrade	9 Oct 2003 02:20:19 -0000
@@ -1,8 +1,7 @@
 # ex:ts=8
-$FreeBSD: src/contrib/isc-dhcp/FREEBSD-upgrade,v 1.9.2.5 2003/03/02 16:42:37 murray Exp $
-$DragonFly: src/contrib/isc-dhcp/FREEBSD-upgrade,v 1.2 2003/06/17 04:24:02 dillon Exp $
+$FreeBSD: src/contrib/isc-dhcp/FREEBSD-upgrade,v 1.18 2003/09/02 11:15:03 mbr Exp $
 
-ISC DHCP client 3.0.1rc11
+ISC DHCP client 3.0.1rc12
 	originals can be found at: ftp://ftp.isc.org/isc/dhcp/
 
 
@@ -16,7 +15,7 @@
 	contrib/
 	dhcp.spec		solaris.init		ms2isc/
 
-	include/cf/
+	includes/cf/
 	aix.h			alphaosf.h		bsdos.h
 	cygwin32.h		hpux.h			irix.h
 	linux.h			netbsd.h		nextstep.h
@@ -29,7 +28,7 @@
 Imported by:
 
 	cvs import -m 'Import ISC DHCP 3.0.1 RC11 client.' \
-		src/contrib/isc-dhcp ISC isc_dhcp_3_0_1_rc11
+		src/contrib/isc-dhcp ISC isc_dhcp_3_0_1_rc12
 
 
 To make local changes to isc-dhcp, simply patch and commit to the main
@@ -43,21 +42,36 @@
 	client/clparse.c
 	  r1.6 - prefer strlcpy to strcpy.
 	client/dhclient.8 
-	  r1.8 - correct a man reference and a typo.
+	  r1.14 - interface polling
 	  r1.6 - document -D option.
           - remove dhcpd from SEE ALSO section.
 	client/dhclient.c
+	  r1.32 - interface polling
+	  r1.31 - interface polling
+	  r1.30 - interface polling
+	  r1.29 - interface polling
+	  r1.28 - interface polling
+	  r1.27 - interface polling
+	  r1.26 - interface polling
 	  r1.19 - connect std{in,out,err}.
 	  r1.13 - prefer strlcpy to strcpy.
 	  r1.6  - quiet by default.
 	        - document -D option.
 	client/dhclient.conf.5
-	  - Remove dhcpd from SEE ALSO section.
+	        - Remove dhcpd from SEE ALSO section.
 	common/dhcp-options.5
 	  r1.2 - note that hostname is only set if not already set.
-	  - Remove dhcpd from SEE ALSO section.
+	       - Remove dhcpd from SEE ALSO section.
+	common/dispatch.c
+	  r1.2 - interface polling
+	includes/dhcpd.h
+	  r1.5 - interface polling
+	  r1.4 - interface polling
+	  r1.3 - interface polling
+	  r1.2 - interface polling
     (see CVS logs for complete details)
 
+mbr@FreeBSD.org
 murray@FreeBSD.org
 obrien@NUXI.com
 15-Jan-2003
Index: isc-dhcp/README
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/README,v
retrieving revision 1.1
diff -u -r1.1 README
--- isc-dhcp/README	17 Jun 2003 02:44:59 -0000	1.1
+++ isc-dhcp/README	9 Oct 2003 02:20:19 -0000
@@ -1,6 +1,6 @@
 	    Internet Software Consortium DHCP Distribution
 			     Version 3.0.1
-			  Release Candidate 9
+			  Release Candidate 12
 			     April 28, 2002
 
 			      README FILE
@@ -97,7 +97,7 @@
 
 			    RELEASE STATUS
 
-This is the tenth release candidate of version 3.0.1 of the ISC DHCP
+This is the twelfth release candidate of version 3.0.1 of the ISC DHCP
 Distribution.  Development of this release is approaching the point at
 which it will be frozen, and no significant new features will be
 added.
Index: isc-dhcp/RELNOTES
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/RELNOTES,v
retrieving revision 1.1
diff -u -r1.1 RELNOTES
--- isc-dhcp/RELNOTES	17 Jun 2003 02:44:59 -0000	1.1
+++ isc-dhcp/RELNOTES	9 Oct 2003 02:20:19 -0000
@@ -1,6 +1,6 @@
 	    Internet Software Consortium DHCP Distribution
 			     Version 3.0.1
-			 Release Candidate 10
+			 Release Candidate 12
 			       June, 2002
 
 			     Release Notes
@@ -45,6 +45,53 @@
 Murrell at BC Tel Advanced Communications.  I'd like to express my
 thanks to all of these good people here, both for working on the code
 and for prodding me into improving it.
+
+			Changes since 3.0.1rc11
+
+- A patch from Steve Campbell was applied with minor modifications to
+  permit reverse dns PTR record updates with values containing spaces.
+
+- A patch from Florian Lohoff was applied with some modifications to
+  dhcrelay.  It now discards packets whose hop count exceeds 10 by default,
+  and a command-line option (-c) can be used to set this threshold.
+
+- A failover bug relating to identifying peers by name length instead of
+  by name was fixed.
+
+- Delcaring failover configs within shared-network statements should no
+  longer result in error.
+
+- The -nw command line option to dhclient now works.
+
+- Thanks to a patch from Michael Richardson:
+	- Some problems with long option processing have been fixed.
+	- Some fixes to minires so that updates of KEY records will work.
+
+- contrib/ms2isc was updated by Shu-Min Chang of the Intel Corporation.
+  see contrib/ms2isc/readme.txt for revision notes.
+
+- Dhclient no longer uses shell commands to kill another instance of
+  itself, it sends the signal directly.  Thanks to a patch from Martin
+  Blapp.
+
+- The FreeBSD dhclient-script was changed so that a failure to write to
+  /etc/resolv.conf does not prematurely end the script.  This keeps dhclient
+  from looping infinitely when this is the case.  Thanks to a patch from
+  Martin Blapp.
+
+- A patch from Bill Stephens was applied which resolves a problem with lease
+  expiry times in failover configurations.
+
+- A memory leak in configuration parsing was closed thanks to a patch from
+  Steve G.
+
+- The function which discovers interfaces will now skip non-broadcast or
+  point-to-point interfaces, thanks to a patch from David Brownlee.
+
+- Options not yet known by the dhcpd or dhclient have had their names
+  changed such that they do not contain # symbols, in case they should ever
+  appear in a lease file.  An option that might have been named "#144" is
+  now "unknown-144".
 
 			Changes since 3.0.1rc10
 
Index: isc-dhcp/client/clparse.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/clparse.c,v
retrieving revision 1.2
diff -u -r1.2 clparse.c
--- isc-dhcp/client/clparse.c	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/clparse.c	9 Oct 2003 02:21:32 -0000
@@ -40,22 +40,18 @@
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
  *
- * @(#) Copyright (c) 1996-2002 The Internet Software Consortium.  All rights reserved.
- * $Id: clparse.c,v 1.62.2.3 2002/11/17 02:25:43 dhankins Exp $
- * $FreeBSD: src/contrib/isc-dhcp/client/clparse.c,v 1.4.2.4 2003/03/02 16:42:37 murray Exp $
- * $DragonFly: src/contrib/isc-dhcp/client/clparse.c,v 1.2 2003/06/17 04:24:02 dillon Exp $
+ * $Id: clparse.c,v 1.62.2.4 2003/02/10 00:39:57 dhankins Exp $ Copyright (c) 1996-2002 The Internet Software Consortium.  All rights reserved.
+ * $FreeBSD: src/contrib/isc-dhcp/client/clparse.c,v 1.11 2003/09/02 11:13:20 mbr Exp $
+ * $DragonFly$
  */
 
-static char copyright[] =
-"$Id: clparse.c,v 1.62.2.3 2002/11/17 02:25:43 dhankins Exp $ Copyright (c) 1996-2002 The Internet Software Consortium.  All rights reserved.\n";
-
 #include "dhcpd.h"
 
 static TIME parsed_time;
 
 struct client_config top_level_config;
 
-char client_script_name [] = "/sbin/dhclient-script";
+char client_script_name [] = _PATH_DHCLIENT_SCRIPT;
 
 u_int32_t default_requested_options [] = {
 	DHO_SUBNET_MASK,
@@ -622,34 +618,41 @@
 	struct parse *cfile;
 	u_int32_t **list;
 {
-	int ix, i;
+	int ix;
 	int token;
 	const char *val;
 	pair p = (pair)0, q, r;
+	struct option *option;
 
 	ix = 0;
 	do {
-		token = next_token (&val, (unsigned *)0, cfile);
-		if (token == SEMI)
+		token = peek_token (&val, (unsigned *)0, cfile);
+		if (token == SEMI) {
+			token = next_token (&val, (unsigned *)0, cfile);
 			break;
+		}
 		if (!is_identifier (token)) {
 			parse_warn (cfile, "%s: expected option name.", val);
+			token = next_token (&val, (unsigned *)0, cfile);
 			skip_to_semi (cfile);
 			return;
 		}
-		for (i = 0; i < 256; i++) {
-			if (!strcasecmp (dhcp_options [i].name, val))
-				break;
-		}
-		if (i == 256) {
+		option = parse_option_name (cfile, 0, NULL);
+		if (!option) {
 			parse_warn (cfile, "%s: expected option name.", val);
+			return;
+		}
+		if (option -> universe != &dhcp_universe) {
+			parse_warn (cfile,
+				"%s.%s: Only global options allowed.",
+				option -> universe -> name, option->name );
 			skip_to_semi (cfile);
 			return;
 		}
 		r = new_pair (MDL);
 		if (!r)
 			log_fatal ("can't allocate pair for option code.");
-		r -> car = (caddr_t)(long)i;
+		r -> car = (caddr_t)(long)option -> code;
 		r -> cdr = (pair)0;
 		if (p)
 			q -> cdr = r;
Index: isc-dhcp/client/dhclient-script.8
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/dhclient-script.8,v
retrieving revision 1.2
diff -u -r1.2 dhclient-script.8
--- isc-dhcp/client/dhclient-script.8	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/dhclient-script.8	9 Oct 2003 02:20:19 -0000
@@ -36,8 +36,7 @@
 .\" ``http://www.nominum.com''.
 .\"
 .\" $Id: dhclient-script.8,v 1.8.2.4 2002/11/17 02:25:43 dhankins Exp $
-.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient-script.8,v 1.5.2.5 2003/03/02 16:42:37 murray Exp $
-.\" $DragonFly: src/contrib/isc-dhcp/client/dhclient-script.8,v 1.2 2003/06/17 04:24:02 dillon Exp $
+.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient-script.8,v 1.10 2003/01/16 07:23:57 obrien Exp $
 .\"
 .TH dhclient-script 8
 .SH NAME
Index: isc-dhcp/client/dhclient.8
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/dhclient.8,v
retrieving revision 1.2
diff -u -r1.2 dhclient.8
--- isc-dhcp/client/dhclient.8	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/dhclient.8	9 Oct 2003 02:20:19 -0000
@@ -20,8 +20,7 @@
 .\"
 .\" Portions copyright (c) 2000 David E. O'Brien.
 .\" All rights reserved.
-.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient.8,v 1.8.2.4 2003/03/02 16:42:37 murray Exp $
-.\" $DragonFly: src/contrib/isc-dhcp/client/dhclient.8,v 1.2 2003/06/17 04:24:02 dillon Exp $
+.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient.8,v 1.14 2003/07/28 08:30:11 mbr Exp $
 .\"
 .TH dhclient 8
 .SH NAME
@@ -42,6 +41,9 @@
 .B -q
 ]
 [
+.B -v
+]
+[
 .B -1
 ]
 [
@@ -72,6 +74,10 @@
 relay
 ]
 [
+.B -i
+interval
+]
+[
 .B -n
 ]
 [
@@ -188,6 +194,12 @@
 flag, followed by the IP address to send.   This is only useful for testing,
 and should not be expected to work in any consistent or useful way.
 .PP
+On FreeBSD, dhclient can be enabled to automatically handle the
+link status of the network card. Normally polling is done every
+five seconds. The polling interval can be set using the
+.B -i
+flag, followed by the numbers of seconds. Minimum is one second.
+.PP
 The DHCP client will normally run in the foreground until it has
 configured an interface, and then will revert to running in the
 background.   To run force dhclient to always run as a foreground
@@ -205,6 +217,10 @@
 .B -q
 flag prevents any messages other than errors from being printed to the
 standard error descriptor.
+.B -v
+flag turns on all messages.
+Opposite of
+.B -q .
 .PP
 The client normally doesn't release the current lease as it is not
 required by the DHCP protocol.  Some cable ISPs require their clients
Index: isc-dhcp/client/dhclient.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/dhclient.c,v
retrieving revision 1.2
diff -u -r1.2 dhclient.c
--- isc-dhcp/client/dhclient.c	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/dhclient.c	9 Oct 2003 02:34:10 -0000
@@ -38,17 +38,23 @@
  * by Ted Lemon since then, so any mistakes you find are probably his
  * fault and not Elliot's.
  *
- * @(#) Copyright (c) 1995-2002 Internet Software Consortium.  All rights reserved.";
- * $Id: dhclient.c,v 1.129.2.12 2002/11/07 23:26:38 dhankins Exp $
- * $FreeBSD: src/contrib/isc-dhcp/client/dhclient.c,v 1.9.2.8 2003/03/23 23:33:05 mbr Exp $
- * $DragonFly: src/contrib/isc-dhcp/client/dhclient.c,v 1.2 2003/06/17 04:24:02 dillon Exp $
+ * $Id: dhclient.c,v 1.129.2.16 2003/04/26 21:51:39 dhankins Exp $ Copyright (c) 1995-2002 Internet Software Consortium.  All rights reserved.
+ * $FreeBSD: src/contrib/isc-dhcp/client/dhclient.c,v 1.34 2003/09/02 11:09:45 mbr Exp $
+ * $DragonFly$
  */
 
-static char ocopyright[] = "$Id: dhclient.c,v 1.129.2.12 2002/11/07 23:26:38 dhankins Exp $ Copyright (c) 1995-2002 Internet Software Consortium.  All rights reserved.";
-
 #include "dhcpd.h"
 #include "version.h"
 
+#ifdef __FreeBSD__
+#include <sys/ioctl.h>
+#include <net/if_media.h>
+#if defined(DRAGONFLY_FUTURE)
+#include <net80211/ieee80211_ioctl.h>
+#include <net80211/ieee80211.h>
+#endif
+#endif
+
 TIME cur_time;
 TIME default_lease_time = 43200; /* 12 hours... */
 TIME max_lease_time = 86400; /* 24 hours... */
@@ -86,6 +92,10 @@
 int onetry=0;
 int quiet=1;
 int nowait=0;
+int doinitcheck=0;
+#ifdef ENABLE_POLLING_MODE
+int polling_interval = 5;
+#endif
 
 static void usage PROTO ((void));
 
@@ -95,7 +105,7 @@
 	int argc;
 	char **argv, **envp;
 {
-	int i, e;
+	int i;
 	struct servent *ent;
 	struct interface_info *ip;
 	struct client_state *client;
@@ -112,11 +122,8 @@
 	int no_dhclient_db = 0;
 	int no_dhclient_pid = 0;
 	int no_dhclient_script = 0;
-	FILE *pidfd;
-	pid_t oldpid;
 	char *s;
 
-	oldpid = 0;
 	/* Make sure we have stdin, stdout and stderr. */
 	i = open ("/dev/null", O_RDWR);
 	if (i == 0)
@@ -189,6 +196,9 @@
 		} else if (!strcmp (argv [i], "-q")) {
 			quiet = 1;
 			quiet_interface_discovery = 1;
+		} else if (!strcmp (argv [i], "-v")) {
+			quiet = 0;
+			quiet_interface_discovery = 0;
 		} else if (!strcmp (argv [i], "-s")) {
 			if (++i == argc)
 				usage ();
@@ -197,9 +207,24 @@
 			if (++i == argc)
 				usage ();
 			relay = argv [i];
+		} else if (!strcmp (argv [i], "-nw")) {
+			nowait = 1;
 		} else if (!strcmp (argv [i], "-n")) {
 			/* do not start up any interfaces */
 			interfaces_requested = 1;
+#ifdef ENABLE_POLLING_MODE
+		} else if (!strcmp (argv [i], "-i")) {
+			if (++i == argc)
+				usage ();
+			polling_interval = (int)strtol (argv [i],
+			    (char **)NULL, 10);
+			if (polling_interval <= 0) {
+				log_info ("Incorrect polling interval %d",
+				    polling_interval);
+				log_info ("Using a default of 5 seconds");
+				polling_interval = 5;
+			}
+#endif
 		} else if (!strcmp (argv [i], "-w")) {
 			/* do not exit if there are no broadcast interfaces. */
 			persist = 1;
@@ -217,8 +242,6 @@
 		} else if (!strcmp (argv [i], "--version")) {
 			log_info ("isc-dhclient-%s", DHCP_VERSION);
 			exit (0);
-		} else if (!strcmp (argv [i], "-nw")) {
-			nowait = 1;
  		} else if (argv [i][0] == '-') {
  		    usage ();
 		} else {
@@ -231,6 +254,18 @@
 			    log_fatal ("%s: interface name too long (max %ld)",
 				       argv [i], (long)strlen (argv [i]));
  		    strlcpy (tmp -> name, argv [i], IFNAMSIZ);
+#ifdef __FreeBSD__
+#if defined(DRAGONFLY_FUTURE)
+		    set_ieee80211 (tmp);
+#endif
+#endif
+		    /* Init some interface vars, enable polling */
+#ifdef ENABLE_POLLING_MODE
+		    tmp -> forcediscover = 0;
+		    tmp -> linkstate = HAVELINK;
+		    tmp -> polling = 1;
+#endif /* ifdef ENABLE_POLLING_MODE */
+
 		    if (interfaces) {
 			    interface_reference (&tmp -> next,
 						 interfaces, MDL);
@@ -258,12 +293,19 @@
 	/* first kill of any currently running client */
 	if (release_mode) {
 
+		FILE *pidfd;
+		pid_t oldpid;
+		long temp;
+		int e;
+
+		oldpid = 0;
 		if ((pidfd = fopen(path_dhclient_pid, "r")) != NULL) {
-			e = fscanf(pidfd, "%d", &oldpid);
+			e = fscanf(pidfd, "%ld\n", &temp);
+			oldpid = (pid_t)temp;
 
 			if (e != 0 && e != EOF) {
 				if (oldpid) {
-					if (kill(oldpid, SIGKILL) == 0)
+					if (kill(oldpid, SIGTERM) == 0)
 						unlink(path_dhclient_pid);
 				}
 			}
@@ -384,6 +426,18 @@
 					     INTERFACE_AUTOMATIC)) !=
 			     INTERFACE_REQUESTED))
 				continue;
+#ifdef __FreeBSD__
+#if defined(DRAGONFLY_FUTURE)
+			set_ieee80211 (ip);
+#endif
+#endif
+#ifdef ENABLE_POLLING_MODE
+			ip -> forcediscover = 0;
+			if (ip -> client -> config -> media != NULL)
+				ip -> havemedia = 1;
+			else
+				ip -> havemedia = 0;
+#endif
 			script_init (ip -> client,
 				     "PREINIT", (struct string_list *)0);
 			if (ip -> client -> alias)
@@ -426,8 +480,13 @@
 				client -> state = S_INIT;
 				/* Set up a timeout to start the initialization
 				   process. */
+#ifdef ENABLE_POLLING_MODE
+				add_timeout (cur_time + random () % 5 + 2,
+					     state_polling, client, 0, 0);
+#else
 				add_timeout (cur_time + random () % 5,
 					     state_reboot, client, 0, 0);
+#endif
 			}
 		}
 	}
@@ -875,6 +934,15 @@
 	/* Write out the new lease. */
 	write_client_lease (client, client -> new, 0, 0);
 
+	/*
+	 * It's now possible that state_reboot can be called
+	 * after a interface link went down and is up again.
+	 * To prevent tons of equal leases saved on disk, we rewrite
+	 * them.
+	 */
+	read_client_leases ();
+	rewrite_client_leases ();
+
 	/* Replace the old active lease with the new one. */
 	if (client -> active)
 		destroy_client_lease (client -> active);
@@ -889,6 +957,12 @@
 	      piaddr (client -> active -> address),
 	      (long)(client -> active -> renewal - cur_time));
 	client -> state = S_BOUND;
+#ifdef ENABLE_POLLING_MODE
+	/* Init some interface vars, enable polling */
+	client -> interface -> linkstate = HAVELINK;
+	client -> interface -> forcediscover = 0;
+	client -> interface -> polling = 1;
+#endif /* ifdef ENABLE_POLLING_MODE */
 	reinitialize_interfaces ();
 	go_daemon ();
 	if (client -> config -> do_forward_update) {
@@ -1351,6 +1425,11 @@
 	int interval;
 	int increase = 1;
 
+#ifdef ENABLE_POLLING_MODE
+	/* Disable polling for this interface */
+	client -> interface -> polling = 0;
+#endif
+
 	/* Figure out how long it's been since we started transmitting. */
 	interval = cur_time - client -> first_sending;
 
@@ -1456,6 +1535,9 @@
 	struct client_lease *loop;
 	struct client_lease *lp;
 
+	if (client -> interface -> linkstate == NOLINK)
+		return;
+
 	loop = lp = client -> active;
 
 	log_info ("No DHCPOFFERS received.");
@@ -1488,6 +1570,10 @@
 				log_info ("bound: renewal in %ld %s.",
 					  (long)(client -> active -> renewal -
 						 cur_time), "seconds");
+#ifdef ENABLE_POLLING_MODE
+				/* Enable polling for this interface */
+				client -> interface -> polling = 1;
+#endif
 				add_timeout (client -> active -> renewal,
 					     state_bound, client, 0, 0);
 			    } else {
@@ -1495,6 +1581,11 @@
 				log_info ("bound: immediate renewal.");
 				state_bound (client);
 			    }
+			    /*
+			     * Set the link status back to nolink, even
+			     * if we have media settings.
+			     */
+			    client -> interface -> linkstate = NOLINK;
 			    reinitialize_interfaces ();
 			    go_daemon ();
 			    return;
@@ -1540,6 +1631,12 @@
 	}
 
 	log_info ("No working leases in persistent database - sleeping.");
+
+#ifdef ENABLE_POLLING_MODE
+	/* Enable polling for this interface */
+	client -> interface -> polling = 1;
+#endif
+
 	script_init (client, "FAIL", (struct string_list *)0);
 	if (client -> alias)
 		script_write_params (client, "alias_", client -> alias);
@@ -1877,10 +1974,17 @@
 	/* Set up the option buffer... */
 	client -> packet_length =
 		cons_options ((struct packet *)0, &client -> packet,
-			      (struct lease *)0, client, 0,
-			      (struct option_state *)0, options,
-			      &global_scope, 0, 0, 0, (struct data_string *)0,
+			      (struct lease *)0, client,
+			      /* maximum packet size */1500,
+			      (struct option_state *)0,
+			      options,
+			      /* scope */ &global_scope,
+			      /* overload */ 0,
+			      /* terminate */0,
+			      /* bootpp    */0,
+			      (struct data_string *)0,
 			      client -> config -> vendor_space_name);
+
 	option_state_dereference (&options, MDL);
 	if (client -> packet_length < BOOTP_MIN_LEN)
 		client -> packet_length = BOOTP_MIN_LEN;
@@ -1944,10 +2048,17 @@
 	/* Set up the option buffer... */
 	client -> packet_length =
 		cons_options ((struct packet *)0, &client -> packet,
-			      (struct lease *)0, client, 0,
-			      (struct option_state *)0, client -> sent_options,
-			      &global_scope, 0, 0, 0, (struct data_string *)0,
+			      (struct lease *)0, client,
+			      /* maximum packet size */1500,
+			      (struct option_state *)0,
+			      client -> sent_options, 
+			      /* scope */ &global_scope,
+			      /* overload */ 0,
+			      /* terminate */0,
+			      /* bootpp    */0,
+			      (struct data_string *)0,
 			      client -> config -> vendor_space_name);
+
 	option_state_dereference (&client -> sent_options, MDL);
 	if (client -> packet_length < BOOTP_MIN_LEN)
 		client -> packet_length = BOOTP_MIN_LEN;
@@ -2073,10 +2184,17 @@
 	/* Set up the option buffer... */
 	client -> packet_length =
 		cons_options ((struct packet *)0, &client -> packet,
-			      (struct lease *)0, client, 0,
-			      (struct option_state *)0, options,
-			      &global_scope, 0, 0, 0, (struct data_string *)0,
+			      (struct lease *)0, client,
+			      /* maximum packet size */1500,
+			      (struct option_state *)0,
+			      options,
+			      /* scope */ &global_scope,
+			      /* overload */ 0,
+			      /* terminate */0,
+			      /* bootpp    */0,
+			      (struct data_string *)0,
 			      client -> config -> vendor_space_name);
+
 	if (client -> packet_length < BOOTP_MIN_LEN)
 		client -> packet_length = BOOTP_MIN_LEN;
 	option_state_dereference (&options, MDL);
@@ -2768,8 +2886,10 @@
 			      case S_STOPPED:
 				break;
 			}
+#ifndef ENABLE_POLLING_MODE
 			client -> state = S_INIT;
 			state_reboot (client);
+#endif
 		}
 	}
 }
@@ -2995,7 +3115,9 @@
 		    break;
 
 		  case server_awaken:
+#ifndef ENABLE_POLLING_MODE
 		    state_reboot (client);
+#endif
 		    break;
 		}
 	    }
@@ -3132,3 +3254,261 @@
 	data_string_forget (&ddns_dhcid, MDL);
 	return rcode;
 }
+
+/* Check to see if there's a wire plugged in */
+int
+interface_active(struct interface_info *ip) {
+#ifdef __FreeBSD__
+	struct ifmediareq ifmr;
+	int *media_list, i;
+	char *ifname;
+	int sock;
+
+	ifname = ip -> name;
+
+	if ((sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
+		log_fatal ("Can't create interface_active socket");
+
+	(void) memset (&ifmr, 0, sizeof (ifmr));
+	(void) strncpy (ifmr.ifm_name, ifname, sizeof (ifmr.ifm_name));
+
+	if (ioctl (sock, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) {
+		/*
+		 * Interface doesn't support SIOCGIFMEDIA, presume okay
+		 */
+		close (sock);
+		return (HAVELINK);
+	}
+	close (sock);
+
+	if (ifmr.ifm_count == 0) {
+		/*
+		 * Assume that this means interface
+		 * does not support SIOCGIFMEDIA
+		 */
+		log_fatal ("%s: no media types?", ifname);
+		return (HAVELINK);
+	}
+
+	if (ifmr.ifm_status & IFM_AVALID) {
+		if (ip -> ieee80211) {
+			/*
+			 * Wavelan devices need to be checked if they are
+			 * associated.
+			 */
+			if ((IFM_TYPE(ifmr.ifm_active) == IFM_IEEE80211) &&
+			     (ifmr.ifm_status & IFM_ACTIVE)) {
+				return (HAVELINK);
+			}
+		} else {
+			if (ifmr.ifm_status & IFM_ACTIVE) {
+				return (HAVELINK);
+			}
+		}
+		/*
+		 * We really have no link.
+		 */
+		return (NOLINK);
+	}
+	/*
+	 * IFM_AVALID is not set. We cannot check
+	 * the link state. Assume HAVELINK.
+	 */
+
+#endif /* Other OSs */
+	/*
+	 * Always return a successful link if the OS
+	 * is not supported.
+	 */
+	return (HAVELINK);
+}
+
+#ifdef __FreeBSD__
+#if defined(DRAGONFLY_FUTURE)
+void
+set_ieee80211 (struct interface_info *ip) {
+
+	struct ieee80211req     ireq;
+	u_int8_t                data[32];
+	int                     associated = 0;
+	int *media_list, i;
+	char *ifname;
+	int sock;
+
+	ifname = ip -> name;
+
+	if ((sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
+		log_fatal ("Can't create interface_active socket");
+
+	(void) memset (&ireq, 0, sizeof (ireq));
+	(void) strncpy (ireq.i_name, ifname, sizeof (ireq.i_name));
+	ireq.i_data = &data;
+	ireq.i_type = IEEE80211_IOC_SSID;
+	ireq.i_val = -1;
+	/*
+	 * If we can't get the SSID,
+	 * this isn't an 802.11 device.
+	 */
+	if (ioctl (sock, SIOCG80211, &ireq) < 0)
+		ip -> ieee80211 = 0;
+	else {
+#ifdef DEBUG
+		printf ("Device %s has 802.11\n", ifname);
+#endif
+		ip -> ieee80211 = 1;
+	}
+	close (sock);
+}
+#endif /* __FreeBSD__ */
+#endif
+
+#ifdef ENABLE_POLLING_MODE
+/* Go to background after some time */
+void state_background (cpp)
+	void *cpp;
+{
+	go_daemon ();
+}
+
+/* Check the state of the NICs if we have link */
+void state_polling (cpp)
+        void *cpp;
+{
+	struct interface_info *ip;
+	struct client_state *client;
+	int result;
+
+	for (ip = interfaces; ip; ip = ip -> next) {
+		if (! ip -> polling)
+			continue;
+#ifdef DEBUG
+		printf ("%s: Polling interface state\n", ip -> name);
+		for (client = ip -> client;
+		     client; client = client -> next) {
+			printf ("%s: client state of %d\n", ip -> name, ip -> client -> state);
+			printf ("%s: link = %d\n", ip -> name, ip -> linkstate);
+		}
+#endif
+
+		result = interface_active (ip);
+		/*
+		 * If dhclient.conf contains media settings, we cannot
+		 * abort if the interface is not set to active mode.
+		 */
+		if (ip -> havemedia && ip -> client -> state != S_BOUND) {
+			if (result == HAVELINK)
+				ip -> forcediscover = 1;
+			result = HAVELINK;
+		}
+
+		/*
+		 * The last status of the interface tells us
+		 * the we've got no link ...
+		 */
+		if (ip -> linkstate == NOLINK || ! doinitcheck) {
+			/*
+			 * ... but we have now link. Let's send
+			 * requests.
+			 */
+			if (result == HAVELINK) {
+#ifdef DEBUG
+				if (ip -> havemedia)
+					printf ("%s: Trying media settings on interface\n",
+						ip -> name);
+				else
+					printf ("%s: Found Link on interface\n", ip -> name);
+#endif
+				/*
+				 * Set the interface to state_reboot. But of
+				 * course we can not be sure that we really got link,
+				 * we just assume it.
+				 */
+				for (client = ip -> client;
+				     client; client = client -> next) {
+						cancel_timeout (state_init, client);
+						cancel_timeout (state_reboot, client);
+						cancel_timeout (state_selecting, client);
+						add_timeout (cur_time + random () % 5,
+							    state_reboot, client, 0, 0);
+				}
+				ip -> linkstate = HAVELINK;
+			} else {
+#ifdef DEBUG
+				printf ("%s: No link on interface\n", ip -> name);
+#endif
+				for (client = ip -> client;
+				     client; client = client -> next) {
+					/*
+					 * Without this add_timout(), dhclient does
+					 * not poll on a interface if there
+					 * is no cable plugged in at startup
+					 * time. Because we add one additional second 
+					 * to the time of a normal timeout, we always
+					 * skip and block a running one. This prevents
+					 * that polling is done twice at the same time.
+					 */
+					if (client -> state == S_INIT) {
+						add_timeout (cur_time + (polling_interval + 1),
+						             state_polling, client, 0, 0);
+					}
+			 	}
+				ip -> linkstate = NOLINK;
+				/*
+				 * Automatically go into the background after
+				 * some time. Do this only if there are no
+				 * media options available for a interface.
+				 */
+				if (! ip -> havemedia && ! doinitcheck) {
+					add_timeout (cur_time + (polling_interval * 2),
+					            state_background, client, 0, 0);
+				}
+			}
+		}
+
+		/*
+		 * The last status of the interface tells us
+		 * the we previously had link.
+		 */
+		if (ip -> linkstate == HAVELINK && doinitcheck) {
+			if (result == NOLINK) {
+				/*
+				 * We lost link on the interface, or it isn't
+				 * associated anymore.
+				 */
+#ifdef DEBUG
+				printf ("%s: Lost Link on interface\n", ip -> name);
+#endif
+				/*
+				 * After we lost link, cycle again through the
+				 * different media settings if available. Else
+				 * set NOLINK.
+				 */
+				if (ip -> havemedia)
+					ip -> forcediscover = 1;
+				else
+					ip -> linkstate = NOLINK;
+			}
+			/*
+			 * If we happen to have a real link, but no
+			 * active lease, force the interface into
+			 * state_reboot. Do the same if media settings
+			 * are available.
+			 */
+			if (ip -> forcediscover) {
+				for (client = ip -> client;
+				     client; client = client -> next) {
+					if (client -> state != S_REBOOTING &&
+					    client -> state != S_SELECTING) {
+						add_timeout (cur_time + random () % 5,
+							    state_reboot, client, 0, 0);
+					}
+				}
+				ip -> forcediscover = 0;
+				ip -> linkstate = HAVELINK;
+			}
+			/* We still have link, do nothing. */
+		}
+	}
+	doinitcheck = 1;
+}
+#endif /* ifdef ENABLE_POLLING_MODE */
Index: isc-dhcp/client/dhclient.conf.5
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/dhclient.conf.5,v
retrieving revision 1.2
diff -u -r1.2 dhclient.conf.5
--- isc-dhcp/client/dhclient.conf.5	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/dhclient.conf.5	9 Oct 2003 02:20:19 -0000
@@ -35,9 +35,8 @@
 .\" see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
 .\" ``http://www.nominum.com''.
 .\"
-.\" $Id: dhclient.conf.5,v 1.12.2.8 2002/11/17 02:25:43 dhankins Exp $
-.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient.conf.5,v 1.7.2.2 2003/03/02 16:42:38 murray Exp $
-.\" $DragonFly: src/contrib/isc-dhcp/client/dhclient.conf.5,v 1.2 2003/06/17 04:24:02 dillon Exp $
+.\" $Id: dhclient.conf.5,v 1.12.2.9 2003/02/23 03:27:26 dhankins Exp $
+.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient.conf.5,v 1.13 2003/09/02 11:13:20 mbr Exp $
 .\"
 .TH dhclient.conf 5
 .SH NAME
@@ -448,7 +447,7 @@
 connected.  The media setup string is a system-dependent parameter
 which is passed to the dhcp client configuration script when
 initializing the interface.  On Unix and Unix-like systems, the
-argument is passed on the ifconfig command line when configuring te
+argument is passed on the ifconfig command line when configuring the
 interface.
 .PP
 The dhcp client automatically declares this parameter if it uses a
Index: isc-dhcp/client/dhclient.leases.5
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/dhclient.leases.5,v
retrieving revision 1.2
diff -u -r1.2 dhclient.leases.5
--- isc-dhcp/client/dhclient.leases.5	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/dhclient.leases.5	9 Oct 2003 02:25:18 -0000
@@ -37,8 +37,8 @@
 .\" Enterprises, see ``http://www.vix.com''.
 .\"
 .\" $Id: dhclient.leases.5,v 1.2.4.3 2002/11/17 02:25:44 dhankins Exp $
-.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient.leases.5,v 1.2.4.2 2003/03/02 16:42:38 murray Exp $
-.\" $DragonFly: src/contrib/isc-dhcp/client/dhclient.leases.5,v 1.2 2003/06/17 04:24:02 dillon Exp $
+.\" $FreeBSD: src/contrib/isc-dhcp/client/dhclient.leases.5,v 1.5 2003/01/16 07:36:45 obrien Exp $
+.\" $DragonFly$
 .\"
 .TH dhclient.leases 5
 .SH NAME
Index: isc-dhcp/client/scripts/freebsd
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/client/scripts/freebsd,v
retrieving revision 1.2
diff -u -r1.2 freebsd
--- isc-dhcp/client/scripts/freebsd	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/client/scripts/freebsd	9 Oct 2003 02:25:26 -0000
@@ -1,9 +1,8 @@
 #!/bin/sh
 #
-# $Id: freebsd,v 1.13.2.4 2002/06/09 22:37:55 murray Exp $
-#
-# $FreeBSD: src/contrib/isc-dhcp/client/scripts/freebsd,v 1.9.2.6 2003/03/02 16:42:38 murray Exp $
-# $DragonFly: src/contrib/isc-dhcp/client/scripts/freebsd,v 1.2 2003/06/17 04:24:02 dillon Exp $
+# $Id: freebsd,v 1.13.2.5 2003/04/27 19:44:01 dhankins Exp $
+# $FreeBSD: src/contrib/isc-dhcp/client/scripts/freebsd,v 1.26 2003/09/15 15:48:12 mbr Exp $
+# $DragonFly$
 
 if [ -x /usr/bin/logger ]; then
 	LOGGER="/usr/bin/logger -s -p user.notice -t dhclient"
@@ -14,13 +13,19 @@
 make_resolv_conf() {
   if [ x"$new_domain_name_servers" != x ]; then
     if [ "x$new_domain_name" != x ]; then
-      echo search $new_domain_name >/etc/resolv.conf
+      ( echo search $new_domain_name >/etc/resolv.conf )
+      exit_status=$?
     else
-      rm /etc/resolv.conf
+      ( rm /etc/resolv.conf )
+      exit_status=$?
+    fi
+    if [ $exit_status -ne 0 ]; then
+      $LOGGER "WARNING: Unable to update resolv.conf: Error $exit_status"
+    else
+      for nameserver in $new_domain_name_servers; do
+       ( echo nameserver $nameserver >>/etc/resolv.conf )
+      done
     fi
-    for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf
-    done
   fi
 }
 
@@ -45,12 +50,7 @@
   fi
 fi
 
-if [ x$new_network_number != x ]; then
-   $LOGGER New Network Number: $new_network_number
-fi
-
 if [ x$new_broadcast_address != x ]; then
- $LOGGER New Broadcast Address: $new_broadcast_address
   new_broadcast_arg="broadcast $new_broadcast_address"
 fi
 if [ x$old_broadcast_address != x ]; then
@@ -66,6 +66,15 @@
   alias_subnet_arg="netmask $alias_subnet_mask"
 fi
 
+# Get the interface to which our default route is bound to.
+if [ -x /usr/bin/netstat ]; then
+	if_defaultroute=`/usr/bin/netstat -rn \
+		| /usr/bin/grep "^default" \
+		| /usr/bin/awk '{print $6}'`
+else
+	if_defaultroute="x"
+fi
+
 if [ x$reason = xMEDIUM ]; then
   eval "ifconfig $interface $medium"
   eval "ifconfig $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1
@@ -161,7 +170,9 @@
     eval "ifconfig $interface inet -alias $old_ip_address $medium"
     route delete $old_ip_address 127.1 >/dev/null 2>&1
     for router in $old_routers; do
-      route delete default $router >/dev/null 2>&1
+      if [ $if_defaultroute = x ] || [ $if_defaultroute = $interface ]; then
+	      route delete default $router >/dev/null 2>&1
+      fi
     done
     if [ -n "$old_static_routes" ]; then
       set -- $old_static_routes
Index: isc-dhcp/common/dhcp-options.5
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/dhcp-options.5,v
retrieving revision 1.2
diff -u -r1.2 dhcp-options.5
--- isc-dhcp/common/dhcp-options.5	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/common/dhcp-options.5	9 Oct 2003 02:20:19 -0000
@@ -35,9 +35,8 @@
 .\" see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
 .\" ``http://www.nominum.com''.
 .\"
-.\" $Id: dhcp-options.5,v 1.19.2.9 2002/11/17 02:26:57 dhankins Exp $
-.\" $FreeBSD: src/contrib/isc-dhcp/common/dhcp-options.5,v 1.2.2.2 2003/03/02 16:42:38 murray Exp $
-.\" $DragonFly: src/contrib/isc-dhcp/common/dhcp-options.5,v 1.2 2003/06/17 04:24:02 dillon Exp $
+.\" $Id: dhcp-options.5,v 1.19.2.10 2003/02/23 03:27:42 dhankins Exp $
+.\" $FreeBSD: src/contrib/isc-dhcp/common/dhcp-options.5,v 1.6 2003/09/02 11:13:20 mbr Exp $
 .\"
 .TH dhcpd-options 5
 .SH NAME
@@ -223,7 +222,7 @@
 .B option \fBdhcp-client-identifier\fR \fIstring\fR\fB;\fR
 .RS 0.25i
 .PP
-This option can be used to specify the a DHCP client identifier in a
+This option can be used to specify a DHCP client identifier in a
 host declaration, so that dhcpd can find the host record by matching
 against the client identifier.
 .PP
@@ -413,8 +412,8 @@
 \fIip-address\fR... ]\fB;\fR
 .RS 0.25i
 .PP
-The Finger server option specifies a list of Finger available to the
-client.  Servers should be listed in order of preference.
+The Finger server option specifies a list of Finger servers available
+to the client.  Servers should be listed in order of preference.
 .RE
 .PP
 .B option \fBfont-servers\fR \fIip-address\fR [\fB,\fR \fIip-address\fR...
@@ -486,8 +485,8 @@
 \fIip-address\fR... ]\fB;\fR
 .RS 0.25i
 .PP
-The IRC server option specifies a list of IRC available to the
-client.  Servers should be listed in order of preference.
+The IRC server option specifies a list of IRC servers available
+to the client.  Servers should be listed in order of preference.
 .RE
 .PP
 .B option \fBlog-servers\fR \fIip-address\fR [\fB,\fR \fIip-address\fR...
@@ -594,7 +593,7 @@
 B-node: Broadcast - no WINS
 .TP
 .I 2
-P-node: Peer - WINS only.
+P-node: Peer - WINS only
 .TP
 .I 4
 M-node: Mixed - broadcast, then WINS
@@ -649,8 +648,8 @@
 \fIip-address\fR... ]\fB;\fR
 .RS 0.25i
 .PP
-The NNTP server option specifies a list of NNTP available to the
-client.  Servers should be listed in order of preference.
+The NNTP server option specifies a list of NNTP servesr available
+to the client.  Servers should be listed in order of preference.
 .RE
 .PP
 .B option \fBnon-local-source-routing\fR \fIflag\fR\fB;\fR
@@ -734,8 +733,8 @@
 .B option \fBpop-server\fR \fIip-address\fR [\fB,\fR \fIip-address\fR... ]\fB;\fR
 .RS 0.25i
 .PP
-The POP3 server option specifies a list of POP3 available to the
-client.  Servers should be listed in order of preference.
+The POP3 server option specifies a list of POP3 servers available
+to the client.  Servers should be listed in order of preference.
 .RE
 .PP
 .B option \fBresource-location-servers\fR \fIip-address\fR
@@ -906,8 +905,8 @@
 .B option \fBtcp-keepalive-garbage\fR \fIflag\fR\fB;\fR
 .RS 0.25i
 .PP
-This option specifies the whether or not the client should send TCP
-keepalive messages with a octet of garbage for compatibility with
+This option specifies whether or not the client should send TCP
+keepalive messages with an octet of garbage for compatibility with
 older implementations.  A value of false indicates that a garbage octet
 should not be sent. A value of true indicates that a garbage octet
 should be sent.
@@ -1032,8 +1031,8 @@
 \fIip-address\fR... ]\fB;\fR
 .RS 0.25i
 .PP
-The WWW server option specifies a list of WWW available to the
-client.  Servers should be listed in order of preference.
+The WWW server option specifies a list of WWW servers available
+to the client.  Servers should be listed in order of preference.
 .RE
 .PP
 .B option \fBx-display-manager\fR \fIip-address\fR [\fB,\fR \fIip-address\fR...
Index: isc-dhcp/common/discover.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/discover.c,v
retrieving revision 1.1
diff -u -r1.1 discover.c
--- isc-dhcp/common/discover.c	17 Jun 2003 02:44:59 -0000	1.1
+++ isc-dhcp/common/discover.c	9 Oct 2003 02:26:23 -0000
@@ -39,13 +39,11 @@
  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
+ * 
+ * $Id: discover.c,v 1.42.2.14 2003/07/25 19:44:15 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.
+ * $DragonFly$
  */
 
-#ifndef lint
-static char copyright[] =
-"$Id: discover.c,v 1.42.2.13 2002/11/17 02:26:57 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
-#endif /* not lint */
-
 #include "dhcpd.h"
 #include <sys/ioctl.h>
 
@@ -258,10 +256,12 @@
 			if (!strcmp (tmp -> name, ifp -> ifr_name))
 				break;
 
-		/* Skip loopback, point-to-point and down interfaces,
-		   except don't skip down interfaces if we're trying to
-		   get a list of configurable interfaces. */
-		if (((ifr.ifr_flags & IFF_LOOPBACK ||
+		/* Skip non broadcast interfaces (plus loopback and
+		   point-to-point in case an OS incorrectly marks them
+		   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))
Index: isc-dhcp/common/dispatch.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/dispatch.c,v
retrieving revision 1.1
diff -u -r1.1 dispatch.c
--- isc-dhcp/common/dispatch.c	17 Jun 2003 02:44:59 -0000	1.1
+++ isc-dhcp/common/dispatch.c	9 Oct 2003 02:26:44 -0000
@@ -39,18 +39,22 @@
  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
+ *
+ * $Id: dispatch.c,v 1.63.2.3 2002/11/17 02:26:57 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.
+ * $FreeBSD: src/contrib/isc-dhcp/common/dispatch.c,v 1.4 2003/08/10 22:01:37 mbr Exp $
+ * $DragonFly$
  */
 
-#ifndef lint
-static char copyright[] =
-"$Id: dispatch.c,v 1.63.2.3 2002/11/17 02:26:57 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
-#endif /* not lint */
 
 #include "dhcpd.h"
 
 struct timeout *timeouts;
 static struct timeout *free_timeouts;
 
+#ifdef ENABLE_POLLING_MODE
+extern int polling_interval;
+#endif
+
 void set_time (u_int32_t t)
 {
 	/* Do any outstanding timeouts. */
@@ -95,11 +99,26 @@
 void dispatch ()
 {
 	struct timeval tv, *tvp;
+#ifdef ENABLE_POLLING_MODE
+	struct timeval *tvp_new;
+#endif
 	isc_result_t status;
+	TIME cur_time;
 
+	tvp = NULL;
+#ifdef ENABLE_POLLING_MODE
+	tvp_new = NULL;
+#endif
 	/* Wait for a packet or a timeout... XXX */
 	do {
 		tvp = process_outstanding_timeouts (&tv);
+#ifdef ENABLE_POLLING_MODE
+		GET_TIME (&cur_time);
+		add_timeout(cur_time + polling_interval, state_polling, 0, 0, 0);
+		tvp_new = process_outstanding_timeouts(&tv);
+		if (tvp != NULL && (tvp -> tv_sec > tvp_new -> tv_sec))
+			tvp = tvp_new;
+#endif /* ENABLE_POLLING_MODE */
 		status = omapi_one_dispatch (0, tvp);
 	} while (status == ISC_R_TIMEDOUT || status == ISC_R_SUCCESS);
 	log_fatal ("omapi_one_dispatch failed: %s -- exiting.",
Index: isc-dhcp/common/options.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/options.c,v
retrieving revision 1.1
diff -u -r1.1 options.c
--- isc-dhcp/common/options.c	17 Jun 2003 02:45:00 -0000	1.1
+++ isc-dhcp/common/options.c	9 Oct 2003 02:27:08 -0000
@@ -39,13 +39,11 @@
  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
+ *
+ * $Id: options.c,v 1.85.2.12 2003/03/31 03:06:55 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.
+ * $DragonFly$
  */
 
-#ifndef lint
-static char copyright[] =
-"$Id: options.c,v 1.85.2.9 2002/11/17 02:26:58 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
-#endif /* not lint */
-
 #define DHCP_OPTION_DATA
 #include "dhcpd.h"
 #include <omapip/omapip_p.h>
@@ -166,15 +164,36 @@
 		   the parse fails, or the option isn't an encapsulation (by
 		   far the most common case), or the option isn't entirely
 		   an encapsulation, keep the raw data as well. */
-		if (!((universe -> options [code] -> format [0] == 'e' ||
+		if (universe -> options [code] &&
+		    !((universe -> options [code] -> format [0] == 'e' ||
 		       universe -> options [code] -> format [0] == 'E') &&
 		      (parse_encapsulated_suboptions
 		       (options, universe -> options [code],
 			buffer + offset + 2, len,
 			universe, (const char *)0)))) {
-		    save_option_buffer (universe, options, bp,
-					&bp -> data [offset + 2], len,
-					universe -> options [code], 1);
+		    op = lookup_option (universe, options, code);
+		    if (op) {
+			struct data_string new;
+			memset (&new, 0, sizeof new);
+			if (!buffer_allocate (&new.buffer, op -> data.len + len,
+					      MDL)) {
+			    log_error ("parse_option_buffer: No memory.");
+			    return 0;
+			}
+			memcpy (new.buffer -> data, op -> data.data,
+				op -> data.len);
+			memcpy (&new.buffer -> data [op -> data.len],
+				&bp -> data [offset + 2], len);
+			new.len = op -> data.len + len;
+			new.data = new.buffer -> data;
+			data_string_forget (&op -> data, MDL);
+			data_string_copy (&op -> data, &new, MDL);
+			data_string_forget (&new, MDL);
+		    } else {
+			save_option_buffer (universe, options, bp,
+					    &bp -> data [offset + 2], len,
+					    universe -> options [code], 1);
+		    }
 		}
 		offset += len + 2;
 	}
@@ -470,14 +489,18 @@
 	   and no alternate maximum message size has been specified, take the
 	   one in the packet. */
 
-	if (!mms && inpacket &&
+	if (inpacket &&
 	    (op = lookup_option (&dhcp_universe, inpacket -> options,
 				 DHO_DHCP_MAX_MESSAGE_SIZE))) {
 		evaluate_option_cache (&ds, inpacket,
 				       lease, client_state, in_options,
 				       cfg_options, scope, op, MDL);
-		if (ds.len >= sizeof (u_int16_t))
-			mms = getUShort (ds.data);
+		if (ds.len >= sizeof (u_int16_t)) {
+			i = getUShort (ds.data);
+
+			if(!mms || (i < mms))
+				mms = i;
+		}
 		data_string_forget (&ds, MDL);
 	}
 
Index: isc-dhcp/common/parse.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/parse.c,v
retrieving revision 1.1
diff -u -r1.1 parse.c
--- isc-dhcp/common/parse.c	17 Jun 2003 02:45:00 -0000	1.1
+++ isc-dhcp/common/parse.c	9 Oct 2003 02:27:32 -0000
@@ -39,12 +39,11 @@
  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
+ * 
+ * $Id: parse.c,v 1.104.2.14 2003/07/25 19:36:11 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.
+ * $DragonFly$
  */
 
-#ifndef lint
-static char copyright[] =
-"$Id: parse.c,v 1.104.2.12 2002/11/17 02:58:34 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
-#endif /* not lint */
 
 #include "dhcpd.h"
 
@@ -284,8 +283,11 @@
 		name = parse_host_name (cfile);
 		if (!name)
 			return 0;
-		if (!make_host_lookup (expr, name))
+		if (!make_host_lookup (expr, name)) {
+			dfree(name, MDL);
 			return 0;
+		}
+		dfree(name, MDL);
 		if (!uniform) {
 			if (!make_limit (&x, *expr, 4))
 				return 0;
@@ -4040,7 +4042,11 @@
 	}
 
 	if (binop != expr_none) {
-	  if (expression_context (rhs) != expression_context (lhs)) {
+	  rhs_context = expression_context(rhs);
+	  lhs_context = expression_context(lhs);
+
+	  if ((rhs_context != context_any) && (lhs_context != context_any) &&
+			(rhs_context != lhs_context)) {
 	    parse_warn (cfile, "illegal expression relating different types");
 	    skip_to_semi (cfile);
 	    expression_dereference (&rhs, MDL);
@@ -4052,9 +4058,10 @@
 	  switch(binop) {
 	    case expr_not_equal:
 	    case expr_equal:
-		if ((expression_context(rhs) != context_data_or_numeric) &&
-		    (expression_context(rhs) != context_data) &&
-		    (expression_context(rhs) != context_numeric)) {
+		if ((rhs_context != context_data_or_numeric) &&
+		    (rhs_context != context_data) &&
+		    (rhs_context != context_numeric) &&
+		    (rhs_context != context_any)) {
 			parse_warn (cfile, "expecting data/numeric expression");
 			skip_to_semi (cfile);
 			expression_dereference (&rhs, MDL);
@@ -4065,7 +4072,8 @@
 
 	    case expr_and:
 	    case expr_or:
-		if (expression_context(rhs) != context_boolean) {
+		if ((rhs_context != context_boolean) &&
+		    (rhs_context != context_any)) {
 			parse_warn (cfile, "expecting boolean expressions");
 			skip_to_semi (cfile);
 			expression_dereference (&rhs, MDL);
@@ -4082,7 +4090,8 @@
 	    case expr_binary_and:
 	    case expr_binary_or:
 	    case expr_binary_xor:
-		if (expression_context(rhs) != context_numeric) {
+		if ((rhs_context != context_numeric) &&
+		    (rhs_context != context_any)) {
 			parse_warn (cfile, "expecting numeric expressions");
                         skip_to_semi (cfile);
                         expression_dereference (&rhs, MDL);
Index: isc-dhcp/common/print.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/print.c,v
retrieving revision 1.1
diff -u -r1.1 print.c
--- isc-dhcp/common/print.c	17 Jun 2003 02:45:00 -0000	1.1
+++ isc-dhcp/common/print.c	9 Oct 2003 02:27:44 -0000
@@ -3,7 +3,7 @@
    Turn data structures into printable text. */
 
 /*
- * Copyright (c) 1995-2002 Internet Software Consortium.
+ * Copyright (c) 1995-2003 Internet Software Consortium.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,11 @@
  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
+ * 
+ * $Id: print.c,v 1.53.2.9 2003/03/31 03:06:56 dhankins Exp $ Copyright (c) 1995-2003 The Internet Software Consortium.  All rights reserved.
+ * $DragonFly$
  */
 
-#ifndef lint
-static char copyright[] =
-"$Id: print.c,v 1.53.2.7 2002/11/17 02:26:59 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
-#endif /* not lint */
 
 #include "dhcpd.h"
 
@@ -223,7 +222,7 @@
 	       lease -> host ? lease -> host -> name : "<none>");
 }	
 
-#if defined (DEBUG)
+#if defined (DEBUG_PACKET)
 void dump_packet_option (struct option_cache *oc,
 			 struct packet *packet,
 			 struct lease *lease,
@@ -304,19 +303,46 @@
 	char lbuf [80];
 	int lbix = 0;
 
-	lbuf [0] = 0;
+/*
+          1         2         3         4         5         6         7
+01234567890123456789012345678901234567890123456789012345678901234567890123
+280: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   .................  
+*/
+
+	memset(lbuf, ' ', 79);
+	lbuf [79] = 0;
 
 	for (i = 0; i < len; i++) {
 		if ((i & 15) == 0) {
-			if (lbix)
-				log_info (lbuf);
-			sprintf (lbuf, "%03x:", i);
-			lbix = 4;
+		  if (lbix) {
+		    	lbuf[53]=' ';
+			lbuf[54]=' ';
+			lbuf[55]=' ';
+			lbuf[73]='\0';
+			log_info (lbuf);
+		  }
+		  memset(lbuf, ' ', 79);
+		  lbuf [79] = 0;
+		  sprintf (lbuf, "%03x:", i);
+		  lbix = 4;
 		} else if ((i & 7) == 0)
 			lbuf [lbix++] = ' ';
+
+		if(isprint(buf[i])) {
+		  lbuf[56+(i%16)]=buf[i];
+		} else {
+		  lbuf[56+(i%16)]='.';
+		}
+
 		sprintf (&lbuf [lbix], " %02x", buf [i]);
 		lbix += 3;
+		lbuf[lbix]=' ';
+
 	}
+	lbuf[53]=' ';
+	lbuf[54]=' ';
+	lbuf[55]=' ';
+	lbuf[73]='\0';
 	log_info (lbuf);
 }
 
@@ -337,7 +363,7 @@
 			if (bp -> len)
 				dump_raw (bp -> name, bp -> len);
 			else
-				log_info ((const char *)bp -> name);
+				log_info ("%s", (const char *)bp -> name);
 		}
 	}
 }
@@ -1248,6 +1274,9 @@
 		      case T_TXT:
 			en = "TXT";
 			break;
+		      case T_KEY:
+			en = "KEY";
+			break;
 		      case T_CNAME:
 			en = "CNAME";
 			break;
@@ -1268,13 +1297,19 @@
 				if (s + 1 < end)
 					*s++ = '"';
 			}
-			if (s + u -> r_size < end) {
-				memcpy (s, u -> r_data, u -> r_size);
-				s += u -> r_size;
-				if (u -> r_type == T_TXT) {
-					if (s + 1 < end)
-						*s++ = '"';
-				}
+			if(u->r_type == T_KEY) {
+			  strcat(s, "<keydata>");
+			  s+=strlen("<keydata>");
+			}
+			else {  
+			  if (s + u -> r_size < end) {
+			    memcpy (s, u -> r_data, u -> r_size);
+			    s += u -> r_size;
+			    if (u -> r_type == T_TXT) {
+			      if (s + 1 < end)
+				*s++ = '"';
+			    }
+			  }
 			}
 		}
 		if (position) {
Index: isc-dhcp/common/tables.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/common/tables.c,v
retrieving revision 1.1
diff -u -r1.1 tables.c
--- isc-dhcp/common/tables.c	17 Jun 2003 02:45:00 -0000	1.1
+++ isc-dhcp/common/tables.c	9 Oct 2003 02:20:19 -0000
@@ -43,7 +43,8 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: tables.c,v 1.51.2.6 2002/11/17 02:26:59 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
+"$FreeBSD: src/contrib/isc-dhcp/common/tables.c,v 1.10 2003/09/02 11:13:20 mbr Exp $"
+"$Id: tables.c,v 1.51.2.7 2003/07/25 22:53:38 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -179,181 +180,181 @@
 	{ "user-class", "t",				&dhcp_universe, 77 },
 	{ "slp-directory-agent", "fIa",			&dhcp_universe, 78 },
 	{ "slp-service-scope", "fto",			&dhcp_universe, 79 },
-	{ "#80", "X",					&dhcp_universe, 80 },
+	{ "unknown-80", "X",				&dhcp_universe, 80 },
 	{ "fqdn", "Efqdn.",				&dhcp_universe, 81 },
 	{ "relay-agent-information", "Eagent.",		&dhcp_universe, 82 },
-	{ "#83", "X",					&dhcp_universe, 83 },
-	{ "#84", "X",					&dhcp_universe, 84 },
+	{ "unknown-83", "X",				&dhcp_universe, 83 },
+	{ "unknown-84", "X",				&dhcp_universe, 84 },
 	{ "nds-servers", "IA",				&dhcp_universe, 85 },
 	{ "nds-tree-name", "X",				&dhcp_universe, 86 },
 	{ "nds-context", "X",				&dhcp_universe, 87 },
-	{ "#88", "X",					&dhcp_universe, 88 },
-	{ "#89", "X",					&dhcp_universe, 89 },
-	{ "#90", "X",					&dhcp_universe, 90 },
-	{ "#91", "X",					&dhcp_universe, 91 },
-	{ "#92", "X",					&dhcp_universe, 92 },
-	{ "#93", "X",					&dhcp_universe, 93 },
-	{ "#94", "X",					&dhcp_universe, 94 },
-	{ "#95", "X",					&dhcp_universe, 95 },
-	{ "#96", "X",					&dhcp_universe, 96 },
-	{ "#97", "X",					&dhcp_universe, 97 },
+	{ "unknown-88", "X",				&dhcp_universe, 88 },
+	{ "unknown-89", "X",				&dhcp_universe, 89 },
+	{ "unknown-90", "X",				&dhcp_universe, 90 },
+	{ "unknown-91", "X",				&dhcp_universe, 91 },
+	{ "unknown-92", "X",				&dhcp_universe, 92 },
+	{ "unknown-93", "X",				&dhcp_universe, 93 },
+	{ "unknown-94", "X",				&dhcp_universe, 94 },
+	{ "unknown-95", "X",				&dhcp_universe, 95 },
+	{ "unknown-96", "X",				&dhcp_universe, 96 },
+	{ "unknown-97", "X",				&dhcp_universe, 97 },
 	{ "uap-servers", "t",				&dhcp_universe, 98 },
-	{ "#99", "X",					&dhcp_universe, 99 },
-	{ "#100", "X",					&dhcp_universe, 100 },
-	{ "#101", "X",					&dhcp_universe, 101 },
-	{ "#102", "X",					&dhcp_universe, 102 },
-	{ "#103", "X",					&dhcp_universe, 103 },
-	{ "#104", "X",					&dhcp_universe, 104 },
-	{ "#105", "X",					&dhcp_universe, 105 },
-	{ "#106", "X",					&dhcp_universe, 106 },
-	{ "#107", "X",					&dhcp_universe, 107 },
-	{ "#108", "X",					&dhcp_universe, 108 },
-	{ "#109", "X",					&dhcp_universe, 109 },
-	{ "#110", "X",					&dhcp_universe, 110 },
-	{ "#111", "X",					&dhcp_universe, 111 },
-	{ "#112", "X",					&dhcp_universe, 112 },
-	{ "#113", "X",					&dhcp_universe, 113 },
-	{ "#114", "X",					&dhcp_universe, 114 },
-	{ "#115", "X",					&dhcp_universe, 115 },
-	{ "#116", "X",					&dhcp_universe, 116 },
-	{ "#117", "X",					&dhcp_universe, 117 },
+	{ "unknown-99", "X",				&dhcp_universe, 99 },
+	{ "unknown-100", "X",				&dhcp_universe, 100 },
+	{ "unknown-101", "X",				&dhcp_universe, 101 },
+	{ "unknown-102", "X",				&dhcp_universe, 102 },
+	{ "unknown-103", "X",				&dhcp_universe, 103 },
+	{ "unknown-104", "X",				&dhcp_universe, 104 },
+	{ "unknown-105", "X",				&dhcp_universe, 105 },
+	{ "unknown-106", "X",				&dhcp_universe, 106 },
+	{ "unknown-107", "X",				&dhcp_universe, 107 },
+	{ "unknown-108", "X",				&dhcp_universe, 108 },
+	{ "unknown-109", "X",				&dhcp_universe, 109 },
+	{ "unknown-110", "X",					&dhcp_universe, 110 },
+	{ "unknown-111", "X",				&dhcp_universe, 111 },
+	{ "unknown-112", "X",				&dhcp_universe, 112 },
+	{ "unknown-113", "X",				&dhcp_universe, 113 },
+	{ "unknown-114", "X",				&dhcp_universe, 114 },
+	{ "unknown-115", "X",				&dhcp_universe, 115 },
+	{ "unknown-116", "X",				&dhcp_universe, 116 },
+	{ "unknown-117", "X",				&dhcp_universe, 117 },
 	{ "subnet-selection", "X",			&dhcp_universe, 118 },
-	{ "#119", "X",					&dhcp_universe, 119 },
-	{ "#120", "X",					&dhcp_universe, 120 },
-	{ "#121", "X",					&dhcp_universe, 121 },
-	{ "#122", "X",					&dhcp_universe, 122 },
-	{ "#123", "X",					&dhcp_universe, 123 },
-	{ "#124", "X",					&dhcp_universe, 124 },
-	{ "#125", "X",					&dhcp_universe, 125 },
-	{ "#126", "X",					&dhcp_universe, 126 },
-	{ "#127", "X",					&dhcp_universe, 127 },
-	{ "#128", "X",					&dhcp_universe, 128 },
-	{ "#129", "X",					&dhcp_universe, 129 },
-	{ "#130", "X",					&dhcp_universe, 130 },
-	{ "#131", "X",					&dhcp_universe, 131 },
-	{ "#132", "X",					&dhcp_universe, 132 },
-	{ "#133", "X",					&dhcp_universe, 133 },
-	{ "#134", "X",					&dhcp_universe, 134 },
-	{ "#135", "X",					&dhcp_universe, 135 },
-	{ "#136", "X",					&dhcp_universe, 136 },
-	{ "#137", "X",					&dhcp_universe, 137 },
-	{ "#138", "X",					&dhcp_universe, 138 },
-	{ "#139", "X",					&dhcp_universe, 139 },
-	{ "#140", "X",					&dhcp_universe, 140 },
-	{ "#141", "X",					&dhcp_universe, 141 },
-	{ "#142", "X",					&dhcp_universe, 142 },
-	{ "#143", "X",					&dhcp_universe, 143 },
-	{ "#144", "X",					&dhcp_universe, 144 },
-	{ "#145", "X",					&dhcp_universe, 145 },
-	{ "#146", "X",					&dhcp_universe, 146 },
-	{ "#147", "X",					&dhcp_universe, 147 },
-	{ "#148", "X",					&dhcp_universe, 148 },
-	{ "#149", "X",					&dhcp_universe, 149 },
-	{ "#150", "X",					&dhcp_universe, 150 },
-	{ "#151", "X",					&dhcp_universe, 151 },
-	{ "#152", "X",					&dhcp_universe, 152 },
-	{ "#153", "X",					&dhcp_universe, 153 },
-	{ "#154", "X",					&dhcp_universe, 154 },
-	{ "#155", "X",					&dhcp_universe, 155 },
-	{ "#156", "X",					&dhcp_universe, 156 },
-	{ "#157", "X",					&dhcp_universe, 157 },
-	{ "#158", "X",					&dhcp_universe, 158 },
-	{ "#159", "X",					&dhcp_universe, 159 },
-	{ "#160", "X",					&dhcp_universe, 160 },
-	{ "#161", "X",					&dhcp_universe, 161 },
-	{ "#162", "X",					&dhcp_universe, 162 },
-	{ "#163", "X",					&dhcp_universe, 163 },
-	{ "#164", "X",					&dhcp_universe, 164 },
-	{ "#165", "X",					&dhcp_universe, 165 },
-	{ "#166", "X",					&dhcp_universe, 166 },
-	{ "#167", "X",					&dhcp_universe, 167 },
-	{ "#168", "X",					&dhcp_universe, 168 },
-	{ "#169", "X",					&dhcp_universe, 169 },
-	{ "#170", "X",					&dhcp_universe, 170 },
-	{ "#171", "X",					&dhcp_universe, 171 },
-	{ "#172", "X",					&dhcp_universe, 172 },
-	{ "#173", "X",					&dhcp_universe, 173 },
-	{ "#174", "X",					&dhcp_universe, 174 },
-	{ "#175", "X",					&dhcp_universe, 175 },
-	{ "#176", "X",					&dhcp_universe, 176 },
-	{ "#177", "X",					&dhcp_universe, 177 },
-	{ "#178", "X",					&dhcp_universe, 178 },
-	{ "#179", "X",					&dhcp_universe, 179 },
-	{ "#180", "X",					&dhcp_universe, 180 },
-	{ "#181", "X",					&dhcp_universe, 181 },
-	{ "#182", "X",					&dhcp_universe, 182 },
-	{ "#183", "X",					&dhcp_universe, 183 },
-	{ "#184", "X",					&dhcp_universe, 184 },
-	{ "#185", "X",					&dhcp_universe, 185 },
-	{ "#186", "X",					&dhcp_universe, 186 },
-	{ "#187", "X",					&dhcp_universe, 187 },
-	{ "#188", "X",					&dhcp_universe, 188 },
-	{ "#189", "X",					&dhcp_universe, 189 },
-	{ "#190", "X",					&dhcp_universe, 190 },
-	{ "#191", "X",					&dhcp_universe, 191 },
-	{ "#192", "X",					&dhcp_universe, 192 },
-	{ "#193", "X",					&dhcp_universe, 193 },
-	{ "#194", "X",					&dhcp_universe, 194 },
-	{ "#195", "X",					&dhcp_universe, 195 },
-	{ "#196", "X",					&dhcp_universe, 196 },
-	{ "#197", "X",					&dhcp_universe, 197 },
-	{ "#198", "X",					&dhcp_universe, 198 },
-	{ "#199", "X",					&dhcp_universe, 199 },
-	{ "#200", "X",					&dhcp_universe, 200 },
-	{ "#201", "X",					&dhcp_universe, 201 },
-	{ "#202", "X",					&dhcp_universe, 202 },
-	{ "#203", "X",					&dhcp_universe, 203 },
-	{ "#204", "X",					&dhcp_universe, 204 },
-	{ "#205", "X",					&dhcp_universe, 205 },
-	{ "#206", "X",					&dhcp_universe, 206 },
-	{ "#207", "X",					&dhcp_universe, 207 },
-	{ "#208", "X",					&dhcp_universe, 208 },
-	{ "#209", "X",					&dhcp_universe, 209 },
+	{ "unknown-119", "X",				&dhcp_universe, 119 },
+	{ "unknown-120", "X",				&dhcp_universe, 120 },
+	{ "unknown-121", "X",				&dhcp_universe, 121 },
+	{ "unknown-122", "X",				&dhcp_universe, 122 },
+	{ "unknown-123", "X",				&dhcp_universe, 123 },
+	{ "unknown-124", "X",				&dhcp_universe, 124 },
+	{ "unknown-125", "X",				&dhcp_universe, 125 },
+	{ "unknown-126", "X",				&dhcp_universe, 126 },
+	{ "unknown-127", "X",				&dhcp_universe, 127 },
+	{ "unknown-128", "X",				&dhcp_universe, 128 },
+	{ "unknown-129", "X",				&dhcp_universe, 129 },
+	{ "unknown-130", "X",				&dhcp_universe, 130 },
+	{ "unknown-131", "X",				&dhcp_universe, 131 },
+	{ "unknown-132", "X",				&dhcp_universe, 132 },
+	{ "unknown-133", "X",				&dhcp_universe, 133 },
+	{ "unknown-134", "X",				&dhcp_universe, 134 },
+	{ "unknown-135", "X",				&dhcp_universe, 135 },
+	{ "unknown-136", "X",				&dhcp_universe, 136 },
+	{ "unknown-137", "X",				&dhcp_universe, 137 },
+	{ "unknown-138", "X",				&dhcp_universe, 138 },
+	{ "unknown-139", "X",				&dhcp_universe, 139 },
+	{ "unknown-140", "X",				&dhcp_universe, 140 },
+	{ "unknown-141", "X",				&dhcp_universe, 141 },
+	{ "unknown-142", "X",				&dhcp_universe, 142 },
+	{ "unknown-143", "X",				&dhcp_universe, 143 },
+	{ "unknown-144", "X",				&dhcp_universe, 144 },
+	{ "unknown-145", "X",				&dhcp_universe, 145 },
+	{ "unknown-146", "X",				&dhcp_universe, 146 },
+	{ "unknown-147", "X",				&dhcp_universe, 147 },
+	{ "unknown-148", "X",				&dhcp_universe, 148 },
+	{ "unknown-149", "X",				&dhcp_universe, 149 },
+	{ "unknown-150", "X",				&dhcp_universe, 150 },
+	{ "unknown-151", "X",				&dhcp_universe, 151 },
+	{ "unknown-152", "X",				&dhcp_universe, 152 },
+	{ "unknown-153", "X",				&dhcp_universe, 153 },
+	{ "unknown-154", "X",				&dhcp_universe, 154 },
+	{ "unknown-155", "X",				&dhcp_universe, 155 },
+	{ "unknown-156", "X",				&dhcp_universe, 156 },
+	{ "unknown-157", "X",				&dhcp_universe, 157 },
+	{ "unknown-158", "X",				&dhcp_universe, 158 },
+	{ "unknown-159", "X",				&dhcp_universe, 159 },
+	{ "unknown-160", "X",				&dhcp_universe, 160 },
+	{ "unknown-161", "X",				&dhcp_universe, 161 },
+	{ "unknown-162", "X",				&dhcp_universe, 162 },
+	{ "unknown-163", "X",				&dhcp_universe, 163 },
+	{ "unknown-164", "X",				&dhcp_universe, 164 },
+	{ "unknown-165", "X",				&dhcp_universe, 165 },
+	{ "unknown-166", "X",				&dhcp_universe, 166 },
+	{ "unknown-167", "X",				&dhcp_universe, 167 },
+	{ "unknown-168", "X",				&dhcp_universe, 168 },
+	{ "unknown-169", "X",				&dhcp_universe, 169 },
+	{ "unknown-170", "X",				&dhcp_universe, 170 },
+	{ "unknown-171", "X",				&dhcp_universe, 171 },
+	{ "unknown-172", "X",				&dhcp_universe, 172 },
+	{ "unknown-173", "X",				&dhcp_universe, 173 },
+	{ "unknown-174", "X",				&dhcp_universe, 174 },
+	{ "unknown-175", "X",				&dhcp_universe, 175 },
+	{ "unknown-176", "X",				&dhcp_universe, 176 },
+	{ "unknown-177", "X",				&dhcp_universe, 177 },
+	{ "unknown-178", "X",				&dhcp_universe, 178 },
+	{ "unknown-179", "X",				&dhcp_universe, 179 },
+	{ "unknown-180", "X",				&dhcp_universe, 180 },
+	{ "unknown-181", "X",				&dhcp_universe, 181 },
+	{ "unknown-182", "X",				&dhcp_universe, 182 },
+	{ "unknown-183", "X",				&dhcp_universe, 183 },
+	{ "unknown-184", "X",				&dhcp_universe, 184 },
+	{ "unknown-185", "X",				&dhcp_universe, 185 },
+	{ "unknown-186", "X",				&dhcp_universe, 186 },
+	{ "unknown-187", "X",				&dhcp_universe, 187 },
+	{ "unknown-188", "X",				&dhcp_universe, 188 },
+	{ "unknown-189", "X",				&dhcp_universe, 189 },
+	{ "unknown-190", "X",				&dhcp_universe, 190 },
+	{ "unknown-191", "X",				&dhcp_universe, 191 },
+	{ "unknown-192", "X",				&dhcp_universe, 192 },
+	{ "unknown-193", "X",				&dhcp_universe, 193 },
+	{ "unknown-194", "X",				&dhcp_universe, 194 },
+	{ "unknown-195", "X",				&dhcp_universe, 195 },
+	{ "unknown-196", "X",				&dhcp_universe, 196 },
+	{ "unknown-197", "X",				&dhcp_universe, 197 },
+	{ "unknown-198", "X",				&dhcp_universe, 198 },
+	{ "unknown-199", "X",				&dhcp_universe, 199 },
+	{ "unknown-200", "X",				&dhcp_universe, 200 },
+	{ "unknown-201", "X",				&dhcp_universe, 201 },
+	{ "unknown-202", "X",				&dhcp_universe, 202 },
+	{ "unknown-203", "X",				&dhcp_universe, 203 },
+	{ "unknown-204", "X",				&dhcp_universe, 204 },
+	{ "unknown-205", "X",				&dhcp_universe, 205 },
+	{ "unknown-206", "X",				&dhcp_universe, 206 },
+	{ "unknown-207", "X",				&dhcp_universe, 207 },
+	{ "unknown-208", "X",				&dhcp_universe, 208 },
+	{ "unknown-209", "X",				&dhcp_universe, 209 },
 	{ "authenticate", "X",				&dhcp_universe, 210 },
-	{ "#211", "X",					&dhcp_universe, 211 },
-	{ "#212", "X",					&dhcp_universe, 212 },
-	{ "#213", "X",					&dhcp_universe, 213 },
-	{ "#214", "X",					&dhcp_universe, 214 },
-	{ "#215", "X",					&dhcp_universe, 215 },
-	{ "#216", "X",					&dhcp_universe, 216 },
-	{ "#217", "X",					&dhcp_universe, 217 },
-	{ "#218", "X",					&dhcp_universe, 218 },
-	{ "#219", "X",					&dhcp_universe, 219 },
-	{ "#220", "X",					&dhcp_universe, 220 },
-	{ "#221", "X",					&dhcp_universe, 221 },
-	{ "#222", "X",					&dhcp_universe, 222 },
-	{ "#223", "X",					&dhcp_universe, 223 },
-	{ "#224", "X",					&dhcp_universe, 224 },
-	{ "#225", "X",					&dhcp_universe, 225 },
-	{ "#226", "X",					&dhcp_universe, 226 },
-	{ "#227", "X",					&dhcp_universe, 227 },
-	{ "#228", "X",					&dhcp_universe, 228 },
-	{ "#229", "X",					&dhcp_universe, 229 },
-	{ "#230", "X",					&dhcp_universe, 230 },
-	{ "#231", "X",					&dhcp_universe, 231 },
-	{ "#232", "X",					&dhcp_universe, 232 },
-	{ "#233", "X",					&dhcp_universe, 233 },
-	{ "#234", "X",					&dhcp_universe, 234 },
-	{ "#235", "X",					&dhcp_universe, 235 },
-	{ "#236", "X",					&dhcp_universe, 236 },
-	{ "#237", "X",					&dhcp_universe, 237 },
-	{ "#238", "X",					&dhcp_universe, 238 },
-	{ "#239", "X",					&dhcp_universe, 239 },
-	{ "#240", "X",					&dhcp_universe, 240 },
-	{ "#241", "X",					&dhcp_universe, 241 },
-	{ "#242", "X",					&dhcp_universe, 242 },
-	{ "#243", "X",					&dhcp_universe, 243 },
-	{ "#244", "X",					&dhcp_universe, 244 },
-	{ "#245", "X",					&dhcp_universe, 245 },
-	{ "#246", "X",					&dhcp_universe, 246 },
-	{ "#247", "X",					&dhcp_universe, 247 },
-	{ "#248", "X",					&dhcp_universe, 248 },
-	{ "#249", "X",					&dhcp_universe, 249 },
-	{ "#250", "X",					&dhcp_universe, 250 },
-	{ "#251", "X",					&dhcp_universe, 251 },
-	{ "#252", "X",					&dhcp_universe, 252 },
-	{ "#253", "X",					&dhcp_universe, 253 },
-	{ "#254", "X",					&dhcp_universe, 254 },
+	{ "unknown-211", "X",				&dhcp_universe, 211 },
+	{ "unknown-212", "X",				&dhcp_universe, 212 },
+	{ "unknown-213", "X",				&dhcp_universe, 213 },
+	{ "unknown-214", "X",				&dhcp_universe, 214 },
+	{ "unknown-215", "X",				&dhcp_universe, 215 },
+	{ "unknown-216", "X",				&dhcp_universe, 216 },
+	{ "unknown-217", "X",				&dhcp_universe, 217 },
+	{ "unknown-218", "X",				&dhcp_universe, 218 },
+	{ "unknown-219", "X",				&dhcp_universe, 219 },
+	{ "unknown-220", "X",				&dhcp_universe, 220 },
+	{ "unknown-221", "X",				&dhcp_universe, 221 },
+	{ "unknown-222", "X",				&dhcp_universe, 222 },
+	{ "unknown-223", "X",				&dhcp_universe, 223 },
+	{ "unknown-224", "X",				&dhcp_universe, 224 },
+	{ "unknown-225", "X",				&dhcp_universe, 225 },
+	{ "unknown-226", "X",				&dhcp_universe, 226 },
+	{ "unknown-227", "X",				&dhcp_universe, 227 },
+	{ "unknown-228", "X",				&dhcp_universe, 228 },
+	{ "unknown-229", "X",				&dhcp_universe, 229 },
+	{ "unknown-230", "X",				&dhcp_universe, 230 },
+	{ "unknown-231", "X",				&dhcp_universe, 231 },
+	{ "unknown-232", "X",				&dhcp_universe, 232 },
+	{ "unknown-233", "X",				&dhcp_universe, 233 },
+	{ "unknown-234", "X",				&dhcp_universe, 234 },
+	{ "unknown-235", "X",				&dhcp_universe, 235 },
+	{ "unknown-236", "X",				&dhcp_universe, 236 },
+	{ "unknown-237", "X",				&dhcp_universe, 237 },
+	{ "unknown-238", "X",				&dhcp_universe, 238 },
+	{ "unknown-239", "X",				&dhcp_universe, 239 },
+	{ "unknown-240", "X",				&dhcp_universe, 240 },
+	{ "unknown-241", "X",				&dhcp_universe, 241 },
+	{ "unknown-242", "X",				&dhcp_universe, 242 },
+	{ "unknown-243", "X",				&dhcp_universe, 243 },
+	{ "unknown-244", "X",				&dhcp_universe, 244 },
+	{ "unknown-245", "X",				&dhcp_universe, 245 },
+	{ "unknown-246", "X",				&dhcp_universe, 246 },
+	{ "unknown-247", "X",				&dhcp_universe, 247 },
+	{ "unknown-248", "X",				&dhcp_universe, 248 },
+	{ "unknown-249", "X",				&dhcp_universe, 249 },
+	{ "unknown-250", "X",				&dhcp_universe, 250 },
+	{ "unknown-251", "X",				&dhcp_universe, 251 },
+	{ "unknown-252", "X",				&dhcp_universe, 252 },
+	{ "unknown-253", "X",				&dhcp_universe, 253 },
+	{ "unknown-254", "X",				&dhcp_universe, 254 },
 	{ "option-end", "e",				&dhcp_universe, 255 },
 };
 
@@ -371,250 +372,250 @@
 	{ "autoretry-secs", "B",			&nwip_universe, 9 },
 	{ "nwip-1-1", "f",				&nwip_universe, 10 },
 	{ "primary-dss", "I",				&nwip_universe, 11 },
-	{ "#12", "X",				&nwip_universe, 12 },
-	{ "#13", "X",				&nwip_universe, 13 },
-	{ "#14", "X",				&nwip_universe, 14 },
-	{ "#15", "X",				&nwip_universe, 15 },
-	{ "#16", "X",				&nwip_universe, 16 },
-	{ "#17", "X",				&nwip_universe, 17 },
-	{ "#18", "X",				&nwip_universe, 18 },
-	{ "#19", "X",				&nwip_universe, 19 },
-	{ "#20", "X",				&nwip_universe, 20 },
-	{ "#21", "X",				&nwip_universe, 21 },
-	{ "#22", "X",				&nwip_universe, 22 },
-	{ "#23", "X",				&nwip_universe, 23 },
-	{ "#24", "X",				&nwip_universe, 24 },
-	{ "#25", "X",				&nwip_universe, 25 },
-	{ "#26", "X",				&nwip_universe, 26 },
-	{ "#27", "X",				&nwip_universe, 27 },
-	{ "#28", "X",				&nwip_universe, 28 },
-	{ "#29", "X",				&nwip_universe, 29 },
-	{ "#30", "X",				&nwip_universe, 30 },
-	{ "#31", "X",				&nwip_universe, 31 },
-	{ "#32", "X",				&nwip_universe, 32 },
-	{ "#33", "X",				&nwip_universe, 33 },
-	{ "#34", "X",				&nwip_universe, 34 },
-	{ "#35", "X",				&nwip_universe, 35 },
-	{ "#36", "X",				&nwip_universe, 36 },
-	{ "#37", "X",				&nwip_universe, 37 },
-	{ "#38", "X",				&nwip_universe, 38 },
-	{ "#39", "X",				&nwip_universe, 39 },
-	{ "#40", "X",				&nwip_universe, 40 },
-	{ "#41", "X",				&nwip_universe, 41 },
-	{ "#42", "X",				&nwip_universe, 42 },
-	{ "#43", "X",				&nwip_universe, 43 },
-	{ "#44", "X",				&nwip_universe, 44 },
-	{ "#45", "X",				&nwip_universe, 45 },
-	{ "#46", "X",				&nwip_universe, 46 },
-	{ "#47", "X",				&nwip_universe, 47 },
-	{ "#48", "X",				&nwip_universe, 48 },
-	{ "#49", "X",				&nwip_universe, 49 },
-	{ "#50", "X",				&nwip_universe, 50 },
-	{ "#51", "X",				&nwip_universe, 51 },
-	{ "#52", "X",				&nwip_universe, 52 },
-	{ "#53", "X",				&nwip_universe, 53 },
-	{ "#54", "X",				&nwip_universe, 54 },
-	{ "#55", "X",				&nwip_universe, 55 },
-	{ "#56", "X",				&nwip_universe, 56 },
-	{ "#57", "X",				&nwip_universe, 57 },
-	{ "#58", "X",				&nwip_universe, 58 },
-	{ "#59", "X",				&nwip_universe, 59 },
-	{ "#60", "X",				&nwip_universe, 60 },
-	{ "#61", "X",				&nwip_universe, 61 },
-	{ "#62", "X",				&nwip_universe, 62 },
-	{ "#63", "X",				&nwip_universe, 63 },
-	{ "#64", "X",				&nwip_universe, 64 },
-	{ "#65", "X",				&nwip_universe, 65 },
-	{ "#66", "X",				&nwip_universe, 66 },
-	{ "#67", "X",				&nwip_universe, 67 },
-	{ "#68", "X",				&nwip_universe, 68 },
-	{ "#69", "X",				&nwip_universe, 69 },
-	{ "#70", "X",				&nwip_universe, 70 },
-	{ "#71", "X",				&nwip_universe, 71 },
-	{ "#72", "X",				&nwip_universe, 72 },
-	{ "#73", "X",				&nwip_universe, 73 },
-	{ "#74", "X",				&nwip_universe, 74 },
-	{ "#75", "X",				&nwip_universe, 75 },
-	{ "#76", "X",				&nwip_universe, 76 },
-	{ "#77", "X",				&nwip_universe, 77 },
-	{ "#78", "X",				&nwip_universe, 78 },
-	{ "#79", "X",				&nwip_universe, 79 },
-	{ "#80", "X",				&nwip_universe, 80 },
-	{ "#81", "X",				&nwip_universe, 81 },
-	{ "#82", "X",				&nwip_universe, 82 },
-	{ "#83", "X",				&nwip_universe, 83 },
-	{ "#84", "X",				&nwip_universe, 84 },
-	{ "#85", "X",				&nwip_universe, 85 },
-	{ "#86", "X",				&nwip_universe, 86 },
-	{ "#87", "X",				&nwip_universe, 87 },
-	{ "#88", "X",				&nwip_universe, 88 },
-	{ "#89", "X",				&nwip_universe, 89 },
-	{ "#90", "X",				&nwip_universe, 90 },
-	{ "#91", "X",				&nwip_universe, 91 },
-	{ "#92", "X",				&nwip_universe, 92 },
-	{ "#93", "X",				&nwip_universe, 93 },
-	{ "#94", "X",				&nwip_universe, 94 },
-	{ "#95", "X",				&nwip_universe, 95 },
-	{ "#96", "X",				&nwip_universe, 96 },
-	{ "#97", "X",				&nwip_universe, 97 },
-	{ "#98", "X",				&nwip_universe, 98 },
-	{ "#99", "X",				&nwip_universe, 99 },
-	{ "#100", "X",				&nwip_universe, 100 },
-	{ "#101", "X",				&nwip_universe, 101 },
-	{ "#102", "X",				&nwip_universe, 102 },
-	{ "#103", "X",				&nwip_universe, 103 },
-	{ "#104", "X",				&nwip_universe, 104 },
-	{ "#105", "X",				&nwip_universe, 105 },
-	{ "#106", "X",				&nwip_universe, 106 },
-	{ "#107", "X",				&nwip_universe, 107 },
-	{ "#108", "X",				&nwip_universe, 108 },
-	{ "#109", "X",				&nwip_universe, 109 },
-	{ "#110", "X",				&nwip_universe, 110 },
-	{ "#111", "X",				&nwip_universe, 111 },
-	{ "#112", "X",				&nwip_universe, 112 },
-	{ "#113", "X",				&nwip_universe, 113 },
-	{ "#114", "X",				&nwip_universe, 114 },
-	{ "#115", "X",				&nwip_universe, 115 },
-	{ "#116", "X",				&nwip_universe, 116 },
-	{ "#117", "X",				&nwip_universe, 117 },
-	{ "#118", "X",				&nwip_universe, 118 },
-	{ "#119", "X",				&nwip_universe, 119 },
-	{ "#120", "X",				&nwip_universe, 120 },
-	{ "#121", "X",				&nwip_universe, 121 },
-	{ "#122", "X",				&nwip_universe, 122 },
-	{ "#123", "X",				&nwip_universe, 123 },
-	{ "#124", "X",				&nwip_universe, 124 },
-	{ "#125", "X",				&nwip_universe, 125 },
-	{ "#126", "X",				&nwip_universe, 126 },
-	{ "#127", "X",				&nwip_universe, 127 },
-	{ "#128", "X",				&nwip_universe, 128 },
-	{ "#129", "X",				&nwip_universe, 129 },
-	{ "#130", "X",				&nwip_universe, 130 },
-	{ "#131", "X",				&nwip_universe, 131 },
-	{ "#132", "X",				&nwip_universe, 132 },
-	{ "#133", "X",				&nwip_universe, 133 },
-	{ "#134", "X",				&nwip_universe, 134 },
-	{ "#135", "X",				&nwip_universe, 135 },
-	{ "#136", "X",				&nwip_universe, 136 },
-	{ "#137", "X",				&nwip_universe, 137 },
-	{ "#138", "X",				&nwip_universe, 138 },
-	{ "#139", "X",				&nwip_universe, 139 },
-	{ "#140", "X",				&nwip_universe, 140 },
-	{ "#141", "X",				&nwip_universe, 141 },
-	{ "#142", "X",				&nwip_universe, 142 },
-	{ "#143", "X",				&nwip_universe, 143 },
-	{ "#144", "X",				&nwip_universe, 144 },
-	{ "#145", "X",				&nwip_universe, 145 },
-	{ "#146", "X",				&nwip_universe, 146 },
-	{ "#147", "X",				&nwip_universe, 147 },
-	{ "#148", "X",				&nwip_universe, 148 },
-	{ "#149", "X",				&nwip_universe, 149 },
-	{ "#150", "X",				&nwip_universe, 150 },
-	{ "#151", "X",				&nwip_universe, 151 },
-	{ "#152", "X",				&nwip_universe, 152 },
-	{ "#153", "X",				&nwip_universe, 153 },
-	{ "#154", "X",				&nwip_universe, 154 },
-	{ "#155", "X",				&nwip_universe, 155 },
-	{ "#156", "X",				&nwip_universe, 156 },
-	{ "#157", "X",				&nwip_universe, 157 },
-	{ "#158", "X",				&nwip_universe, 158 },
-	{ "#159", "X",				&nwip_universe, 159 },
-	{ "#160", "X",				&nwip_universe, 160 },
-	{ "#161", "X",				&nwip_universe, 161 },
-	{ "#162", "X",				&nwip_universe, 162 },
-	{ "#163", "X",				&nwip_universe, 163 },
-	{ "#164", "X",				&nwip_universe, 164 },
-	{ "#165", "X",				&nwip_universe, 165 },
-	{ "#166", "X",				&nwip_universe, 166 },
-	{ "#167", "X",				&nwip_universe, 167 },
-	{ "#168", "X",				&nwip_universe, 168 },
-	{ "#169", "X",				&nwip_universe, 169 },
-	{ "#170", "X",				&nwip_universe, 170 },
-	{ "#171", "X",				&nwip_universe, 171 },
-	{ "#172", "X",				&nwip_universe, 172 },
-	{ "#173", "X",				&nwip_universe, 173 },
-	{ "#174", "X",				&nwip_universe, 174 },
-	{ "#175", "X",				&nwip_universe, 175 },
-	{ "#176", "X",				&nwip_universe, 176 },
-	{ "#177", "X",				&nwip_universe, 177 },
-	{ "#178", "X",				&nwip_universe, 178 },
-	{ "#179", "X",				&nwip_universe, 179 },
-	{ "#180", "X",				&nwip_universe, 180 },
-	{ "#181", "X",				&nwip_universe, 181 },
-	{ "#182", "X",				&nwip_universe, 182 },
-	{ "#183", "X",				&nwip_universe, 183 },
-	{ "#184", "X",				&nwip_universe, 184 },
-	{ "#185", "X",				&nwip_universe, 185 },
-	{ "#186", "X",				&nwip_universe, 186 },
-	{ "#187", "X",				&nwip_universe, 187 },
-	{ "#188", "X",				&nwip_universe, 188 },
-	{ "#189", "X",				&nwip_universe, 189 },
-	{ "#190", "X",				&nwip_universe, 190 },
-	{ "#191", "X",				&nwip_universe, 191 },
-	{ "#192", "X",				&nwip_universe, 192 },
-	{ "#193", "X",				&nwip_universe, 193 },
-	{ "#194", "X",				&nwip_universe, 194 },
-	{ "#195", "X",				&nwip_universe, 195 },
-	{ "#196", "X",				&nwip_universe, 196 },
-	{ "#197", "X",				&nwip_universe, 197 },
-	{ "#198", "X",				&nwip_universe, 198 },
-	{ "#199", "X",				&nwip_universe, 199 },
-	{ "#200", "X",				&nwip_universe, 200 },
-	{ "#201", "X",				&nwip_universe, 201 },
-	{ "#202", "X",				&nwip_universe, 202 },
-	{ "#203", "X",				&nwip_universe, 203 },
-	{ "#204", "X",				&nwip_universe, 204 },
-	{ "#205", "X",				&nwip_universe, 205 },
-	{ "#206", "X",				&nwip_universe, 206 },
-	{ "#207", "X",				&nwip_universe, 207 },
-	{ "#208", "X",				&nwip_universe, 208 },
-	{ "#209", "X",				&nwip_universe, 209 },
-	{ "#210", "X",				&nwip_universe, 210 },
-	{ "#211", "X",				&nwip_universe, 211 },
-	{ "#212", "X",				&nwip_universe, 212 },
-	{ "#213", "X",				&nwip_universe, 213 },
-	{ "#214", "X",				&nwip_universe, 214 },
-	{ "#215", "X",				&nwip_universe, 215 },
-	{ "#216", "X",				&nwip_universe, 216 },
-	{ "#217", "X",				&nwip_universe, 217 },
-	{ "#218", "X",				&nwip_universe, 218 },
-	{ "#219", "X",				&nwip_universe, 219 },
-	{ "#220", "X",				&nwip_universe, 220 },
-	{ "#221", "X",				&nwip_universe, 221 },
-	{ "#222", "X",				&nwip_universe, 222 },
-	{ "#223", "X",				&nwip_universe, 223 },
-	{ "#224", "X",				&nwip_universe, 224 },
-	{ "#225", "X",				&nwip_universe, 225 },
-	{ "#226", "X",				&nwip_universe, 226 },
-	{ "#227", "X",				&nwip_universe, 227 },
-	{ "#228", "X",				&nwip_universe, 228 },
-	{ "#229", "X",				&nwip_universe, 229 },
-	{ "#230", "X",				&nwip_universe, 230 },
-	{ "#231", "X",				&nwip_universe, 231 },
-	{ "#232", "X",				&nwip_universe, 232 },
-	{ "#233", "X",				&nwip_universe, 233 },
-	{ "#234", "X",				&nwip_universe, 234 },
-	{ "#235", "X",				&nwip_universe, 235 },
-	{ "#236", "X",				&nwip_universe, 236 },
-	{ "#237", "X",				&nwip_universe, 237 },
-	{ "#238", "X",				&nwip_universe, 238 },
-	{ "#239", "X",				&nwip_universe, 239 },
-	{ "#240", "X",				&nwip_universe, 240 },
-	{ "#241", "X",				&nwip_universe, 241 },
-	{ "#242", "X",				&nwip_universe, 242 },
-	{ "#243", "X",				&nwip_universe, 243 },
-	{ "#244", "X",				&nwip_universe, 244 },
-	{ "#245", "X",				&nwip_universe, 245 },
-	{ "#246", "X",				&nwip_universe, 246 },
-	{ "#247", "X",				&nwip_universe, 247 },
-	{ "#248", "X",				&nwip_universe, 248 },
-	{ "#249", "X",				&nwip_universe, 249 },
-	{ "#250", "X",				&nwip_universe, 250 },
-	{ "#251", "X",				&nwip_universe, 251 },
-	{ "#252", "X",				&nwip_universe, 252 },
-	{ "#253", "X",				&nwip_universe, 253 },
-	{ "#254", "X",				&nwip_universe, 254 },
-	{ "#end", "e",				&nwip_universe, 255 },
+	{ "unknown-12", "X",				&nwip_universe, 12 },
+	{ "unknown-13", "X",				&nwip_universe, 13 },
+	{ "unknown-14", "X",				&nwip_universe, 14 },
+	{ "unknown-15", "X",				&nwip_universe, 15 },
+	{ "unknown-16", "X",				&nwip_universe, 16 },
+	{ "unknown-17", "X",				&nwip_universe, 17 },
+	{ "unknown-18", "X",				&nwip_universe, 18 },
+	{ "unknown-19", "X",				&nwip_universe, 19 },
+	{ "unknown-20", "X",				&nwip_universe, 20 },
+	{ "unknown-21", "X",				&nwip_universe, 21 },
+	{ "unknown-22", "X",				&nwip_universe, 22 },
+	{ "unknown-23", "X",				&nwip_universe, 23 },
+	{ "unknown-24", "X",				&nwip_universe, 24 },
+	{ "unknown-25", "X",				&nwip_universe, 25 },
+	{ "unknown-26", "X",				&nwip_universe, 26 },
+	{ "unknown-27", "X",				&nwip_universe, 27 },
+	{ "unknown-28", "X",				&nwip_universe, 28 },
+	{ "unknown-29", "X",				&nwip_universe, 29 },
+	{ "unknown-30", "X",				&nwip_universe, 30 },
+	{ "unknown-31", "X",				&nwip_universe, 31 },
+	{ "unknown-32", "X",				&nwip_universe, 32 },
+	{ "unknown-33", "X",				&nwip_universe, 33 },
+	{ "unknown-34", "X",				&nwip_universe, 34 },
+	{ "unknown-35", "X",				&nwip_universe, 35 },
+	{ "unknown-36", "X",				&nwip_universe, 36 },
+	{ "unknown-37", "X",				&nwip_universe, 37 },
+	{ "unknown-38", "X",				&nwip_universe, 38 },
+	{ "unknown-39", "X",				&nwip_universe, 39 },
+	{ "unknown-40", "X",				&nwip_universe, 40 },
+	{ "unknown-41", "X",				&nwip_universe, 41 },
+	{ "unknown-42", "X",				&nwip_universe, 42 },
+	{ "unknown-43", "X",				&nwip_universe, 43 },
+	{ "unknown-44", "X",				&nwip_universe, 44 },
+	{ "unknown-45", "X",				&nwip_universe, 45 },
+	{ "unknown-46", "X",				&nwip_universe, 46 },
+	{ "unknown-47", "X",				&nwip_universe, 47 },
+	{ "unknown-48", "X",				&nwip_universe, 48 },
+	{ "unknown-49", "X",				&nwip_universe, 49 },
+	{ "unknown-50", "X",				&nwip_universe, 50 },
+	{ "unknown-51", "X",				&nwip_universe, 51 },
+	{ "unknown-52", "X",				&nwip_universe, 52 },
+	{ "unknown-53", "X",				&nwip_universe, 53 },
+	{ "unknown-54", "X",				&nwip_universe, 54 },
+	{ "unknown-55", "X",				&nwip_universe, 55 },
+	{ "unknown-56", "X",				&nwip_universe, 56 },
+	{ "unknown-57", "X",				&nwip_universe, 57 },
+	{ "unknown-58", "X",				&nwip_universe, 58 },
+	{ "unknown-59", "X",				&nwip_universe, 59 },
+	{ "unknown-60", "X",				&nwip_universe, 60 },
+	{ "unknown-61", "X",				&nwip_universe, 61 },
+	{ "unknown-62", "X",				&nwip_universe, 62 },
+	{ "unknown-63", "X",				&nwip_universe, 63 },
+	{ "unknown-64", "X",				&nwip_universe, 64 },
+	{ "unknown-65", "X",				&nwip_universe, 65 },
+	{ "unknown-66", "X",				&nwip_universe, 66 },
+	{ "unknown-67", "X",				&nwip_universe, 67 },
+	{ "unknown-68", "X",				&nwip_universe, 68 },
+	{ "unknown-69", "X",				&nwip_universe, 69 },
+	{ "unknown-70", "X",				&nwip_universe, 70 },
+	{ "unknown-71", "X",				&nwip_universe, 71 },
+	{ "unknown-72", "X",				&nwip_universe, 72 },
+	{ "unknown-73", "X",				&nwip_universe, 73 },
+	{ "unknown-74", "X",				&nwip_universe, 74 },
+	{ "unknown-75", "X",				&nwip_universe, 75 },
+	{ "unknown-76", "X",				&nwip_universe, 76 },
+	{ "unknown-77", "X",				&nwip_universe, 77 },
+	{ "unknown-78", "X",				&nwip_universe, 78 },
+	{ "unknown-79", "X",				&nwip_universe, 79 },
+	{ "unknown-80", "X",				&nwip_universe, 80 },
+	{ "unknown-81", "X",				&nwip_universe, 81 },
+	{ "unknown-82", "X",				&nwip_universe, 82 },
+	{ "unknown-83", "X",				&nwip_universe, 83 },
+	{ "unknown-84", "X",				&nwip_universe, 84 },
+	{ "unknown-85", "X",				&nwip_universe, 85 },
+	{ "unknown-86", "X",				&nwip_universe, 86 },
+	{ "unknown-87", "X",				&nwip_universe, 87 },
+	{ "unknown-88", "X",				&nwip_universe, 88 },
+	{ "unknown-89", "X",				&nwip_universe, 89 },
+	{ "unknown-90", "X",				&nwip_universe, 90 },
+	{ "unknown-91", "X",				&nwip_universe, 91 },
+	{ "unknown-92", "X",				&nwip_universe, 92 },
+	{ "unknown-93", "X",				&nwip_universe, 93 },
+	{ "unknown-94", "X",				&nwip_universe, 94 },
+	{ "unknown-95", "X",				&nwip_universe, 95 },
+	{ "unknown-96", "X",				&nwip_universe, 96 },
+	{ "unknown-97", "X",				&nwip_universe, 97 },
+	{ "unknown-98", "X",				&nwip_universe, 98 },
+	{ "unknown-99", "X",				&nwip_universe, 99 },
+	{ "unknown-100", "X",				&nwip_universe, 100 },
+	{ "unknown-101", "X",				&nwip_universe, 101 },
+	{ "unknown-102", "X",				&nwip_universe, 102 },
+	{ "unknown-103", "X",				&nwip_universe, 103 },
+	{ "unknown-104", "X",				&nwip_universe, 104 },
+	{ "unknown-105", "X",				&nwip_universe, 105 },
+	{ "unknown-106", "X",				&nwip_universe, 106 },
+	{ "unknown-107", "X",				&nwip_universe, 107 },
+	{ "unknown-108", "X",				&nwip_universe, 108 },
+	{ "unknown-109", "X",				&nwip_universe, 109 },
+	{ "unknown-110", "X",				&nwip_universe, 110 },
+	{ "unknown-111", "X",				&nwip_universe, 111 },
+	{ "unknown-112", "X",				&nwip_universe, 112 },
+	{ "unknown-113", "X",				&nwip_universe, 113 },
+	{ "unknown-114", "X",				&nwip_universe, 114 },
+	{ "unknown-115", "X",				&nwip_universe, 115 },
+	{ "unknown-116", "X",				&nwip_universe, 116 },
+	{ "unknown-117", "X",				&nwip_universe, 117 },
+	{ "unknown-118", "X",				&nwip_universe, 118 },
+	{ "unknown-119", "X",				&nwip_universe, 119 },
+	{ "unknown-120", "X",				&nwip_universe, 120 },
+	{ "unknown-121", "X",				&nwip_universe, 121 },
+	{ "unknown-122", "X",				&nwip_universe, 122 },
+	{ "unknown-123", "X",				&nwip_universe, 123 },
+	{ "unknown-124", "X",				&nwip_universe, 124 },
+	{ "unknown-125", "X",				&nwip_universe, 125 },
+	{ "unknown-126", "X",				&nwip_universe, 126 },
+	{ "unknown-127", "X",				&nwip_universe, 127 },
+	{ "unknown-128", "X",				&nwip_universe, 128 },
+	{ "unknown-129", "X",				&nwip_universe, 129 },
+	{ "unknown-130", "X",				&nwip_universe, 130 },
+	{ "unknown-131", "X",				&nwip_universe, 131 },
+	{ "unknown-132", "X",				&nwip_universe, 132 },
+	{ "unknown-133", "X",				&nwip_universe, 133 },
+	{ "unknown-134", "X",				&nwip_universe, 134 },
+	{ "unknown-135", "X",				&nwip_universe, 135 },
+	{ "unknown-136", "X",				&nwip_universe, 136 },
+	{ "unknown-137", "X",				&nwip_universe, 137 },
+	{ "unknown-138", "X",				&nwip_universe, 138 },
+	{ "unknown-139", "X",				&nwip_universe, 139 },
+	{ "unknown-140", "X",				&nwip_universe, 140 },
+	{ "unknown-141", "X",				&nwip_universe, 141 },
+	{ "unknown-142", "X",				&nwip_universe, 142 },
+	{ "unknown-143", "X",				&nwip_universe, 143 },
+	{ "unknown-144", "X",				&nwip_universe, 144 },
+	{ "unknown-145", "X",				&nwip_universe, 145 },
+	{ "unknown-146", "X",				&nwip_universe, 146 },
+	{ "unknown-147", "X",				&nwip_universe, 147 },
+	{ "unknown-148", "X",				&nwip_universe, 148 },
+	{ "unknown-149", "X",				&nwip_universe, 149 },
+	{ "unknown-150", "X",				&nwip_universe, 150 },
+	{ "unknown-151", "X",				&nwip_universe, 151 },
+	{ "unknown-152", "X",				&nwip_universe, 152 },
+	{ "unknown-153", "X",				&nwip_universe, 153 },
+	{ "unknown-154", "X",				&nwip_universe, 154 },
+	{ "unknown-155", "X",				&nwip_universe, 155 },
+	{ "unknown-156", "X",				&nwip_universe, 156 },
+	{ "unknown-157", "X",				&nwip_universe, 157 },
+	{ "unknown-158", "X",				&nwip_universe, 158 },
+	{ "unknown-159", "X",				&nwip_universe, 159 },
+	{ "unknown-160", "X",				&nwip_universe, 160 },
+	{ "unknown-161", "X",				&nwip_universe, 161 },
+	{ "unknown-162", "X",				&nwip_universe, 162 },
+	{ "unknown-163", "X",				&nwip_universe, 163 },
+	{ "unknown-164", "X",				&nwip_universe, 164 },
+	{ "unknown-165", "X",				&nwip_universe, 165 },
+	{ "unknown-166", "X",				&nwip_universe, 166 },
+	{ "unknown-167", "X",				&nwip_universe, 167 },
+	{ "unknown-168", "X",				&nwip_universe, 168 },
+	{ "unknown-169", "X",				&nwip_universe, 169 },
+	{ "unknown-170", "X",				&nwip_universe, 170 },
+	{ "unknown-171", "X",				&nwip_universe, 171 },
+	{ "unknown-172", "X",				&nwip_universe, 172 },
+	{ "unknown-173", "X",				&nwip_universe, 173 },
+	{ "unknown-174", "X",				&nwip_universe, 174 },
+	{ "unknown-175", "X",				&nwip_universe, 175 },
+	{ "unknown-176", "X",				&nwip_universe, 176 },
+	{ "unknown-177", "X",				&nwip_universe, 177 },
+	{ "unknown-178", "X",				&nwip_universe, 178 },
+	{ "unknown-179", "X",				&nwip_universe, 179 },
+	{ "unknown-180", "X",				&nwip_universe, 180 },
+	{ "unknown-181", "X",				&nwip_universe, 181 },
+	{ "unknown-182", "X",				&nwip_universe, 182 },
+	{ "unknown-183", "X",				&nwip_universe, 183 },
+	{ "unknown-184", "X",				&nwip_universe, 184 },
+	{ "unknown-185", "X",				&nwip_universe, 185 },
+	{ "unknown-186", "X",				&nwip_universe, 186 },
+	{ "unknown-187", "X",				&nwip_universe, 187 },
+	{ "unknown-188", "X",				&nwip_universe, 188 },
+	{ "unknown-189", "X",				&nwip_universe, 189 },
+	{ "unknown-190", "X",				&nwip_universe, 190 },
+	{ "unknown-191", "X",				&nwip_universe, 191 },
+	{ "unknown-192", "X",				&nwip_universe, 192 },
+	{ "unknown-193", "X",				&nwip_universe, 193 },
+	{ "unknown-194", "X",				&nwip_universe, 194 },
+	{ "unknown-195", "X",				&nwip_universe, 195 },
+	{ "unknown-196", "X",				&nwip_universe, 196 },
+	{ "unknown-197", "X",				&nwip_universe, 197 },
+	{ "unknown-198", "X",				&nwip_universe, 198 },
+	{ "unknown-199", "X",				&nwip_universe, 199 },
+	{ "unknown-200", "X",				&nwip_universe, 200 },
+	{ "unknown-201", "X",				&nwip_universe, 201 },
+	{ "unknown-202", "X",				&nwip_universe, 202 },
+	{ "unknown-203", "X",				&nwip_universe, 203 },
+	{ "unknown-204", "X",				&nwip_universe, 204 },
+	{ "unknown-205", "X",				&nwip_universe, 205 },
+	{ "unknown-206", "X",				&nwip_universe, 206 },
+	{ "unknown-207", "X",				&nwip_universe, 207 },
+	{ "unknown-208", "X",				&nwip_universe, 208 },
+	{ "unknown-209", "X",				&nwip_universe, 209 },
+	{ "unknown-210", "X",				&nwip_universe, 210 },
+	{ "unknown-211", "X",				&nwip_universe, 211 },
+	{ "unknown-212", "X",				&nwip_universe, 212 },
+	{ "unknown-213", "X",				&nwip_universe, 213 },
+	{ "unknown-214", "X",				&nwip_universe, 214 },
+	{ "unknown-215", "X",				&nwip_universe, 215 },
+	{ "unknown-216", "X",				&nwip_universe, 216 },
+	{ "unknown-217", "X",				&nwip_universe, 217 },
+	{ "unknown-218", "X",				&nwip_universe, 218 },
+	{ "unknown-219", "X",				&nwip_universe, 219 },
+	{ "unknown-220", "X",				&nwip_universe, 220 },
+	{ "unknown-221", "X",				&nwip_universe, 221 },
+	{ "unknown-222", "X",				&nwip_universe, 222 },
+	{ "unknown-223", "X",				&nwip_universe, 223 },
+	{ "unknown-224", "X",				&nwip_universe, 224 },
+	{ "unknown-225", "X",				&nwip_universe, 225 },
+	{ "unknown-226", "X",				&nwip_universe, 226 },
+	{ "unknown-227", "X",				&nwip_universe, 227 },
+	{ "unknown-228", "X",				&nwip_universe, 228 },
+	{ "unknown-229", "X",				&nwip_universe, 229 },
+	{ "unknown-230", "X",				&nwip_universe, 230 },
+	{ "unknown-231", "X",				&nwip_universe, 231 },
+	{ "unknown-232", "X",				&nwip_universe, 232 },
+	{ "unknown-233", "X",				&nwip_universe, 233 },
+	{ "unknown-234", "X",				&nwip_universe, 234 },
+	{ "unknown-235", "X",				&nwip_universe, 235 },
+	{ "unknown-236", "X",				&nwip_universe, 236 },
+	{ "unknown-237", "X",				&nwip_universe, 237 },
+	{ "unknown-238", "X",				&nwip_universe, 238 },
+	{ "unknown-239", "X",				&nwip_universe, 239 },
+	{ "unknown-240", "X",				&nwip_universe, 240 },
+	{ "unknown-241", "X",				&nwip_universe, 241 },
+	{ "unknown-242", "X",				&nwip_universe, 242 },
+	{ "unknown-243", "X",				&nwip_universe, 243 },
+	{ "unknown-244", "X",				&nwip_universe, 244 },
+	{ "unknown-245", "X",				&nwip_universe, 245 },
+	{ "unknown-246", "X",				&nwip_universe, 246 },
+	{ "unknown-247", "X",				&nwip_universe, 247 },
+	{ "unknown-248", "X",				&nwip_universe, 248 },
+	{ "unknown-249", "X",				&nwip_universe, 249 },
+	{ "unknown-250", "X",				&nwip_universe, 250 },
+	{ "unknown-251", "X",				&nwip_universe, 251 },
+	{ "unknown-252", "X",				&nwip_universe, 252 },
+	{ "unknown-253", "X",				&nwip_universe, 253 },
+	{ "unknown-254", "X",				&nwip_universe, 254 },
+	{ "unknown-end", "e",				&nwip_universe, 255 },
 };
 
 struct universe fqdn_universe;
@@ -628,253 +629,253 @@
 	{ "hostname", "t",				&fqdn_universe, 6 },
 	{ "domainname", "t",				&fqdn_universe, 7 },
 	{ "fqdn", "t",					&fqdn_universe, 8 },
-	{ "#9", "X",				&fqdn_universe, 9 },
-	{ "#10", "X",				&fqdn_universe, 10 },
-	{ "#11", "X",				&fqdn_universe, 11 },
-	{ "#12", "X",				&fqdn_universe, 12 },
-	{ "#13", "X",				&fqdn_universe, 13 },
-	{ "#14", "X",				&fqdn_universe, 14 },
-	{ "#15", "X",				&fqdn_universe, 15 },
-	{ "#16", "X",				&fqdn_universe, 16 },
-	{ "#17", "X",				&fqdn_universe, 17 },
-	{ "#18", "X",				&fqdn_universe, 18 },
-	{ "#19", "X",				&fqdn_universe, 19 },
-	{ "#20", "X",				&fqdn_universe, 20 },
-	{ "#21", "X",				&fqdn_universe, 21 },
-	{ "#22", "X",				&fqdn_universe, 22 },
-	{ "#23", "X",				&fqdn_universe, 23 },
-	{ "#24", "X",				&fqdn_universe, 24 },
-	{ "#25", "X",				&fqdn_universe, 25 },
-	{ "#26", "X",				&fqdn_universe, 26 },
-	{ "#27", "X",				&fqdn_universe, 27 },
-	{ "#28", "X",				&fqdn_universe, 28 },
-	{ "#29", "X",				&fqdn_universe, 29 },
-	{ "#30", "X",				&fqdn_universe, 30 },
-	{ "#31", "X",				&fqdn_universe, 31 },
-	{ "#32", "X",				&fqdn_universe, 32 },
-	{ "#33", "X",				&fqdn_universe, 33 },
-	{ "#34", "X",				&fqdn_universe, 34 },
-	{ "#35", "X",				&fqdn_universe, 35 },
-	{ "#36", "X",				&fqdn_universe, 36 },
-	{ "#37", "X",				&fqdn_universe, 37 },
-	{ "#38", "X",				&fqdn_universe, 38 },
-	{ "#39", "X",				&fqdn_universe, 39 },
-	{ "#40", "X",				&fqdn_universe, 40 },
-	{ "#41", "X",				&fqdn_universe, 41 },
-	{ "#42", "X",				&fqdn_universe, 42 },
-	{ "#43", "X",				&fqdn_universe, 43 },
-	{ "#44", "X",				&fqdn_universe, 44 },
-	{ "#45", "X",				&fqdn_universe, 45 },
-	{ "#46", "X",				&fqdn_universe, 46 },
-	{ "#47", "X",				&fqdn_universe, 47 },
-	{ "#48", "X",				&fqdn_universe, 48 },
-	{ "#49", "X",				&fqdn_universe, 49 },
-	{ "#50", "X",				&fqdn_universe, 50 },
-	{ "#51", "X",				&fqdn_universe, 51 },
-	{ "#52", "X",				&fqdn_universe, 52 },
-	{ "#53", "X",				&fqdn_universe, 53 },
-	{ "#54", "X",				&fqdn_universe, 54 },
-	{ "#55", "X",				&fqdn_universe, 55 },
-	{ "#56", "X",				&fqdn_universe, 56 },
-	{ "#57", "X",				&fqdn_universe, 57 },
-	{ "#58", "X",				&fqdn_universe, 58 },
-	{ "#59", "X",				&fqdn_universe, 59 },
-	{ "#60", "X",				&fqdn_universe, 60 },
-	{ "#61", "X",				&fqdn_universe, 61 },
-	{ "#62", "X",				&fqdn_universe, 62 },
-	{ "#63", "X",				&fqdn_universe, 63 },
-	{ "#64", "X",				&fqdn_universe, 64 },
-	{ "#65", "X",				&fqdn_universe, 65 },
-	{ "#66", "X",				&fqdn_universe, 66 },
-	{ "#67", "X",				&fqdn_universe, 67 },
-	{ "#68", "X",				&fqdn_universe, 68 },
-	{ "#69", "X",				&fqdn_universe, 69 },
-	{ "#70", "X",				&fqdn_universe, 70 },
-	{ "#71", "X",				&fqdn_universe, 71 },
-	{ "#72", "X",				&fqdn_universe, 72 },
-	{ "#73", "X",				&fqdn_universe, 73 },
-	{ "#74", "X",				&fqdn_universe, 74 },
-	{ "#75", "X",				&fqdn_universe, 75 },
-	{ "#76", "X",				&fqdn_universe, 76 },
-	{ "#77", "X",				&fqdn_universe, 77 },
-	{ "#78", "X",				&fqdn_universe, 78 },
-	{ "#79", "X",				&fqdn_universe, 79 },
-	{ "#80", "X",				&fqdn_universe, 80 },
-	{ "#81", "X",				&fqdn_universe, 81 },
-	{ "#82", "X",				&fqdn_universe, 82 },
-	{ "#83", "X",				&fqdn_universe, 83 },
-	{ "#84", "X",				&fqdn_universe, 84 },
-	{ "#85", "X",				&fqdn_universe, 85 },
-	{ "#86", "X",				&fqdn_universe, 86 },
-	{ "#87", "X",				&fqdn_universe, 87 },
-	{ "#88", "X",				&fqdn_universe, 88 },
-	{ "#89", "X",				&fqdn_universe, 89 },
-	{ "#90", "X",				&fqdn_universe, 90 },
-	{ "#91", "X",				&fqdn_universe, 91 },
-	{ "#92", "X",				&fqdn_universe, 92 },
-	{ "#93", "X",				&fqdn_universe, 93 },
-	{ "#94", "X",				&fqdn_universe, 94 },
-	{ "#95", "X",				&fqdn_universe, 95 },
-	{ "#96", "X",				&fqdn_universe, 96 },
-	{ "#97", "X",				&fqdn_universe, 97 },
-	{ "#98", "X",				&fqdn_universe, 98 },
-	{ "#99", "X",				&fqdn_universe, 99 },
-	{ "#100", "X",				&fqdn_universe, 100 },
-	{ "#101", "X",				&fqdn_universe, 101 },
-	{ "#102", "X",				&fqdn_universe, 102 },
-	{ "#103", "X",				&fqdn_universe, 103 },
-	{ "#104", "X",				&fqdn_universe, 104 },
-	{ "#105", "X",				&fqdn_universe, 105 },
-	{ "#106", "X",				&fqdn_universe, 106 },
-	{ "#107", "X",				&fqdn_universe, 107 },
-	{ "#108", "X",				&fqdn_universe, 108 },
-	{ "#109", "X",				&fqdn_universe, 109 },
-	{ "#110", "X",				&fqdn_universe, 110 },
-	{ "#111", "X",				&fqdn_universe, 111 },
-	{ "#112", "X",				&fqdn_universe, 112 },
-	{ "#113", "X",				&fqdn_universe, 113 },
-	{ "#114", "X",				&fqdn_universe, 114 },
-	{ "#115", "X",				&fqdn_universe, 115 },
-	{ "#116", "X",				&fqdn_universe, 116 },
-	{ "#117", "X",				&fqdn_universe, 117 },
-	{ "#118", "X",				&fqdn_universe, 118 },
-	{ "#119", "X",				&fqdn_universe, 119 },
-	{ "#120", "X",				&fqdn_universe, 120 },
-	{ "#121", "X",				&fqdn_universe, 121 },
-	{ "#122", "X",				&fqdn_universe, 122 },
-	{ "#123", "X",				&fqdn_universe, 123 },
-	{ "#124", "X",				&fqdn_universe, 124 },
-	{ "#125", "X",				&fqdn_universe, 125 },
-	{ "#126", "X",				&fqdn_universe, 126 },
-	{ "#127", "X",				&fqdn_universe, 127 },
-	{ "#128", "X",				&fqdn_universe, 128 },
-	{ "#129", "X",				&fqdn_universe, 129 },
-	{ "#130", "X",				&fqdn_universe, 130 },
-	{ "#131", "X",				&fqdn_universe, 131 },
-	{ "#132", "X",				&fqdn_universe, 132 },
-	{ "#133", "X",				&fqdn_universe, 133 },
-	{ "#134", "X",				&fqdn_universe, 134 },
-	{ "#135", "X",				&fqdn_universe, 135 },
-	{ "#136", "X",				&fqdn_universe, 136 },
-	{ "#137", "X",				&fqdn_universe, 137 },
-	{ "#138", "X",				&fqdn_universe, 138 },
-	{ "#139", "X",				&fqdn_universe, 139 },
-	{ "#140", "X",				&fqdn_universe, 140 },
-	{ "#141", "X",				&fqdn_universe, 141 },
-	{ "#142", "X",				&fqdn_universe, 142 },
-	{ "#143", "X",				&fqdn_universe, 143 },
-	{ "#144", "X",				&fqdn_universe, 144 },
-	{ "#145", "X",				&fqdn_universe, 145 },
-	{ "#146", "X",				&fqdn_universe, 146 },
-	{ "#147", "X",				&fqdn_universe, 147 },
-	{ "#148", "X",				&fqdn_universe, 148 },
-	{ "#149", "X",				&fqdn_universe, 149 },
-	{ "#150", "X",				&fqdn_universe, 150 },
-	{ "#151", "X",				&fqdn_universe, 151 },
-	{ "#152", "X",				&fqdn_universe, 152 },
-	{ "#153", "X",				&fqdn_universe, 153 },
-	{ "#154", "X",				&fqdn_universe, 154 },
-	{ "#155", "X",				&fqdn_universe, 155 },
-	{ "#156", "X",				&fqdn_universe, 156 },
-	{ "#157", "X",				&fqdn_universe, 157 },
-	{ "#158", "X",				&fqdn_universe, 158 },
-	{ "#159", "X",				&fqdn_universe, 159 },
-	{ "#160", "X",				&fqdn_universe, 160 },
-	{ "#161", "X",				&fqdn_universe, 161 },
-	{ "#162", "X",				&fqdn_universe, 162 },
-	{ "#163", "X",				&fqdn_universe, 163 },
-	{ "#164", "X",				&fqdn_universe, 164 },
-	{ "#165", "X",				&fqdn_universe, 165 },
-	{ "#166", "X",				&fqdn_universe, 166 },
-	{ "#167", "X",				&fqdn_universe, 167 },
-	{ "#168", "X",				&fqdn_universe, 168 },
-	{ "#169", "X",				&fqdn_universe, 169 },
-	{ "#170", "X",				&fqdn_universe, 170 },
-	{ "#171", "X",				&fqdn_universe, 171 },
-	{ "#172", "X",				&fqdn_universe, 172 },
-	{ "#173", "X",				&fqdn_universe, 173 },
-	{ "#174", "X",				&fqdn_universe, 174 },
-	{ "#175", "X",				&fqdn_universe, 175 },
-	{ "#176", "X",				&fqdn_universe, 176 },
-	{ "#177", "X",				&fqdn_universe, 177 },
-	{ "#178", "X",				&fqdn_universe, 178 },
-	{ "#179", "X",				&fqdn_universe, 179 },
-	{ "#180", "X",				&fqdn_universe, 180 },
-	{ "#181", "X",				&fqdn_universe, 181 },
-	{ "#182", "X",				&fqdn_universe, 182 },
-	{ "#183", "X",				&fqdn_universe, 183 },
-	{ "#184", "X",				&fqdn_universe, 184 },
-	{ "#185", "X",				&fqdn_universe, 185 },
-	{ "#186", "X",				&fqdn_universe, 186 },
-	{ "#187", "X",				&fqdn_universe, 187 },
-	{ "#188", "X",				&fqdn_universe, 188 },
-	{ "#189", "X",				&fqdn_universe, 189 },
-	{ "#190", "X",				&fqdn_universe, 190 },
-	{ "#191", "X",				&fqdn_universe, 191 },
-	{ "#192", "X",				&fqdn_universe, 192 },
-	{ "#193", "X",				&fqdn_universe, 193 },
-	{ "#194", "X",				&fqdn_universe, 194 },
-	{ "#195", "X",				&fqdn_universe, 195 },
-	{ "#196", "X",				&fqdn_universe, 196 },
-	{ "#197", "X",				&fqdn_universe, 197 },
-	{ "#198", "X",				&fqdn_universe, 198 },
-	{ "#199", "X",				&fqdn_universe, 199 },
-	{ "#200", "X",				&fqdn_universe, 200 },
-	{ "#201", "X",				&fqdn_universe, 201 },
-	{ "#202", "X",				&fqdn_universe, 202 },
-	{ "#203", "X",				&fqdn_universe, 203 },
-	{ "#204", "X",				&fqdn_universe, 204 },
-	{ "#205", "X",				&fqdn_universe, 205 },
-	{ "#206", "X",				&fqdn_universe, 206 },
-	{ "#207", "X",				&fqdn_universe, 207 },
-	{ "#208", "X",				&fqdn_universe, 208 },
-	{ "#209", "X",				&fqdn_universe, 209 },
-	{ "#210", "X",				&fqdn_universe, 210 },
-	{ "#211", "X",				&fqdn_universe, 211 },
-	{ "#212", "X",				&fqdn_universe, 212 },
-	{ "#213", "X",				&fqdn_universe, 213 },
-	{ "#214", "X",				&fqdn_universe, 214 },
-	{ "#215", "X",				&fqdn_universe, 215 },
-	{ "#216", "X",				&fqdn_universe, 216 },
-	{ "#217", "X",				&fqdn_universe, 217 },
-	{ "#218", "X",				&fqdn_universe, 218 },
-	{ "#219", "X",				&fqdn_universe, 219 },
-	{ "#220", "X",				&fqdn_universe, 220 },
-	{ "#221", "X",				&fqdn_universe, 221 },
-	{ "#222", "X",				&fqdn_universe, 222 },
-	{ "#223", "X",				&fqdn_universe, 223 },
-	{ "#224", "X",				&fqdn_universe, 224 },
-	{ "#225", "X",				&fqdn_universe, 225 },
-	{ "#226", "X",				&fqdn_universe, 226 },
-	{ "#227", "X",				&fqdn_universe, 227 },
-	{ "#228", "X",				&fqdn_universe, 228 },
-	{ "#229", "X",				&fqdn_universe, 229 },
-	{ "#230", "X",				&fqdn_universe, 230 },
-	{ "#231", "X",				&fqdn_universe, 231 },
-	{ "#232", "X",				&fqdn_universe, 232 },
-	{ "#233", "X",				&fqdn_universe, 233 },
-	{ "#234", "X",				&fqdn_universe, 234 },
-	{ "#235", "X",				&fqdn_universe, 235 },
-	{ "#236", "X",				&fqdn_universe, 236 },
-	{ "#237", "X",				&fqdn_universe, 237 },
-	{ "#238", "X",				&fqdn_universe, 238 },
-	{ "#239", "X",				&fqdn_universe, 239 },
-	{ "#240", "X",				&fqdn_universe, 240 },
-	{ "#241", "X",				&fqdn_universe, 241 },
-	{ "#242", "X",				&fqdn_universe, 242 },
-	{ "#243", "X",				&fqdn_universe, 243 },
-	{ "#244", "X",				&fqdn_universe, 244 },
-	{ "#245", "X",				&fqdn_universe, 245 },
-	{ "#246", "X",				&fqdn_universe, 246 },
-	{ "#247", "X",				&fqdn_universe, 247 },
-	{ "#248", "X",				&fqdn_universe, 248 },
-	{ "#249", "X",				&fqdn_universe, 249 },
-	{ "#250", "X",				&fqdn_universe, 250 },
-	{ "#251", "X",				&fqdn_universe, 251 },
-	{ "#252", "X",				&fqdn_universe, 252 },
-	{ "#253", "X",				&fqdn_universe, 253 },
-	{ "#254", "X",				&fqdn_universe, 254 },
-	{ "#end", "e",				&fqdn_universe, 255 },
+	{ "unknown-9", "X",				&fqdn_universe, 9 },
+	{ "unknown-10", "X",				&fqdn_universe, 10 },
+	{ "unknown-11", "X",				&fqdn_universe, 11 },
+	{ "unknown-12", "X",				&fqdn_universe, 12 },
+	{ "unknown-13", "X",				&fqdn_universe, 13 },
+	{ "unknown-14", "X",				&fqdn_universe, 14 },
+	{ "unknown-15", "X",				&fqdn_universe, 15 },
+	{ "unknown-16", "X",				&fqdn_universe, 16 },
+	{ "unknown-17", "X",				&fqdn_universe, 17 },
+	{ "unknown-18", "X",				&fqdn_universe, 18 },
+	{ "unknown-19", "X",				&fqdn_universe, 19 },
+	{ "unknown-20", "X",				&fqdn_universe, 20 },
+	{ "unknown-21", "X",				&fqdn_universe, 21 },
+	{ "unknown-22", "X",				&fqdn_universe, 22 },
+	{ "unknown-23", "X",				&fqdn_universe, 23 },
+	{ "unknown-24", "X",				&fqdn_universe, 24 },
+	{ "unknown-25", "X",				&fqdn_universe, 25 },
+	{ "unknown-26", "X",				&fqdn_universe, 26 },
+	{ "unknown-27", "X",				&fqdn_universe, 27 },
+	{ "unknown-28", "X",				&fqdn_universe, 28 },
+	{ "unknown-29", "X",				&fqdn_universe, 29 },
+	{ "unknown-30", "X",				&fqdn_universe, 30 },
+	{ "unknown-31", "X",				&fqdn_universe, 31 },
+	{ "unknown-32", "X",				&fqdn_universe, 32 },
+	{ "unknown-33", "X",				&fqdn_universe, 33 },
+	{ "unknown-34", "X",				&fqdn_universe, 34 },
+	{ "unknown-35", "X",				&fqdn_universe, 35 },
+	{ "unknown-36", "X",				&fqdn_universe, 36 },
+	{ "unknown-37", "X",				&fqdn_universe, 37 },
+	{ "unknown-38", "X",				&fqdn_universe, 38 },
+	{ "unknown-39", "X",				&fqdn_universe, 39 },
+	{ "unknown-40", "X",				&fqdn_universe, 40 },
+	{ "unknown-41", "X",				&fqdn_universe, 41 },
+	{ "unknown-42", "X",				&fqdn_universe, 42 },
+	{ "unknown-43", "X",				&fqdn_universe, 43 },
+	{ "unknown-44", "X",				&fqdn_universe, 44 },
+	{ "unknown-45", "X",				&fqdn_universe, 45 },
+	{ "unknown-46", "X",				&fqdn_universe, 46 },
+	{ "unknown-47", "X",				&fqdn_universe, 47 },
+	{ "unknown-48", "X",				&fqdn_universe, 48 },
+	{ "unknown-49", "X",				&fqdn_universe, 49 },
+	{ "unknown-50", "X",				&fqdn_universe, 50 },
+	{ "unknown-51", "X",				&fqdn_universe, 51 },
+	{ "unknown-52", "X",				&fqdn_universe, 52 },
+	{ "unknown-53", "X",				&fqdn_universe, 53 },
+	{ "unknown-54", "X",				&fqdn_universe, 54 },
+	{ "unknown-55", "X",				&fqdn_universe, 55 },
+	{ "unknown-56", "X",				&fqdn_universe, 56 },
+	{ "unknown-57", "X",				&fqdn_universe, 57 },
+	{ "unknown-58", "X",				&fqdn_universe, 58 },
+	{ "unknown-59", "X",				&fqdn_universe, 59 },
+	{ "unknown-60", "X",				&fqdn_universe, 60 },
+	{ "unknown-61", "X",				&fqdn_universe, 61 },
+	{ "unknown-62", "X",				&fqdn_universe, 62 },
+	{ "unknown-63", "X",				&fqdn_universe, 63 },
+	{ "unknown-64", "X",				&fqdn_universe, 64 },
+	{ "unknown-65", "X",				&fqdn_universe, 65 },
+	{ "unknown-66", "X",				&fqdn_universe, 66 },
+	{ "unknown-67", "X",				&fqdn_universe, 67 },
+	{ "unknown-68", "X",				&fqdn_universe, 68 },
+	{ "unknown-69", "X",				&fqdn_universe, 69 },
+	{ "unknown-70", "X",				&fqdn_universe, 70 },
+	{ "unknown-71", "X",				&fqdn_universe, 71 },
+	{ "unknown-72", "X",				&fqdn_universe, 72 },
+	{ "unknown-73", "X",				&fqdn_universe, 73 },
+	{ "unknown-74", "X",				&fqdn_universe, 74 },
+	{ "unknown-75", "X",				&fqdn_universe, 75 },
+	{ "unknown-76", "X",				&fqdn_universe, 76 },
+	{ "unknown-77", "X",				&fqdn_universe, 77 },
+	{ "unknown-78", "X",				&fqdn_universe, 78 },
+	{ "unknown-79", "X",				&fqdn_universe, 79 },
+	{ "unknown-80", "X",				&fqdn_universe, 80 },
+	{ "unknown-81", "X",				&fqdn_universe, 81 },
+	{ "unknown-82", "X",				&fqdn_universe, 82 },
+	{ "unknown-83", "X",				&fqdn_universe, 83 },
+	{ "unknown-84", "X",				&fqdn_universe, 84 },
+	{ "unknown-85", "X",				&fqdn_universe, 85 },
+	{ "unknown-86", "X",				&fqdn_universe, 86 },
+	{ "unknown-87", "X",				&fqdn_universe, 87 },
+	{ "unknown-88", "X",				&fqdn_universe, 88 },
+	{ "unknown-89", "X",				&fqdn_universe, 89 },
+	{ "unknown-90", "X",				&fqdn_universe, 90 },
+	{ "unknown-91", "X",				&fqdn_universe, 91 },
+	{ "unknown-92", "X",				&fqdn_universe, 92 },
+	{ "unknown-93", "X",				&fqdn_universe, 93 },
+	{ "unknown-94", "X",				&fqdn_universe, 94 },
+	{ "unknown-95", "X",				&fqdn_universe, 95 },
+	{ "unknown-96", "X",				&fqdn_universe, 96 },
+	{ "unknown-97", "X",				&fqdn_universe, 97 },
+	{ "unknown-98", "X",				&fqdn_universe, 98 },
+	{ "unknown-99", "X",				&fqdn_universe, 99 },
+	{ "unknown-100", "X",				&fqdn_universe, 100 },
+	{ "unknown-101", "X",				&fqdn_universe, 101 },
+	{ "unknown-102", "X",				&fqdn_universe, 102 },
+	{ "unknown-103", "X",				&fqdn_universe, 103 },
+	{ "unknown-104", "X",				&fqdn_universe, 104 },
+	{ "unknown-105", "X",				&fqdn_universe, 105 },
+	{ "unknown-106", "X",				&fqdn_universe, 106 },
+	{ "unknown-107", "X",				&fqdn_universe, 107 },
+	{ "unknown-108", "X",				&fqdn_universe, 108 },
+	{ "unknown-109", "X",				&fqdn_universe, 109 },
+	{ "unknown-110", "X",				&fqdn_universe, 110 },
+	{ "unknown-111", "X",				&fqdn_universe, 111 },
+	{ "unknown-112", "X",				&fqdn_universe, 112 },
+	{ "unknown-113", "X",				&fqdn_universe, 113 },
+	{ "unknown-114", "X",				&fqdn_universe, 114 },
+	{ "unknown-115", "X",				&fqdn_universe, 115 },
+	{ "unknown-116", "X",				&fqdn_universe, 116 },
+	{ "unknown-117", "X",				&fqdn_universe, 117 },
+	{ "unknown-118", "X",				&fqdn_universe, 118 },
+	{ "unknown-119", "X",				&fqdn_universe, 119 },
+	{ "unknown-120", "X",				&fqdn_universe, 120 },
+	{ "unknown-121", "X",				&fqdn_universe, 121 },
+	{ "unknown-122", "X",				&fqdn_universe, 122 },
+	{ "unknown-123", "X",				&fqdn_universe, 123 },
+	{ "unknown-124", "X",				&fqdn_universe, 124 },
+	{ "unknown-125", "X",				&fqdn_universe, 125 },
+	{ "unknown-126", "X",				&fqdn_universe, 126 },
+	{ "unknown-127", "X",				&fqdn_universe, 127 },
+	{ "unknown-128", "X",				&fqdn_universe, 128 },
+	{ "unknown-129", "X",				&fqdn_universe, 129 },
+	{ "unknown-130", "X",				&fqdn_universe, 130 },
+	{ "unknown-131", "X",				&fqdn_universe, 131 },
+	{ "unknown-132", "X",				&fqdn_universe, 132 },
+	{ "unknown-133", "X",				&fqdn_universe, 133 },
+	{ "unknown-134", "X",				&fqdn_universe, 134 },
+	{ "unknown-135", "X",				&fqdn_universe, 135 },
+	{ "unknown-136", "X",				&fqdn_universe, 136 },
+	{ "unknown-137", "X",				&fqdn_universe, 137 },
+	{ "unknown-138", "X",				&fqdn_universe, 138 },
+	{ "unknown-139", "X",				&fqdn_universe, 139 },
+	{ "unknown-140", "X",				&fqdn_universe, 140 },
+	{ "unknown-141", "X",				&fqdn_universe, 141 },
+	{ "unknown-142", "X",				&fqdn_universe, 142 },
+	{ "unknown-143", "X",				&fqdn_universe, 143 },
+	{ "unknown-144", "X",				&fqdn_universe, 144 },
+	{ "unknown-145", "X",				&fqdn_universe, 145 },
+	{ "unknown-146", "X",				&fqdn_universe, 146 },
+	{ "unknown-147", "X",				&fqdn_universe, 147 },
+	{ "unknown-148", "X",				&fqdn_universe, 148 },
+	{ "unknown-149", "X",				&fqdn_universe, 149 },
+	{ "unknown-150", "X",				&fqdn_universe, 150 },
+	{ "unknown-151", "X",				&fqdn_universe, 151 },
+	{ "unknown-152", "X",				&fqdn_universe, 152 },
+	{ "unknown-153", "X",				&fqdn_universe, 153 },
+	{ "unknown-154", "X",				&fqdn_universe, 154 },
+	{ "unknown-155", "X",				&fqdn_universe, 155 },
+	{ "unknown-156", "X",				&fqdn_universe, 156 },
+	{ "unknown-157", "X",				&fqdn_universe, 157 },
+	{ "unknown-158", "X",				&fqdn_universe, 158 },
+	{ "unknown-159", "X",				&fqdn_universe, 159 },
+	{ "unknown-160", "X",				&fqdn_universe, 160 },
+	{ "unknown-161", "X",				&fqdn_universe, 161 },
+	{ "unknown-162", "X",				&fqdn_universe, 162 },
+	{ "unknown-163", "X",				&fqdn_universe, 163 },
+	{ "unknown-164", "X",				&fqdn_universe, 164 },
+	{ "unknown-165", "X",				&fqdn_universe, 165 },
+	{ "unknown-166", "X",				&fqdn_universe, 166 },
+	{ "unknown-167", "X",				&fqdn_universe, 167 },
+	{ "unknown-168", "X",				&fqdn_universe, 168 },
+	{ "unknown-169", "X",				&fqdn_universe, 169 },
+	{ "unknown-170", "X",				&fqdn_universe, 170 },
+	{ "unknown-171", "X",				&fqdn_universe, 171 },
+	{ "unknown-172", "X",				&fqdn_universe, 172 },
+	{ "unknown-173", "X",				&fqdn_universe, 173 },
+	{ "unknown-174", "X",				&fqdn_universe, 174 },
+	{ "unknown-175", "X",				&fqdn_universe, 175 },
+	{ "unknown-176", "X",				&fqdn_universe, 176 },
+	{ "unknown-177", "X",				&fqdn_universe, 177 },
+	{ "unknown-178", "X",				&fqdn_universe, 178 },
+	{ "unknown-179", "X",				&fqdn_universe, 179 },
+	{ "unknown-180", "X",				&fqdn_universe, 180 },
+	{ "unknown-181", "X",				&fqdn_universe, 181 },
+	{ "unknown-182", "X",				&fqdn_universe, 182 },
+	{ "unknown-183", "X",				&fqdn_universe, 183 },
+	{ "unknown-184", "X",				&fqdn_universe, 184 },
+	{ "unknown-185", "X",				&fqdn_universe, 185 },
+	{ "unknown-186", "X",				&fqdn_universe, 186 },
+	{ "unknown-187", "X",				&fqdn_universe, 187 },
+	{ "unknown-188", "X",				&fqdn_universe, 188 },
+	{ "unknown-189", "X",				&fqdn_universe, 189 },
+	{ "unknown-190", "X",				&fqdn_universe, 190 },
+	{ "unknown-191", "X",				&fqdn_universe, 191 },
+	{ "unknown-192", "X",				&fqdn_universe, 192 },
+	{ "unknown-193", "X",				&fqdn_universe, 193 },
+	{ "unknown-194", "X",				&fqdn_universe, 194 },
+	{ "unknown-195", "X",				&fqdn_universe, 195 },
+	{ "unknown-196", "X",				&fqdn_universe, 196 },
+	{ "unknown-197", "X",				&fqdn_universe, 197 },
+	{ "unknown-198", "X",				&fqdn_universe, 198 },
+	{ "unknown-199", "X",				&fqdn_universe, 199 },
+	{ "unknown-200", "X",				&fqdn_universe, 200 },
+	{ "unknown-201", "X",				&fqdn_universe, 201 },
+	{ "unknown-202", "X",				&fqdn_universe, 202 },
+	{ "unknown-203", "X",				&fqdn_universe, 203 },
+	{ "unknown-204", "X",				&fqdn_universe, 204 },
+	{ "unknown-205", "X",				&fqdn_universe, 205 },
+	{ "unknown-206", "X",				&fqdn_universe, 206 },
+	{ "unknown-207", "X",				&fqdn_universe, 207 },
+	{ "unknown-208", "X",				&fqdn_universe, 208 },
+	{ "unknown-209", "X",				&fqdn_universe, 209 },
+	{ "unknown-210", "X",				&fqdn_universe, 210 },
+	{ "unknown-211", "X",				&fqdn_universe, 211 },
+	{ "unknown-212", "X",				&fqdn_universe, 212 },
+	{ "unknown-213", "X",				&fqdn_universe, 213 },
+	{ "unknown-214", "X",				&fqdn_universe, 214 },
+	{ "unknown-215", "X",				&fqdn_universe, 215 },
+	{ "unknown-216", "X",				&fqdn_universe, 216 },
+	{ "unknown-217", "X",				&fqdn_universe, 217 },
+	{ "unknown-218", "X",				&fqdn_universe, 218 },
+	{ "unknown-219", "X",				&fqdn_universe, 219 },
+	{ "unknown-220", "X",				&fqdn_universe, 220 },
+	{ "unknown-221", "X",				&fqdn_universe, 221 },
+	{ "unknown-222", "X",				&fqdn_universe, 222 },
+	{ "unknown-223", "X",				&fqdn_universe, 223 },
+	{ "unknown-224", "X",				&fqdn_universe, 224 },
+	{ "unknown-225", "X",				&fqdn_universe, 225 },
+	{ "unknown-226", "X",				&fqdn_universe, 226 },
+	{ "unknown-227", "X",				&fqdn_universe, 227 },
+	{ "unknown-228", "X",				&fqdn_universe, 228 },
+	{ "unknown-229", "X",				&fqdn_universe, 229 },
+	{ "unknown-230", "X",				&fqdn_universe, 230 },
+	{ "unknown-231", "X",				&fqdn_universe, 231 },
+	{ "unknown-232", "X",				&fqdn_universe, 232 },
+	{ "unknown-233", "X",				&fqdn_universe, 233 },
+	{ "unknown-234", "X",				&fqdn_universe, 234 },
+	{ "unknown-235", "X",				&fqdn_universe, 235 },
+	{ "unknown-236", "X",				&fqdn_universe, 236 },
+	{ "unknown-237", "X",				&fqdn_universe, 237 },
+	{ "unknown-238", "X",				&fqdn_universe, 238 },
+	{ "unknown-239", "X",				&fqdn_universe, 239 },
+	{ "unknown-240", "X",				&fqdn_universe, 240 },
+	{ "unknown-241", "X",				&fqdn_universe, 241 },
+	{ "unknown-242", "X",				&fqdn_universe, 242 },
+	{ "unknown-243", "X",				&fqdn_universe, 243 },
+	{ "unknown-244", "X",				&fqdn_universe, 244 },
+	{ "unknown-245", "X",				&fqdn_universe, 245 },
+	{ "unknown-246", "X",				&fqdn_universe, 246 },
+	{ "unknown-247", "X",				&fqdn_universe, 247 },
+	{ "unknown-248", "X",				&fqdn_universe, 248 },
+	{ "unknown-249", "X",				&fqdn_universe, 249 },
+	{ "unknown-250", "X",				&fqdn_universe, 250 },
+	{ "unknown-251", "X",				&fqdn_universe, 251 },
+	{ "unknown-252", "X",				&fqdn_universe, 252 },
+	{ "unknown-253", "X",				&fqdn_universe, 253 },
+	{ "unknown-254", "X",				&fqdn_universe, 254 },
+	{ "unknown-end", "e",				&fqdn_universe, 255 },
 };
 
 const char *hardware_types [] = {
Index: isc-dhcp/includes/dhcpd.h
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/includes/dhcpd.h,v
retrieving revision 1.1
diff -u -r1.1 dhcpd.h
--- isc-dhcp/includes/dhcpd.h	17 Jun 2003 02:45:01 -0000	1.1
+++ isc-dhcp/includes/dhcpd.h	9 Oct 2003 02:28:14 -0000
@@ -39,6 +39,9 @@
  * ``http://www.isc.org/''.  To learn more about Vixie Enterprises,
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
+ *
+ * $FreeBSD: src/contrib/isc-dhcp/includes/dhcpd.h,v 1.8 2003/09/02 11:13:21 mbr Exp $
+ * $DragonFly$
  */
 
 #ifndef __CYGWIN32__
@@ -99,6 +102,9 @@
 	 (((x) >> OPTION_HASH_EXP) & \
 	  (OPTION_HASH_PTWO - 1))) % OPTION_HASH_SIZE;
 
+#define NOLINK 0
+#define HAVELINK 1
+
 enum dhcp_shutdown_state {
 	shutdown_listeners,
 	shutdown_omapi_connections,
@@ -420,6 +426,11 @@
 #define SV_UPDATE_STATIC_LEASES		43
 #define SV_LOG_FACILITY			44
 #define SV_DO_FORWARD_UPDATES		45
+#define SV_PING_TIMEOUT         46
+
+#if !defined (DEFAULT_PING_TIMEOUT)
+# define DEFAULT_PING_TIMEOUT 1
+#endif
 
 #if !defined (DEFAULT_DEFAULT_LEASE_TIME)
 # define DEFAULT_DEFAULT_LEASE_TIME 43200
@@ -778,6 +789,11 @@
 	unsigned remote_id_len;		/* Length of Remote ID. */
 
 	char name [IFNAMSIZ];		/* Its name... */
+	int ieee80211;			/* True if media is ieee802.11 */
+	int havemedia;			/* True if we have a media table */
+	int linkstate;			/* True if we have link */
+	int polling;			/* True if polling is enabled */
+	int forcediscover;		/* True if a discover is needed */
 	int index;			/* Its index. */
 	int rfdesc;			/* Its read file descriptor. */
 	int wfdesc;			/* Its write file descriptor, if
@@ -1853,12 +1869,21 @@
 void send_decline PROTO ((void *));
 
 void state_reboot PROTO ((void *));
+#ifdef ENABLE_POLLING_MODE
+void state_polling PROTO (());
+void state_background PROTO ((void *));
+#endif
 void state_init PROTO ((void *));
 void state_selecting PROTO ((void *));
 void state_requesting PROTO ((void *));
 void state_bound PROTO ((void *));
 void state_stop PROTO ((void *));
 void state_panic PROTO ((void *));
+
+#ifdef __FreeBSD__
+void set_ieee80211 PROTO ((struct interface_info *));
+#endif
+int interface_active PROTO ((struct interface_info *));
 
 void bind_lease PROTO ((struct client_state *));
 
Index: isc-dhcp/includes/version.h
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/includes/version.h,v
retrieving revision 1.1
diff -u -r1.1 version.h
--- isc-dhcp/includes/version.h	17 Jun 2003 02:45:01 -0000	1.1
+++ isc-dhcp/includes/version.h	9 Oct 2003 02:20:19 -0000
@@ -1,3 +1,3 @@
 /* Current version of ISC DHCP Distribution. */
 
-#define DHCP_VERSION	"V3.0.1rc11"
+#define DHCP_VERSION	"V3.0.1rc12"
Index: isc-dhcp/includes/cf/freebsd.h
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/includes/cf/freebsd.h,v
retrieving revision 1.2
diff -u -r1.2 freebsd.h
--- isc-dhcp/includes/cf/freebsd.h	17 Jun 2003 04:24:02 -0000	1.2
+++ isc-dhcp/includes/cf/freebsd.h	9 Oct 2003 02:29:39 -0000
@@ -40,8 +40,7 @@
  * see ``http://www.vix.com''.   To learn more about Nominum, Inc., see
  * ``http://www.nominum.com''.
  *
- * $FreeBSD: src/contrib/isc-dhcp/includes/cf/freebsd.h,v 1.3.4.2 2003/03/02 16:42:40 murray Exp $
- * $DragonFly: src/contrib/isc-dhcp/includes/cf/freebsd.h,v 1.2 2003/06/17 04:24:02 dillon Exp $
+ * $FreeBSD: src/contrib/isc-dhcp/includes/cf/freebsd.h,v 1.6 2003/06/29 18:46:17 gordon Exp $
  */
 
 #include <syslog.h>
@@ -104,6 +103,10 @@
 #define SOCKLEN_T int
 #endif
 
+#ifdef RESCUE
+#define _PATH_DHCLIENT_SCRIPT	"/sbin/dhclient-script"
+#endif
+
 #if defined (USE_DEFAULT_NETWORK)
 #  define USE_BPF
 #endif
@@ -114,6 +117,9 @@
  #endif /* HAVE_DEV_RANDOM */
 
 const char *cmds[] = {
+#ifndef RESCUE
+	/* rescue environment can't rely on these ... */
+	/* Actually, /sbin/dhclient shouldn't use these, either. */
 	"/bin/ps -axlw 2>&1",
 	"/usr/sbin/arp -an 2>&1",
 	"/usr/bin/netstat -an 2>&1",
@@ -124,10 +130,12 @@
 	"/usr/sbin/iostat  2>&1",
 	"/usr/bin/vmstat  2>&1",
 	"/usr/bin/w  2>&1",
+#endif
 	NULL
 };
 
 const char *dirs[] = {
+#ifndef RESCUE
 	"/tmp",
 	"/usr/tmp",
 	".",
@@ -137,13 +145,16 @@
 	"/var/mail",
 	"/home",
 	"/usr/home",
+#endif
 	NULL
 };
 
 const char *files[] = {
+#ifndef RESCUE
 	"/var/log/messages",
 	"/var/log/wtmp",
 	"/var/log/lastlog",
+#endif
 	NULL
 };
 #endif /* NEED_PRAND_CONF */
Index: isc-dhcp/minires/res_mkupdate.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/minires/res_mkupdate.c,v
retrieving revision 1.1
diff -u -r1.1 res_mkupdate.c
--- isc-dhcp/minires/res_mkupdate.c	17 Jun 2003 02:45:02 -0000	1.1
+++ isc-dhcp/minires/res_mkupdate.c	9 Oct 2003 02:20:19 -0000
@@ -21,7 +21,7 @@
  */
 
 #if !defined(lint) && !defined(SABER)
-static const char rcsid[] = "$Id: res_mkupdate.c,v 1.7 2001/01/11 02:16:24 mellon Exp $";
+static const char rcsid[] = "$Id: res_mkupdate.c,v 1.7.2.2 2003/05/19 00:33:22 dhankins Exp $";
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -52,6 +52,7 @@
 static int getword_str(char *, int,
 		       const unsigned char **,
 		       const unsigned char *);
+static int getphrase_str(char *, int, const u_char **, const u_char *);
 static int getstr_str(char *, int, const u_char **, const u_char *);
 
 struct valuelist {
@@ -101,7 +102,8 @@
 	u_int16_t rtype, rclass;
 	u_int32_t n1, rttl;
 	u_char *dnptrs[20], **dpp, **lastdnptr;
-	unsigned siglen, keylen, certlen;
+	unsigned siglen, certlen;
+	int keylen;
 	unsigned buflen = *blp;
 	u_char *buf = (unsigned char *)bp;
 
@@ -234,7 +236,7 @@
 		case T_MR:
 		case T_NS:
 		case T_PTR:
-			if (!getword_str(buf2, sizeof buf2, &startp, endp))
+			if (!getphrase_str(buf2, sizeof buf2, &startp, endp))
 				return (-1);
 			n = dn_comp(buf2, cp, buflen, dnptrs, lastdnptr);
 			if (n < 0)
@@ -549,36 +551,6 @@
 			cp += siglen;
 			break;
 		    }
-		case ns_t_key:
-			/* flags */
-			n = gethexnum_str(&startp, endp);
-			if (n < 0)
-				return (-1);
-			ShrinkBuffer(INT16SZ);
-			PUTSHORT(n, cp);
-			/* proto */
-			n = getnum_str(&startp, endp);
-			if (n < 0)
-				return (-1);
-			ShrinkBuffer(1);
-			*cp++ = n;
-			/* alg */
-			n = getnum_str(&startp, endp);
-			if (n < 0)
-				return (-1);
-			ShrinkBuffer(1);
-			*cp++ = n;
-			/* key */
-			if ((n = getword_str(buf2, sizeof buf2,
-					     &startp, endp)) < 0)
-				return (-1);
-			keylen = b64_pton(buf2, buf3, sizeof(buf3));
-			if (keylen < 0)
-				return (-1);
-			ShrinkBuffer(keylen);
-			memcpy(cp, buf3, keylen);
-			cp += keylen;
-			break;
 		case ns_t_nxt:
 		    {
 			int success, nxt_type;
@@ -613,6 +585,38 @@
 			cp += n;
 			break;
 		    }
+#endif
+#if 1
+		case ns_t_key:
+			/* flags */
+			n = gethexnum_str(&startp, endp);
+			if (n < 0)
+				return (-1);
+			ShrinkBuffer(INT16SZ);
+			PUTSHORT(n, cp);
+			/* proto */
+			n = getnum_str(&startp, endp);
+			if (n < 0)
+				return (-1);
+			ShrinkBuffer(1);
+			*cp++ = n;
+			/* alg */
+			n = getnum_str(&startp, endp);
+			if (n < 0)
+				return (-1);
+			ShrinkBuffer(1);
+			*cp++ = n;
+			/* key */
+			if ((n = getword_str(buf2, sizeof buf2,
+					     &startp, endp)) < 0)
+				return (-1);
+			keylen = b64_pton(buf2, buf3, sizeof(buf3));
+			if (keylen < 0)
+				return (-1);
+			ShrinkBuffer(keylen);
+			memcpy(cp, buf3, keylen);
+			cp += keylen;
+			break;
 		case ns_t_cert:
 			/* type */
 			n = getnum_str(&startp, endp);
@@ -645,6 +649,8 @@
 			break;
 #endif
 		default:
+		  fprintf(stderr, "NSupdate of RR type: %d not implemented\n",
+			  rrecp->r_type);
 			return (-1);
 		} /*switch*/
 		n = (u_int16_t)((cp - sp2) - INT16SZ);
@@ -679,6 +685,35 @@
                                 continue;
                         }
                 }
+                (*startpp)++;
+                if (cp >= buf+size-1)
+                        break;
+                *cp++ = (u_char)c;
+        }
+        *cp = '\0';
+        return (cp != buf);
+}
+
+/*
+ * Get a phrase - possibly containing blanks - from a string (not file)
+ * into buf. modify the start pointer to point after the
+ * phrase in the string.
+ */
+static int
+getphrase_str(char *buf, int size, const u_char **startpp, const u_char *endp) {
+        char *cp;
+        int c;
+ 
+        for (cp = buf; *startpp <= endp; ) {
+                c = **startpp;
+                if (isspace(c) && cp == buf ) {
+			/* leading whitespace */
+			(*startpp)++;
+			continue;
+		}
+		else if ( c == '\0' ) {
+			break;
+		}
                 (*startpp)++;
                 if (cp >= buf+size-1)
                         break;
Index: isc-dhcp/omapip/result.c
===================================================================
RCS file: /cvs/src/contrib/isc-dhcp/omapip/result.c,v
retrieving revision 1.1
diff -u -r1.1 result.c
--- isc-dhcp/omapip/result.c	17 Jun 2003 02:45:02 -0000	1.1
+++ isc-dhcp/omapip/result.c	9 Oct 2003 02:20:19 -0000
@@ -119,7 +119,10 @@
 
 const char *isc_result_totext (isc_result_t result)
 {
+	static char ebuf[40];
+
 	if (result >= ISC_R_SUCCESS && result < ISC_R_NRESULTS)
 		return text [result];
-	return "unknown error.";
+	sprintf(ebuf, "unknown error: %d", result);
+	return ebuf;
 }
