From: Ted Lemon Date: Thu, 31 Aug 2000 04:39:41 +0000 (+0000) Subject: Update failover state keywords. X-Git-Tag: V3-BETA-2-PATCH-1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=058159169d22c87bc948efcc0c2c845c6e610e02;p=thirdparty%2Fdhcp.git Update failover state keywords. --- diff --git a/common/conflex.c b/common/conflex.c index a06e2e490..7eba98a96 100644 --- a/common/conflex.c +++ b/common/conflex.c @@ -43,7 +43,7 @@ #ifndef lint static char copyright[] = -"$Id: conflex.c,v 1.80 2000/08/28 19:36:27 neild Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n"; +"$Id: conflex.c,v 1.81 2000/08/31 04:36:34 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -844,6 +844,8 @@ static enum dhcp_token intern (atom, dfv) if (!strcasecmp (atom + 1, "ick-first-value") || !strcasecmp (atom + 1, "ick")) return PICK; + if (!strcasecmp (atom + 1, "aused")) + return PAUSED; break; case 'r': if (!strcasecmp (atom + 1, "esolution-interrupted")) @@ -852,6 +854,8 @@ static enum dhcp_token intern (atom, dfv) return RANGE; if (!strcasecmp (atom + 1, "ecover")) return RECOVER; + if (!strcasecmp (atom + 1, "ecover-done")) + return RECOVER_DONE; if (!strcasecmp (atom + 1, "equest")) return REQUEST; if (!strcasecmp (atom + 1, "equire")) @@ -941,6 +945,10 @@ static enum dhcp_token intern (atom, dfv) return TOKEN_SET; if (!strcasecmp (atom + 1, "econds")) return SECONDS; + if (!strcasecmp (atom + 1, "hutdown")) + return SHUTDOWN; + if (!strcasecmp (atom + 1, "tartup")) + return STARTUP; break; case 't': if (!strcasecmp (atom + 1, "imestamp")) diff --git a/server/confpars.c b/server/confpars.c index 219eab4dd..8bf24d863 100644 --- a/server/confpars.c +++ b/server/confpars.c @@ -43,7 +43,7 @@ #ifndef lint static char copyright[] = -"$Id: confpars.c,v 1.123 2000/08/24 18:46:31 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n"; +"$Id: confpars.c,v 1.124 2000/08/31 04:39:41 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -584,12 +584,6 @@ int parse_statement (cfile, group, type, host_decl, declaration) return declaration; } - if (declaration) { - parse_warn (cfile, - "parameters not allowed after first declaration."); - return 1; - } - return 0; } @@ -610,8 +604,7 @@ void parse_failover_peer (cfile, group, type) int i; struct expression *expr; isc_result_t status; - struct option_cache **paddr; - int *pport; + dhcp_failover_config_t *cp; token = next_token (&val, cfile); if (token != PEER) { @@ -685,12 +678,14 @@ void parse_failover_peer (cfile, group, type) peer -> name = name; /* Set the initial state. */ - peer -> my_state = potential_conflict; - peer -> my_stos = cur_time; - peer -> partner_state = unknown_state; - peer -> partner_stos = cur_time; + 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: token = next_token (&val, cfile); switch (token) { case RBRACE: @@ -709,54 +704,33 @@ void parse_failover_peer (cfile, group, type) break; case PEER: - token = next_token (&val, cfile); - switch (token) { - case ADDRESS: - paddr = &peer -> address; - goto doaddr; - case PORT: - pport = &peer -> port; - goto doport; - default: - parse_warn (cfile, - "expecting 'address' or 'port'"); - skip_to_rbrace (cfile, 1); - dhcp_failover_state_dereference (&peer, MDL); - return; - } - break; + cp = &peer -> partner; + goto peer; case ADDRESS: - paddr = &peer -> server_addr; - doaddr: expr = (struct expression *)0; if (!parse_ip_addr_or_hostname (&expr, cfile, 0)) { skip_to_rbrace (cfile, 1); dhcp_failover_state_dereference (&peer, MDL); return; } - option_cache (paddr, (struct data_string *)0, expr, + option_cache (&cp -> address, + (struct data_string *)0, expr, (struct option *)0); expression_dereference (&expr, MDL); break; case PORT: - pport = &peer -> listen_port; - doport: token = next_token (&val, cfile); if (token != NUMBER) { parse_warn (cfile, "expecting number"); skip_to_rbrace (cfile, 1); } - *pport = atoi (val); + cp -> port = atoi (val); break; - case MAX_TRANSMIT_IDLE: - tp = &peer -> max_transmit_idle; - goto parse_idle; - case MAX_RESPONSE_DELAY: - tp = &peer -> max_response_delay; + tp = &cp -> max_response_delay; parse_idle: token = next_token (&val, cfile); if (token != NUMBER) { @@ -769,7 +743,7 @@ void parse_failover_peer (cfile, group, type) break; case MAX_UNACKED_UPDATES: - tp = &peer -> max_flying_updates; + tp = &cp -> max_flying_updates; goto parse_idle; case MCLT: @@ -893,6 +867,7 @@ void parse_failover_state_declaration (struct parse *cfile, const char *val; char *name; dhcp_failover_state_t *state; + dhcp_failover_config_t *cp; if (!peer) { token = next_token (&val, cfile); @@ -949,25 +924,21 @@ void parse_failover_state_declaration (struct parse *cfile, case RBRACE: break; case MY: + cp = &state -> me; + do_state: token = next_token (&val, cfile); if (token != STATE) { parse_warn (cfile, "expecting 'state'"); goto bogus; } parse_failover_state (cfile, - &state -> my_state, - &state -> my_stos); + &cp -> state, &cp -> stos); break; + case PARTNER: - token = next_token (&val, cfile); - if (token != STATE) { - parse_warn (cfile, "expecting 'state'"); - goto bogus; - } - parse_failover_state (cfile, - &state -> partner_state, - &state -> partner_stos); - break; + cp = &state -> partner; + goto do_state; + default: bogus: parse_warn (cfile, "expecting state setting."); @@ -991,6 +962,10 @@ void parse_failover_state (cfile, state, stos) token = next_token (&val, cfile); switch (token) { + case UNKNOWN_STATE: + state_in = unknown_state; + break; + case PARTNER_DOWN: state_in = partner_down; break; @@ -1003,20 +978,32 @@ void parse_failover_state (cfile, state, stos) state_in = communications_interrupted; break; - case POTENTIAL_CONFLICT: - state_in = potential_conflict; - break; - case RESOLUTION_INTERRUPTED: state_in = resolution_interrupted; break; + case POTENTIAL_CONFLICT: + state_in = potential_conflict; + break; + case RECOVER: state_in = recover; break; - case UNKNOWN_STATE: - state_in = unknown_state; + case RECOVER_DONE: + state_in = recover_done; + break; + + case SHUTDOWN: + state_in = shut_down; + break; + + case PAUSED: + state_in = paused; + break; + + case STARTUP: + state_in = startup; break; default: