expiration_config_parser.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright (C) 2015,2017 Internet Systems Consortium, Inc. ("ISC")
  2. //
  3. // This Source Code Form is subject to the terms of the Mozilla Public
  4. // License, v. 2.0. If a copy of the MPL was not distributed with this
  5. // file, You can obtain one at http://mozilla.org/MPL/2.0/.
  6. #include <cc/data.h>
  7. #include <dhcpsrv/cfg_expiration.h>
  8. #include <dhcpsrv/cfgmgr.h>
  9. #include <dhcpsrv/parsers/expiration_config_parser.h>
  10. #include <dhcpsrv/parsers/dhcp_parsers.h>
  11. #include <boost/foreach.hpp>
  12. using namespace isc::data;
  13. namespace isc {
  14. namespace dhcp {
  15. void
  16. ExpirationConfigParser::parse(ConstElementPtr expiration_config) {
  17. CfgExpirationPtr cfg = CfgMgr::instance().getStagingCfg()->getCfgExpiration();
  18. std::string param;
  19. try {
  20. param = "reclaim-timer-wait-time";
  21. if (expiration_config->contains(param)) {
  22. cfg->setReclaimTimerWaitTime(getInteger(expiration_config, param));
  23. }
  24. param = "flush-reclaimed-timer-wait-time";
  25. if (expiration_config->contains(param)) {
  26. cfg->setFlushReclaimedTimerWaitTime(getInteger(expiration_config,
  27. param));
  28. }
  29. param = "hold-reclaimed-time";
  30. if (expiration_config->contains(param)) {
  31. cfg->setHoldReclaimedTime(getInteger(expiration_config, param));
  32. }
  33. param = "max-reclaim-leases";
  34. if (expiration_config->contains(param)) {
  35. cfg->setMaxReclaimLeases(getInteger(expiration_config, param));
  36. }
  37. param = "max-reclaim-time";
  38. if (expiration_config->contains(param)) {
  39. cfg->setMaxReclaimTime(getInteger(expiration_config, param));
  40. }
  41. param = "unwarned-reclaim-cycles";
  42. if (expiration_config->contains(param)) {
  43. cfg->setUnwarnedReclaimCycles(
  44. getInteger(expiration_config, param));
  45. }
  46. } catch (const DhcpConfigError&) {
  47. throw;
  48. } catch (const std::exception& ex) {
  49. // Append position of the configuration parameter to the error message.
  50. isc_throw(DhcpConfigError, ex.what() << " ("
  51. << getPosition(param, expiration_config) << ")");
  52. }
  53. }
  54. } // end of namespace isc::dhcp
  55. } // end of namespace isc