diff --git a/common/conflex.c b/common/conflex.c index 34857e0f..e504a50c 100644 --- a/common/conflex.c +++ b/common/conflex.c @@ -22,7 +22,7 @@ #ifndef lint static char copyright[] = -"$Id: conflex.c,v 1.52 1999/08/01 14:26:48 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n"; +"$Id: conflex.c,v 1.53 1999/09/08 01:45:34 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -495,6 +495,8 @@ static enum dhcp_token intern (atom, dfv) case 'i': if (!strcasecmp (atom + 1, "nteger")) return INTEGER; + if (!strcasecmp (atom + 1, "nfinite")) + return INFINITE; if (!strcasecmp (atom + 1, "p-address")) return IP_ADDRESS; if (!strcasecmp (atom + 1, "nitial-interval")) @@ -557,6 +559,8 @@ static enum dhcp_token intern (atom, dfv) return NAMESERVER; if (!strcasecmp (atom + 1, "etmask")) return NETMASK; + if (!strcasecmp (atom + 1, "ever")) + return NEVER; if (!strcasecmp (atom + 1, "ext-server")) return NEXT_SERVER; if (!strcasecmp (atom + 1, "ot")) diff --git a/common/parse.c b/common/parse.c index 20806fd7..d43c4190 100644 --- a/common/parse.c +++ b/common/parse.c @@ -22,7 +22,7 @@ #ifndef lint static char copyright[] = -"$Id: parse.c,v 1.36 1999/08/01 14:26:49 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n"; +"$Id: parse.c,v 1.37 1999/09/08 01:45:29 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -536,6 +536,7 @@ void convert_num (buf, str, base, size) * NUMBER COLON NUMBER COLON NUMBER SEMI | * NUMBER NUMBER SLASH NUMBER SLASH NUMBER * NUMBER COLON NUMBER COLON NUMBER NUMBER SEMI | + * NEVER * * Dates are stored in GMT or with a timezone offset; first number is day * of week; next is year/month/day; next is hours:minutes:seconds on a @@ -554,8 +555,14 @@ TIME parse_date (cfile) static int months [11] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; - /* Day of week... */ + /* Day of week, or "never"... */ token = next_token (&val, cfile); + if (token == NEVER) { + if (!parse_semi (cfile)) + return 0; + return MAX_TIME; + } + if (token != NUMBER) { parse_warn ("numeric day of week expected."); if (token != SEMI) diff --git a/includes/dhctoken.h b/includes/dhctoken.h index fd7820ad..8927d7cd 100644 --- a/includes/dhctoken.h +++ b/includes/dhctoken.h @@ -194,6 +194,8 @@ enum dhcp_token { DNS_UPDATE = 412, LEASE_TIME = 413, STATIC = 414, + NEVER = 415, + INFINITE = 416, }; #define is_identifier(x) ((x) >= FIRST_TOKEN && \