]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Merge branch 'trac5031' (hooks-libraries parser migrated)
authorTomek Mrugalski <tomasz@isc.org>
Thu, 12 Jan 2017 12:49:58 +0000 (13:49 +0100)
committerTomek Mrugalski <tomasz@isc.org>
Thu, 12 Jan 2017 12:49:58 +0000 (13:49 +0100)
# Conflicts:
# src/bin/dhcp4/json_config_parser.cc
# src/bin/dhcp6/json_config_parser.cc

1  2 
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp6/json_config_parser.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.h
src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc

index c710f0b67435cd0880665eea67074a229fef37e1,bd056111746c3df256b41a0495eb740424c17504..bd78f531f2a7d4638517a7699d8a8c9c3c3707a0
@@@ -635,33 -595,12 +634,39 @@@ configureDhcp4Server(Dhcpv4Srv&, isc::d
                  continue;
              }
  
 -
 +            if (config_pair.first == "control-socket") {
 +                ControlSocketParser parser;
 +                SrvConfigPtr srv_cfg = CfgMgr::instance().getStagingCfg();
 +                parser.parse(*srv_cfg, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "host-reservation-identifiers") {
 +                HostReservationIdsParser4 parser;
 +                parser.parse(config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "interfaces-config") {
 +                IfacesConfigParser parser(AF_INET);
 +                CfgIfacePtr cfg_iface = CfgMgr::instance().getStagingCfg()->getCfgIface();
 +                parser.parse(cfg_iface, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "expired-leases-processing") {
 +                ExpirationConfigParser parser;
 +                parser.parse(config_pair.second);
 +                continue;
 +            }
 +
+             if (config_pair.first == "hooks-libraries") {
+                 hooks_parser.parse(config_pair.second);
+                 hooks_parser.verifyLibraries();
+                 continue;
+             }
++            
 +            // Legacy DhcpConfigParser stuff below
              ParserPtr parser(createGlobalDhcp4ConfigParser(config_pair.first,
                                                             config_pair.second));
              LOG_DEBUG(dhcp4_logger, DBG_DHCP4_DETAIL, DHCP4_PARSER_CREATED)
                  subnet_parser = parser;
              } else if (config_pair.first == "lease-database") {
                  leases_parser = parser;
-             } else if (config_pair.first == "hooks-libraries") {
-                 // Executing commit will alter currently-loaded hooks
-                 // libraries.  Check if the supplied libraries are valid,
-                 // but defer the commit until everything else has committed.
-                 hooks_parser = parser;
 -            } else if (config_pair.first == "interfaces-config") {
 -                // The interface parser is independent from any other
 -                // parser and can be run here before any other parsers.
 -                iface_parser = parser;
--                parser->build(config_pair.second);
              } else if (config_pair.first == "client-classes") {
                  client_classes_parser = parser;
              } else {
index 68af31fd3744e213a5294df8654a89ce017e6765,087c05acf3f78765cb6b8d0f4449817cacf38645..a038682438ac2a8d3836903fbeafe1c6c4b277ff
@@@ -709,19 -714,24 +709,18 @@@ DhcpConfigParser* createGlobal6DhcpConf
          parser = new DbAccessParser(config_id, DbAccessParser::LEASE_DB);
      } else if (config_id.compare("hosts-database") == 0) {
          parser = new DbAccessParser(config_id, DbAccessParser::HOSTS_DB);
-     } else if (config_id.compare("hooks-libraries") == 0) {
-         parser = new HooksLibrariesParser(config_id);
+     // hooks-libraries is now converted to SimpleParser.
      } else if (config_id.compare("dhcp-ddns") == 0) {
          parser = new D2ClientConfigParser(config_id);
 -    } else if (config_id.compare("mac-sources") == 0) {
 -        parser = new MACSourcesListConfigParser(config_id,
 -                                                globalContext());
 +    // mac-source has been converted to SimpleParser.
      } else if (config_id.compare("relay-supplied-options") == 0) {
          parser = new RSOOListConfigParser(config_id);
 -    } else if (config_id.compare("control-socket") == 0) {
 -        parser = new ControlSocketParser(config_id);
 -    } else if (config_id.compare("expired-leases-processing") == 0) {
 -        parser = new ExpirationConfigParser();
 +    // control-socket has been converted to SimpleParser.
 +    // expired-leases-processing has been converted to SimpleParser.
      } else if (config_id.compare("client-classes") == 0) {
          parser = new ClientClassDefListParser(config_id, globalContext());
 -    } else if (config_id.compare("server-id") == 0) {
 -        parser = new DUIDConfigParser();
 -    } else if (config_id.compare("host-reservation-identifiers") == 0) {
 -        parser = new HostReservationIdsParser6();
 +    // host-reservation-identifiers have been converted to SimpleParser already.
 +    // server-id has been migrated to SimpleParser
      } else {
          isc_throw(DhcpConfigError,
                  "unsupported global configuration parameter: "
@@@ -904,46 -869,12 +903,52 @@@ configureDhcp6Server(Dhcpv6Srv&, isc::d
                  continue;
              }
  
 +            if (config_pair.first == "mac-sources") {
 +                MACSourcesListConfigParser parser;
 +                CfgMACSource& mac_source = CfgMgr::instance().getStagingCfg()->getMACSources();
 +                parser.parse(mac_source, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "control-socket") {
 +                ControlSocketParser parser;
 +                SrvConfigPtr srv_config = CfgMgr::instance().getStagingCfg();
 +                parser.parse(*srv_config, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "host-reservation-identifiers") {
 +                HostReservationIdsParser6 parser;
 +                parser.parse(config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "server-id") {
 +                DUIDConfigParser parser;
 +                const CfgDUIDPtr& cfg = CfgMgr::instance().getStagingCfg()->getCfgDUID();
 +                parser.parse(cfg, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "interfaces-config") {
 +                IfacesConfigParser parser(AF_INET6);
 +                CfgIfacePtr cfg_iface = CfgMgr::instance().getStagingCfg()->getCfgIface();
 +                parser.parse(cfg_iface, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "expired-leases-processing") {
 +                ExpirationConfigParser parser;
 +                parser.parse(config_pair.second);
 +                continue;
 +            }
 +
+             if (config_pair.first == "hooks-libraries") {
+                 hooks_parser.parse(config_pair.second);
+                 hooks_parser.verifyLibraries();
+                 continue;
+             }
              ParserPtr parser(createGlobal6DhcpConfigParser(config_pair.first,
                                                             config_pair.second));
              LOG_DEBUG(dhcp6_logger, DBG_DHCP6_DETAIL, DHCP6_PARSER_CREATED)
                  subnet_parser = parser;
              } else if (config_pair.first == "lease-database") {
                  leases_parser = parser;
-             } else if (config_pair.first == "hooks-libraries") {
-                 // Executing the commit will alter currently loaded hooks
-                 // libraries. Check if the supplied libraries are valid,
-                 // but defer the commit until after everything else has
-                 // committed.
-                 hooks_parser = parser;
-                 hooks_parser->build(config_pair.second);
 -            } else if (config_pair.first == "interfaces-config") {
 -                // The interface parser is independent from any other parser and
 -                // can be run here before other parsers.
 -                parser->build(config_pair.second);
 -                iface_parser = parser;
              } else if (config_pair.first == "client-classes") {
                  client_classes_parser = parser;
              } else {