12 #include <boost/pointer_cast.hpp> 21 CommandCreator::createDHCPDisable(
const unsigned int max_period,
27 args->set(
"max-period",
Element::create(static_cast<long int>(max_period)));
30 insertService(command, server_type);
35 CommandCreator::createDHCPEnable(
const HAServerType& server_type) {
37 insertService(command, server_type);
44 insertService(command, server_type);
49 CommandCreator::createLease4Update(
const Lease4& lease4) {
51 insertLeaseExpireTime(lease_as_json);
54 insertService(command, HAServerType::DHCPv4);
59 CommandCreator::createLease4Delete(
const Lease4& lease4) {
61 insertLeaseExpireTime(lease_as_json);
63 insertService(command, HAServerType::DHCPv4);
68 CommandCreator::createLease4GetAll() {
70 insertService(command, HAServerType::DHCPv4);
75 CommandCreator::createLease4GetPage(
const Lease4Ptr& last_lease4,
76 const uint32_t limit) {
90 args->set(
"from", from_element);
91 args->set(
"limit", limit_element);
95 insertService(command, HAServerType::DHCPv4);
100 CommandCreator::createLease6Update(
const Lease6& lease6) {
102 insertLeaseExpireTime(lease_as_json);
105 insertService(command, HAServerType::DHCPv6);
110 CommandCreator::createLease6Delete(
const Lease6& lease6) {
112 insertLeaseExpireTime(lease_as_json);
114 insertService(command, HAServerType::DHCPv6);
119 CommandCreator::createLease6GetAll() {
121 insertService(command, HAServerType::DHCPv6);
126 CommandCreator::createLease6GetPage(
const Lease6Ptr& last_lease6,
127 const uint32_t limit) {
141 args->set(
"from", from_element);
142 args->set(
"limit", limit_element);
146 insertService(command, HAServerType::DHCPv6);
151 CommandCreator::insertLeaseExpireTime(
ElementPtr& lease) {
153 (!lease->contains(
"cltt") || (lease->get(
"cltt")->getType() !=
Element::integer) ||
154 (!lease->contains(
"valid-lft") ||
159 int64_t cltt = lease->get(
"cltt")->intValue();
160 int64_t valid_lifetime = lease->get(
"valid-lft")->intValue();
161 int64_t expire = cltt + valid_lifetime;
163 lease->remove(
"cltt");
170 const std::string service_name = (server_type == HAServerType::DHCPv4 ?
"dhcp4" :
"dhcp6");
178 (boost::const_pointer_cast<Element>(command))->set(
"service", service);
Structure that holds a lease for IPv4 address.
virtual isc::data::ElementPtr toElement() const
Return the JSON representation of a lease.
boost::shared_ptr< Element > ElementPtr
HAServerType
Lists possible server types for which HA service is created.
static ElementPtr createMap(const Position &pos=ZERO_POSITION())
Creates an empty MapElement type ElementPtr.
static ElementPtr createList(const Position &pos=ZERO_POSITION())
Creates an empty ListElement type ElementPtr.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
ConstElementPtr createCommand(const std::string &command)
Creates a standard command message with no argument (of the form { "command": "my_command" })
A generic exception that is thrown when an unexpected error condition occurs.
boost::shared_ptr< const Element > ConstElementPtr
Structure that holds a lease for IPv6 address and/or prefix.
virtual isc::data::ElementPtr toElement() const
Return the JSON representation of a lease.
Defines the logger used by the top-level component of kea-dhcp-ddns.
This file contains several functions and constants that are used for handling commands and responses ...
static ElementPtr create(const Position &pos=ZERO_POSITION())
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.