summaryrefslogtreecommitdiff
path: root/server/confpars.c
diff options
context:
space:
mode:
authorTed Lemon <source@isc.org>2001-04-16 22:25:04 +0000
committerTed Lemon <source@isc.org>2001-04-16 22:25:04 +0000
commit6f8a0361b49a37123c0d5b118ad005df6c71046b (patch)
tree9b6420426daa2151db27b403b68908b40b90bb40 /server/confpars.c
parent8206384cd8026eb48bdd790a0d3c1b84fb810e7d (diff)
downloadisc-dhcp-6f8a0361b49a37123c0d5b118ad005df6c71046b.tar.gz
- Default tstp if none is specified.
- Default initial state to recover instead of potential_conflict. - Allow star-time-of-state to be left unspecified.
Diffstat (limited to 'server/confpars.c')
-rw-r--r--server/confpars.c51
1 files changed, 33 insertions, 18 deletions
diff --git a/server/confpars.c b/server/confpars.c
index 7e76d754..68010d29 100644
--- a/server/confpars.c
+++ b/server/confpars.c
@@ -43,7 +43,7 @@
#ifndef lint
static char copyright[] =
-"$Id: confpars.c,v 1.138 2001/04/06 05:52:19 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n";
+"$Id: confpars.c,v 1.139 2001/04/16 22:25:04 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@@ -807,12 +807,6 @@ void parse_failover_peer (cfile, group, type)
/* Save the name. */
peer -> name = name;
- /* Set the initial state. */
- peer -> me.state = potential_conflict;
- peer -> me.stos = cur_time;
- peer -> partner.state = unknown_state;
- peer -> partner.stos = cur_time;
-
do {
cp = &peer -> me;
peer:
@@ -981,6 +975,20 @@ void parse_failover_peer (cfile, group, type)
if (type == SHARED_NET_DECL) {
group -> shared_network -> failover_peer = peer;
}
+
+ /* Set the initial state. */
+ if (peer -> i_am == primary) {
+ peer -> me.state = recover;
+ peer -> me.stos = cur_time;
+ peer -> partner.state = unknown_state;
+ peer -> partner.stos = cur_time;
+ } else {
+ peer -> me.state = recover;
+ peer -> me.stos = cur_time;
+ peer -> partner.state = unknown_state;
+ peer -> partner.stos = cur_time;
+ }
+
status = enter_failover_peer (peer);
if (status != ISC_R_SUCCESS)
parse_warn (cfile, "failover peer %s: %s",
@@ -1141,19 +1149,23 @@ void parse_failover_state (cfile, state, stos)
}
token = next_token (&val, (unsigned *)0, cfile);
- if (token != AT) {
- parse_warn (cfile, "expecting \"at\"");
- skip_to_semi (cfile);
- return;
+ if (token == SEMI) {
+ stos_in = cur_time;
+ } else {
+ if (token != AT) {
+ parse_warn (cfile, "expecting \"at\"");
+ skip_to_semi (cfile);
+ return;
+ }
+
+ stos_in = parse_date (cfile);
+ if (!stos_in)
+ return;
}
- stos_in = parse_date (cfile);
- if (!stos_in)
- return;
-
- /* Now that we've apparently gotten a clean parse, we can trust
- that this is a state that was fully committed to disk, so
- we can install it. */
+ /* Now that we've apparently gotten a clean parse, we
+ can trust that this is a state that was fully committed to
+ disk, so we can install it. */
*stos = stos_in;
*state = state_in;
}
@@ -2898,6 +2910,9 @@ int parse_lease_declaration (struct lease **lp, struct parse *cfile)
lease -> next_binding_state = lease -> binding_state;
}
+ if (!(seenmask & 65536))
+ lease -> tstp = lease -> ends;
+
lease_reference (lp, lease, MDL);
lease_dereference (&lease, MDL);
return 1;