]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Support parsing of configuration options in generic blocks.
authorTed Lemon <source@isc.org>
Wed, 2 Feb 2000 17:10:43 +0000 (17:10 +0000)
committerTed Lemon <source@isc.org>
Wed, 2 Feb 2000 17:10:43 +0000 (17:10 +0000)
common/parse.c
common/tables.c
includes/dhcpd.h
server/confpars.c
server/stables.c

index 38dea858f628aa384d1025a4d1e3338bf079fadf..e0535935213b94581e72a207ddd1bcac63015946 100644 (file)
@@ -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;
        }
index e70bf0875930f49bf595a5a38d1982d4fb1329ad..965ebb763c829e262648ecdb0ae16a2a16b33803 100644 (file)
@@ -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;
index f105e90f07725c77627f998783c9030237767983..5657528116db27dd1d023f1af94f293d23883740 100644 (file)
@@ -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)
index 0bd2effbbce2acec19baf96133db5daf6c3db307..cc53064024a460dd5dbb0f4f7a3acb9d8b4c2f3c 100644 (file)
@@ -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,39 +491,19 @@ 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)) {
-                               if (!lose) {
-                                   if (declaration)
+               lose = 0;
+               if (!parse_executable_statement (&et, cfile, &lose,
+                                                context_any)) {
+                       if (!lose) {
+                               if (declaration)
                                        parse_warn (cfile,
                                                    "expecting a declaration");
-                                   else
+                               else
                                        parse_warn (cfile,
                                                    "expecting a parameter %s",
                                                    "or declaration");
-                                       skip_to_semi (cfile);
-                               }
-                               return declaration;
+                               skip_to_semi (cfile);
                        }
-               }
-               if (!et) {
-                       parse_warn (cfile, "expecting a %sdeclaration",
-                                   declaration ? "" :  "parameter or ");
                        return declaration;
                }
              insert_statement:
index b429892e47127d0625a426877e924e329c5efb5a..42f3f27d331516534ff39e38b698404b175154f2 100644 (file)
@@ -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;
 }