Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-1-5]: src/usr.sbin/dhcp/server Pull up revision 1.24 (requested b...
details: https://anonhg.NetBSD.org/src/rev/1b4bafbe315b
branches: netbsd-1-5
changeset: 491115:1b4bafbe315b
user: he <he%NetBSD.org@localhost>
date: Wed Apr 04 20:56:49 2001 +0000
description:
Pull up revision 1.24 (requested by mellon):
Update DHCP software to ISC version 3, Beta 2, Patchlevel 23.
diffstat:
usr.sbin/dhcp/server/dhcpd.c | 641 ++++++++++++++++++++++++++++--------------
1 files changed, 427 insertions(+), 214 deletions(-)
diffs (truncated from 810 to 300 lines):
diff -r b28fcc8b0efd -r 1b4bafbe315b usr.sbin/dhcp/server/dhcpd.c
--- a/usr.sbin/dhcp/server/dhcpd.c Wed Apr 04 20:56:47 2001 +0000
+++ b/usr.sbin/dhcp/server/dhcpd.c Wed Apr 04 20:56:49 2001 +0000
@@ -3,7 +3,7 @@
DHCP Server Daemon. */
/*
- * Copyright (c) 1996-2000 Internet Software Consortium.
+ * Copyright (c) 1996-2001 Internet Software Consortium.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,14 +43,14 @@
#ifndef lint
static char ocopyright[] =
-"$Id: dhcpd.c,v 1.17.2.3 2000/10/18 04:11:43 tv Exp $ Copyright 1995-2000 Internet Software Consortium.";
+"$Id: dhcpd.c,v 1.17.2.4 2001/04/04 20:56:49 he Exp $ Copyright 1995-2001 Internet Software Consortium.";
#endif
- static const char copyright[] =
-"Copyright 1995-2000 Internet Software Consortium.";
-static const char arr [] = "All rights reserved.";
-static const char message [] = "Internet Software Consortium DHCP Server";
-static const char url [] = "For info, please visit http://www.isc.org/products/DHCP";
+ static char copyright[] =
+"Copyright 1995-2001 Internet Software Consortium.";
+static char arr [] = "All rights reserved.";
+static char message [] = "Internet Software Consortium DHCP Server";
+static char url [] = "For info, please visit http://www.isc.org/products/DHCP";
#include "dhcpd.h"
#include "version.h"
@@ -63,72 +63,99 @@
struct iaddr server_identifier;
int server_identifier_matched;
-/* This is the standard name service updater that is executed whenever a
- lease is committed. Right now it's not following the DHCP-DNS draft
- at all, but as soon as I fix the resolver it should try to. */
+#if defined (NSUPDATE)
+
+/* This stuff is always executed to figure the default values for certain
+ ddns variables. */
-#if defined (NSUPDATE)
char std_nsupdate [] = " \n\
+option server.ddns-hostname = \n\
+ pick (option fqdn.hostname, option host-name); \n\
+option server.ddns-domainname = config-option domain-name; \n\
+option server.ddns-ttl = encode-int(lease-time / 2, 32); \n\
+option server.ddns-rev-domainname = \"in-addr.arpa.\";";
+
+/* This is the old-style name service updater that is executed
+ whenever a lease is committed. It does not follow the DHCP-DNS
+ draft at all. */
+
+char old_nsupdate [] = " \n\
on commit { \n\
- if (((config-option server.ddns-updates = null) or \n\
- (config-option server.ddns-updates != 0)) and \n\
- (not defined (ddns-fwd-name))) { \n\
- set ddns-fwd-name = concat (pick (config-option server.ddns-hostname, \n\
- option host-name), \".\", \n\
- pick (config-option server.ddns-domainname, \n\
- config-option domain-name)); \n\
- if defined (ddns-fwd-name) { \n\
- switch (ns-update (not exists (IN, A, ddns-fwd-name, null), \n\
- add (IN, A, ddns-fwd-name, leased-address, \n\
- lease-time / 2))) { \n\
- default: \n\
- unset ddns-fwd-name; \n\
- break; \n\
+ if (not static and \n\
+ ((config-option server.ddns-updates = null) or \n\
+ (config-option server.ddns-updates != 0))) { \n\
+ set new-ddns-fwd-name = \n\
+ concat (pick (config-option server.ddns-hostname, \n\
+ option host-name), \".\", \n\
+ pick (config-option server.ddns-domainname, \n\
+ config-option domain-name)); \n\
+ if (defined (ddns-fwd-name) and ddns-fwd-name != new-ddns-fwd-name) { \n\
+ switch (ns-update (delete (IN, A, ddns-fwd-name, leased-address))) { \n\
+ case NOERROR: \n\
+ unset ddns-fwd-name; \n\
+ on expiry or release { \n\
+ } \n\
+ } \n\
+ } \n\
\n\
- case NOERROR: \n\
- set ddns-rev-name = \n\
- concat (binary-to-ascii (10, 8, \".\", \n\
- reverse (1, \n\
- leased-address)), \".\", \n\
- pick (config-option server.ddns-rev-domainname, \n\
- \"in-addr.arpa.\")); \n\
- switch (ns-update (delete (IN, PTR, ddns-rev-name, null), \n\
- add (IN, PTR, ddns-rev-name, ddns-fwd-name, \n\
- lease-time / 2))) \n\
- { \n\
- default: \n\
- unset ddns-rev-name; \n\
- on release or expiry { \n\
- switch (ns-update (delete (IN, A, ddns-fwd-name, \n\
- leased-address))) { \n\
- case NOERROR: \n\
- unset ddns-fwd-name; \n\
- break; \n\
- } \n\
- on release or expiry; \n\
- } \n\
+ if (not defined (ddns-fwd-name)) { \n\
+ set ddns-fwd-name = new-ddns-fwd-name; \n\
+ if defined (ddns-fwd-name) { \n\
+ switch (ns-update (not exists (IN, A, ddns-fwd-name, null), \n\
+ add (IN, A, ddns-fwd-name, leased-address, \n\
+ lease-time / 2))) { \n\
+ default: \n\
+ unset ddns-fwd-name; \n\
break; \n\
\n\
- case NOERROR: \n\
- on release or expiry { \n\
- switch (ns-update (delete (IN, PTR, ddns-rev-name, null))) { \n\
- case NOERROR: \n\
- unset ddns-rev-name; \n\
- break; \n\
+ case NOERROR: \n\
+ set ddns-rev-name = \n\
+ concat (binary-to-ascii (10, 8, \".\", \n\
+ reverse (1, \n\
+ leased-address)), \".\", \n\
+ pick (config-option server.ddns-rev-domainname, \n\
+ \"in-addr.arpa.\")); \n\
+ switch (ns-update (delete (IN, PTR, ddns-rev-name, null), \n\
+ add (IN, PTR, ddns-rev-name, ddns-fwd-name, \n\
+ lease-time / 2))) \n\
+ { \n\
+ default: \n\
+ unset ddns-rev-name; \n\
+ on release or expiry { \n\
+ switch (ns-update (delete (IN, A, ddns-fwd-name, \n\
+ leased-address))) { \n\
+ case NOERROR: \n\
+ unset ddns-fwd-name; \n\
+ break; \n\
+ } \n\
+ on release or expiry; \n\
+ } \n\
+ break; \n\
+ \n\
+ case NOERROR: \n\
+ on release or expiry { \n\
+ switch (ns-update (delete (IN, PTR, ddns-rev-name, null))) {\n\
+ case NOERROR: \n\
+ unset ddns-rev-name; \n\
+ break; \n\
+ } \n\
+ switch (ns-update (delete (IN, A, ddns-fwd-name, \n\
+ leased-address))) { \n\
+ case NOERROR: \n\
+ unset ddns-fwd-name; \n\
+ break; \n\
+ } \n\
+ on release or expiry; \n\
+ } \n\
} \n\
- switch (ns-update (delete (IN, A, ddns-fwd-name, \n\
- leased-address))) { \n\
- case NOERROR: \n\
- unset ddns-fwd-name; \n\
- break; \n\
- } \n\
- on release or expiry; \n\
- } \n\
- } \n\
+ } \n\
} \n\
} \n\
+ unset new-ddns-fwd-name; \n\
} \n\
}";
+
+int ddns_update_style;
#endif /* NSUPDATE */
const char *path_dhcpd_conf = _PATH_DHCPD_CONF;
@@ -138,6 +165,11 @@
int dhcp_max_agent_option_packet_length = DHCP_MTU_MAX;
static omapi_auth_key_t *omapi_key = (omapi_auth_key_t *)0;
+int omapi_port;
+
+#if defined (TRACING)
+trace_type_t *trace_srandom;
+#endif
static isc_result_t verify_addr (omapi_object_t *l, omapi_addr_t *addr) {
return ISC_R_SUCCESS;
@@ -170,18 +202,18 @@
omapi_object_t *listener;
unsigned seed;
struct interface_info *ip;
- struct data_string db;
- struct option_cache *oc;
- struct option_state *options = (struct option_state *)0;
struct parse *parse;
int lose;
- int omapi_port;
omapi_object_t *auth;
struct tsig_key *key;
omapi_typed_data_t *td;
int no_dhcpd_conf = 0;
int no_dhcpd_db = 0;
int no_dhcpd_pid = 0;
+#if defined (TRACING)
+ char *traceinfile = (char *)0;
+ char *traceoutfile = (char *)0;
+#endif
/* Set up the client classification system. */
classification_setup ();
@@ -192,9 +224,10 @@
log_fatal ("Can't initialize OMAPI: %s",
isc_result_totext (result));
+ /* Set up the OMAPI wrappers for common objects. */
+ dhcp_db_objects_setup ();
/* Set up the OMAPI wrappers for various server database internal
objects. */
- dhcp_db_objects_setup ();
dhcp_common_objects_setup ();
/* Initially, log errors to stderr as well as to syslogd. */
@@ -266,6 +299,20 @@
} else if (!strcmp (argv [i], "-q")) {
quiet = 1;
quiet_interface_discovery = 1;
+ } else if (!strcmp (argv [i], "--version")) {
+ log_info ("isc-dhcpd-%s", DHCP_VERSION);
+ exit (0);
+#if defined (TRACING)
+ } else if (!strcmp (argv [i], "-tf")) {
+ if (++i == argc)
+ usage ();
+ traceoutfile = argv [i];
+ } else if (!strcmp (argv [i], "-play")) {
+ if (++i == argc)
+ usage ();
+ traceinfile = argv [i];
+ trace_replay_init ();
+#endif /* TRACING */
} else if (argv [i][0] == '-') {
usage ();
} else {
@@ -307,17 +354,34 @@
log_perror = 0;
}
+#if defined (TRACING)
+ trace_init (set_time, MDL);
+ if (traceoutfile)
+ trace_begin (traceoutfile, MDL);
+ interface_trace_setup ();
+ parse_trace_setup ();
+ trace_srandom = trace_type_register ("random-seed", (void *)0,
+ trace_seed_input,
+ trace_seed_stop, MDL);
+#endif
+
/* Default to the DHCP/BOOTP port. */
if (!local_port)
{
- ent = getservbyname ("dhcp", "udp");
- if (!ent)
- local_port = htons (67);
- else
- local_port = ent -> s_port;
+ if ((s = getenv ("DHCPD_PORT"))) {
+ local_port = htons (atoi (s));
+ log_debug ("binding to environment-specified port %d",
+ ntohs (local_port));
+ } else {
+ ent = getservbyname ("dhcp", "udp");
+ if (!ent)
+ local_port = htons (67);
+ else
+ local_port = ent -> s_port;
#ifndef __CYGWIN32__ /* XXX */
- endservent ();
+ endservent ();
#endif
+ }
}
remote_port = htons (ntohs (local_port) + 1);
@@ -344,10 +408,18 @@
initialize_common_option_spaces ();
initialize_server_option_spaces ();
Home |
Main Index |
Thread Index |
Old Index