cfg_rsoo.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright (C) 2015 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. #ifndef CFG_RSOO_H
  7. #define CFG_RSOO_H
  8. #include <boost/shared_ptr.hpp>
  9. #include <stdint.h>
  10. #include <set>
  11. namespace isc {
  12. namespace dhcp {
  13. /// @brief Represents configuration of the RSOO options for the DHCP server.
  14. ///
  15. /// This class holds the set of RSOO-enabled options (see RFC6422). The list
  16. /// of RSOO-enabled options is maintained by IANA and currently the option
  17. /// 65 is officially RSSO-enabled. The list may be extended in the future
  18. /// and this class allows for specifying any future RSOO-enabled options.
  19. /// The administrator may also use existing options as RSOO-enabled.
  20. class CfgRSOO {
  21. public:
  22. /// @brief Constructor.
  23. ///
  24. /// It adds the default (officially) RSOO-enabled options:
  25. /// - OPTION_ERP_LOCAL_DOMAIN_NAME
  26. CfgRSOO();
  27. /// @brief Removes designation of all options as RSOO_enabled.
  28. ///
  29. /// This method removes all designations of all options as being RSOO-enabled.
  30. void clear();
  31. /// @brief Returns whether specific option code is RSOO-enabled.
  32. ///
  33. /// @param code Option code to check
  34. /// @return true, if it is allowed in Relay-Supplied Options option
  35. bool enabled(const uint16_t code) const;
  36. /// @brief Marks specified option code as RSOO-enabled.
  37. ///
  38. /// @param code option to be enabled in RSOO
  39. void enable(const uint16_t code);
  40. private:
  41. /// @brief Contains a set of options that are allowed in RSOO option
  42. ///
  43. /// RSOO stands for Relay-Supplied Options option. This is an option that
  44. /// is inserted by the relay agent with the intention that the server will
  45. /// echo those options back to the client. Only those options marked as
  46. /// RSOO-enabled may appear in the RSOO. Currently only option 65 is marked
  47. /// as such, but more options may be added in the future. See RFC6422 for details.
  48. std::set<uint16_t> rsoo_options_;
  49. };
  50. /// @name Pointers to the @c CfgRSOO objects.
  51. //@{
  52. /// @brief Pointer to the Non-const object.
  53. typedef boost::shared_ptr<CfgRSOO> CfgRSOOPtr;
  54. /// @brief Pointer to the const object.
  55. typedef boost::shared_ptr<const CfgRSOO> ConstCfgRSOOPtr;
  56. //@}
  57. }
  58. }
  59. #endif // CFG_RSOO_H