mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-30 05:47:45 +00:00
Support parsing of configuration options in generic blocks.
This commit is contained in:
parent
d970ea7d43
commit
588af26930
@ -22,7 +22,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
"$Id: parse.c,v 1.61 2000/02/01 03:19:39 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||
"$Id: parse.c,v 1.62 2000/02/02 17:10:38 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "dhcpd.h"
|
||||
@ -1451,6 +1451,17 @@ int parse_executable_statement (result, cfile, lose, case_context)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (config_universe && is_identifier (token)) {
|
||||
option = ((struct option *)
|
||||
hash_lookup (config_universe -> hash,
|
||||
(const unsigned char *)val, 0));
|
||||
if (option) {
|
||||
token = next_token (&val, cfile);
|
||||
return parse_option_statement
|
||||
(result, cfile, 1, option,
|
||||
supersede_option_statement);
|
||||
}
|
||||
}
|
||||
*lose = 0;
|
||||
return 0;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
"$Id: tables.c,v 1.35 2000/01/26 14:55:34 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||
"$Id: tables.c,v 1.36 2000/02/02 17:10:39 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "dhcpd.h"
|
||||
@ -829,6 +829,12 @@ struct hash_table universe_hash;
|
||||
struct universe **universes;
|
||||
int universe_count, universe_max;
|
||||
|
||||
/* Universe containing names of configuration options, which, rather than
|
||||
writing "option universe-name.option-name ...;", can be set by writing
|
||||
"option-name ...;". */
|
||||
|
||||
struct universe *config_universe;
|
||||
|
||||
void initialize_common_option_spaces()
|
||||
{
|
||||
int i;
|
||||
|
@ -1422,6 +1422,7 @@ int universe_count, universe_max;
|
||||
struct universe **universes;
|
||||
extern struct hash_table universe_hash;
|
||||
void initialize_common_option_spaces PROTO ((void));
|
||||
struct universe *config_universe;
|
||||
|
||||
/* stables.c */
|
||||
#if defined (FAILOVER_PROTOCOL)
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
"$Id: confpars.c,v 1.100 2000/02/01 03:19:56 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
|
||||
"$Id: confpars.c,v 1.101 2000/02/02 17:10:43 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "dhcpd.h"
|
||||
@ -491,20 +491,6 @@ int parse_statement (cfile, group, type, host_decl, declaration)
|
||||
|
||||
default:
|
||||
et = (struct executable_statement *)0;
|
||||
if (is_identifier (token)) {
|
||||
option = ((struct option *)
|
||||
hash_lookup (server_universe.hash,
|
||||
(const unsigned char *)val, 0));
|
||||
if (option) {
|
||||
token = next_token (&val, cfile);
|
||||
if (!parse_option_statement
|
||||
(&et, cfile, 1, option,
|
||||
supersede_option_statement))
|
||||
return declaration;
|
||||
}
|
||||
}
|
||||
|
||||
if (!et) {
|
||||
lose = 0;
|
||||
if (!parse_executable_statement (&et, cfile, &lose,
|
||||
context_any)) {
|
||||
@ -520,12 +506,6 @@ int parse_statement (cfile, group, type, host_decl, declaration)
|
||||
}
|
||||
return declaration;
|
||||
}
|
||||
}
|
||||
if (!et) {
|
||||
parse_warn (cfile, "expecting a %sdeclaration",
|
||||
declaration ? "" : "parameter or ");
|
||||
return declaration;
|
||||
}
|
||||
insert_statement:
|
||||
if (group -> statements) {
|
||||
int multi = 0;
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
"$Id: stables.c,v 1.5 2000/01/25 01:45:00 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||
"$Id: stables.c,v 1.6 2000/02/02 17:10:43 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "dhcpd.h"
|
||||
@ -733,4 +733,7 @@ void initialize_server_option_spaces()
|
||||
add_hash (&universe_hash,
|
||||
(const unsigned char *)server_universe.name, 0,
|
||||
(unsigned char *)&server_universe);
|
||||
|
||||
/* Make the server universe the configuration option universe. */
|
||||
config_universe = &server_universe;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user