2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-08-31 22:35:25 +00:00

- A bug was fixed that caused the 'conflict-done' state to fail to be parsed

in failover state records.  [ISC-Bugs #19739]
This commit is contained in:
David Hankins
2009-06-17 21:42:04 +00:00
parent a41d7a251e
commit 792156a904
4 changed files with 68 additions and 38 deletions

View File

@@ -134,6 +134,9 @@ work on other platforms. Please report any problems and suggested fixes to
failover connect yet (e.g.: connection refused, asynch socket connect() failover connect yet (e.g.: connection refused, asynch socket connect()
timeouts). timeouts).
- A bug was fixed that caused the 'conflict-done' state to fail to be parsed
in failover state records.
Changes since 4.1.0b1 Changes since 4.1.0b1
- A missing "else" in dhcrelay.c could have caused an interface not to - A missing "else" in dhcrelay.c could have caused an interface not to

View File

@@ -778,47 +778,70 @@ intern(char *atom, enum dhcp_token dfv) {
return BOUND; return BOUND;
break; break;
case 'c': case 'c':
if (!strcasecmp (atom + 1, "ase")) if (!strcasecmp(atom + 1, "ase"))
return CASE; return CASE;
if (!strcasecmp (atom + 1, "ommit")) if (!strcasecmp(atom + 1, "heck"))
return COMMIT;
if (!strcasecmp (atom + 1, "ode"))
return CODE;
if (!strcasecmp (atom + 1, "onfig-option"))
return CONFIG_OPTION;
if (!strcasecmp (atom + 1, "heck"))
return CHECK; return CHECK;
if (!strcasecmp (atom + 1, "lass")) if (!strcasecmp(atom + 1, "iaddr"))
return CLASS;
if (!strcasecmp (atom + 1, "lose"))
return TOKEN_CLOSE;
if (!strcasecmp(atom + 1, "ompressed"))
return COMPRESSED;
if (!strcasecmp (atom + 1, "reate"))
return TOKEN_CREATE;
if (!strcasecmp (atom + 1, "iaddr"))
return CIADDR; return CIADDR;
if (!strncasecmp (atom + 1, "lient", 5)) { if (isascii(atom[1]) &&
if (!strcasecmp (atom + 6, "-identifier")) tolower((unsigned char)atom[1]) == 'l') {
return CLIENT_IDENTIFIER; if (!strcasecmp(atom + 2, "ass"))
if (!strcasecmp (atom + 6, "-hostname")) return CLASS;
return CLIENT_HOSTNAME; if (!strncasecmp(atom + 2, "ient", 4)) {
if (!strcasecmp (atom + 6, "-state")) if (!strcasecmp(atom + 6, "s"))
return CLIENT_STATE;
if (!strcasecmp (atom + 6, "-updates"))
return CLIENT_UPDATES;
if (!strcasecmp (atom + 6, "s"))
return CLIENTS; return CLIENTS;
if (atom[7] == '-') {
if (!strcasecmp(atom + 7, "hostname"))
return CLIENT_HOSTNAME;
if (!strcasecmp(atom + 7, "identifier"))
return CLIENT_IDENTIFIER;
if (!strcasecmp(atom + 7, "state"))
return CLIENT_STATE;
if (!strcasecmp(atom + 7, "updates"))
return CLIENT_UPDATES;
break;
} }
if (!strcasecmp (atom + 1, "oncat")) break;
return CONCAT; }
if (!strcasecmp (atom + 1, "onnect")) if (!strcasecmp(atom + 2, "ose"))
return CONNECT; return TOKEN_CLOSE;
if (!strcasecmp (atom + 1, "ommunications-interrupted")) if (!strcasecmp(atom + 2, "tt"))
return COMMUNICATIONS_INTERRUPTED;
if (!strcasecmp (atom + 1, "ltt"))
return CLTT; return CLTT;
break; break;
}
if (isascii(atom[1]) &&
tolower((unsigned char)atom[1]) == 'o') {
if (!strcasecmp(atom + 2, "de"))
return CODE;
if (isascii(atom[2]) &&
tolower((unsigned char)atom[2]) == 'm') {
if (!strcasecmp(atom + 3, "mit"))
return COMMIT;
if (!strcasecmp(atom + 3,
"munications-interrupted"))
return COMMUNICATIONS_INTERRUPTED;
if (!strcasecmp(atom + 3, "pressed"))
return COMPRESSED;
break;
}
if (isascii(atom[2]) &&
tolower((unsigned char)atom[2]) == 'n') {
if (!strcasecmp(atom + 3, "cat"))
return CONCAT;
if (!strcasecmp(atom + 3, "fig-option"))
return CONFIG_OPTION;
if (!strcasecmp(atom + 3, "flict-done"))
return CONFLICT_DONE;
if (!strcasecmp(atom + 3, "nect"))
return CONNECT;
break;
}
break;
}
if (!strcasecmp(atom + 1, "reate"))
return TOKEN_CREATE;
break;
case 'd': case 'd':
if (!strcasecmp(atom + 1, "b-time-format")) if (!strcasecmp(atom + 1, "b-time-format"))
return DB_TIME_FORMAT; return DB_TIME_FORMAT;

View File

@@ -353,8 +353,8 @@ enum dhcp_token {
TEMPORARY = 656, TEMPORARY = 656,
PREFIX6 = 657, PREFIX6 = 657,
FIXED_PREFIX6 = 658, FIXED_PREFIX6 = 658,
ANYCAST_MAC = 659 ANYCAST_MAC = 659,
CONFLICT_DONE = 660
}; };
#define is_identifier(x) ((x) >= FIRST_TOKEN && \ #define is_identifier(x) ((x) >= FIRST_TOKEN && \

View File

@@ -1315,6 +1315,10 @@ void parse_failover_state (cfile, state, stos)
state_in = communications_interrupted; state_in = communications_interrupted;
break; break;
case CONFLICT_DONE:
state_in = conflict_done;
break;
case RESOLUTION_INTERRUPTED: case RESOLUTION_INTERRUPTED:
state_in = resolution_interrupted; state_in = resolution_interrupted;
break; break;