Kea  1.9.9-git
isc::lease_cmds::LeaseCmds Class Reference

Implements the logic for processing commands pertaining to lease manipulation. More...

#include <lease_cmds.h>

Public Member Functions

 LeaseCmds ()
 Constructor. More...
 
int lease4DelHandler (hooks::CalloutHandle &handle)
 lease4-del command handler More...
 
int lease4ResendDdnsHandler (hooks::CalloutHandle &handle)
 lease4-resend-ddns command handler More...
 
int lease4UpdateHandler (hooks::CalloutHandle &handle)
 lease4-update handler More...
 
int lease4WipeHandler (hooks::CalloutHandle &handle)
 lease4-wipe handler More...
 
int lease6BulkApplyHandler (hooks::CalloutHandle &handle)
 lease6-bulk-apply command handler More...
 
int lease6DelHandler (hooks::CalloutHandle &handle)
 lease6-del command handler More...
 
int lease6ResendDdnsHandler (hooks::CalloutHandle &handle)
 lease6-resend-ddns command handler More...
 
int lease6UpdateHandler (hooks::CalloutHandle &handle)
 lease6-update handler More...
 
int lease6WipeHandler (hooks::CalloutHandle &handle)
 lease6-wipe handler More...
 
int leaseAddHandler (hooks::CalloutHandle &handle)
 lease4-add, lease6-add command handler More...
 
int leaseGetAllHandler (hooks::CalloutHandle &handle)
 lease4-get-all, lease6-get-all commands handler More...
 
int leaseGetByClientIdHandler (hooks::CalloutHandle &handle)
 lease4-get-by-client-id command handler More...
 
int leaseGetByDuidHandler (hooks::CalloutHandle &handle)
 lease6-get-by-duid command handler More...
 
int leaseGetByHostnameHandler (hooks::CalloutHandle &handle)
 lease4-get-by-hostname and lease6-get-by-hostname commands handler More...
 
int leaseGetByHwAddressHandler (hooks::CalloutHandle &handle)
 lease4-get-by-hw-address command handler More...
 
int leaseGetHandler (hooks::CalloutHandle &handle)
 lease4-get, lease6-get command handler More...
 
int leaseGetPageHandler (hooks::CalloutHandle &handle)
 lease4-get-page, lease6-get-page commands handler More...
 

Detailed Description

Implements the logic for processing commands pertaining to lease manipulation.

This class is used by the callouts implementing command handlers for lease manipulations.

Definition at line 26 of file lease_cmds.h.

Constructor & Destructor Documentation

isc::lease_cmds::LeaseCmds::LeaseCmds ( )

Constructor.

It creates an instance of the LeaseCmdsImpl.

Definition at line 2336 of file lease_cmds.cc.

Member Function Documentation

int isc::lease_cmds::LeaseCmds::lease4DelHandler ( hooks::CalloutHandle handle)

lease4-del command handler

This command attempts to delete an IPv4 lease that match selected criteria. It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly. If the lease is deleted successfully, then a call to isc::dhcp::queueNCR() is issued, which to generate an CHG_REMOVE request to kea-dhcp-ddns, if appropriate.

Two types of parameters are supported: (subnet-id, address) or (subnet-id, identifier-type, identifier).

Example command for deletion by (subnet-id, address): { "command": "lease4-del", "arguments": { "subnet-id": 1, "ip-address": "192.0.2.202" } }

Example command for deletion by (subnet-id, identifier-type, identifier) { "command": "lease4-del", "arguments": { "subnet-id": 1, "identifier-type": "hw-address", "identifier": "00:01:02:03:04:05" } }";

Parameters
handleCallout context - which is expected to contain the delete command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2295 of file lease_cmds.cc.

Referenced by lease4_del().

int isc::lease_cmds::LeaseCmds::lease4ResendDdnsHandler ( hooks::CalloutHandle handle)

lease4-resend-ddns command handler

This command attempts to resend the DDNS updates for the IPv4 lease that matches the selection criteria.

It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

A single parameter is supported: ip-address:

Example command to resend DDNS based on existing FDQN and flags { "command": "lease4-resend-ddns", "arguments": { "ip-address": "192.0.2.202" } }

Parameters
handleCallout context - which is expected to contain the lease4-resend-ddns command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2327 of file lease_cmds.cc.

Referenced by lease4_resend_ddns().

int isc::lease_cmds::LeaseCmds::lease4UpdateHandler ( hooks::CalloutHandle handle)

lease4-update handler

This command attempts to update existing IPv4 lease. The parameters specified will replace existing lease. The only condition is that the IP address must not change. If you want to change the IP address, please use lease4-del and lease4-add instead. It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

Example command: { "command": "lease4-update", "arguments": { "subnet-id": 44, "ip-address": "192.0.2.1", "hw-address": "1a:1b:1c:1d:1e:1f", "hostname": "newhostname.example.org" } };

The optional 'force-create' boolean parameter may be specified to force the lease to be created if it doesn't exist. By default, this parameter is set to false, which means that the lease is not created.

Parameters
handleCallout context - which is expected to contain the update command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2305 of file lease_cmds.cc.

Referenced by lease4_update().

int isc::lease_cmds::LeaseCmds::lease4WipeHandler ( hooks::CalloutHandle handle)

lease4-wipe handler

This commands attempts to remove all IPv4 leases from a specific subnet. Currently the leases are removed from the database, without any processing (like calling hooks or doing DDNS cleanups). It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

Example command: { "command": "lease4-wipe", "arguments": { "subnet-id": 44 } }";

Parameters
handleCallout context - which is expected to contain the wipe command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2315 of file lease_cmds.cc.

Referenced by lease4_wipe().

int isc::lease_cmds::LeaseCmds::lease6BulkApplyHandler ( hooks::CalloutHandle handle)

lease6-bulk-apply command handler

This command conveys information about multiple leases to be added, updated or deleted. This command should be used instead of lease6-add, lease6-update and lease6-del when it is desired to apply multiple lease changes within a single transaction. This is much faster and should be used in cases when the performance is critical. This command was added as a result of our experience with High Availability where multiple IPv6 addresses and/or prefixes can be allocated for a single DHCPv6 packet.

Note
Unlike leaseX-del, this command does not support "update-ddns" and this will not generate CHG_REMOVEs for deleted leases.

Example structure of the command:

{ "command": "lease6-bulk-apply", "arguments": { "deleted-leases": [ { "subnet-id": 66, "ip-address": "2001:db8:abcd::", "type": "IA_PD", ... }, { "subnet-id": 66, "ip-address": "2001:db8:abcd::234", "type": "IA_NA", ... } ], "leases": [ { "subnet-id": 66, "ip-address": "2001:db8:cafe::", "type": "IA_PD", ... }, { "subnet-id": 66, "ip-address": "2001:db8:abcd::333", "type": "IA_NA", ... } ] } }

The response indicates which of the leases failed to be applied. For example:

{ "result": 0, "text": IPv6 leases bulk apply completed. "arguments": { "failed-deleted-leases": [ { "subnet-id": 66, "ip-address": "2001:db8:abcd::", "type": "IA_PD" } ], "failed-leases": [ { "subnet-id": 66, "ip-address": "2001:db8:cafe::", "type": "IA_PD", ... } ] } }

The command handler first attempts to delete all leases listed in the "deleted-leases" list. Next, it adds the leases listed in the "leases" list. If any of these leases already exists, it is updated.

Parameters
handleCallout context - which is expected to contain the add command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2255 of file lease_cmds.cc.

Referenced by lease6_bulk_apply().

int isc::lease_cmds::LeaseCmds::lease6DelHandler ( hooks::CalloutHandle handle)

lease6-del command handler

This command attempts to delete a lease that match selected criteria. It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly. If the lease is deleted successfully, then a call to isc::dhcp::queueNCR() is issued, which to generate an CHG_REMOVE request to kea-dhcp-ddns, if appropriate.

Two types of parameters are supported: (subnet-id, address) or (subnet-id, type, iaid, identifier-type, identifier).

Example command for deletion by (subnet-id, address): { "command": "lease6-del", "arguments": { "subnet-id": 1, "ip-address": "192.0.2.202" } }

Example command for deletion by (subnet-id, type, iaid, identifier-type, identifier): { "command": "lease6-del", "arguments": { "subnet-id": 1, "type": "IA_NA", "iaid": 123456, "identifier-type": "hw-address", "identifier": "00:01:02:03:04:05" } }";

Parameters
handleCallout context - which is expected to contain the delete command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2300 of file lease_cmds.cc.

Referenced by lease6_del().

int isc::lease_cmds::LeaseCmds::lease6ResendDdnsHandler ( hooks::CalloutHandle handle)

lease6-resend-ddns command handler

This command attempts to resend the DDNS updates for the IPv6 lease that matches the selection criteria.

It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

A single parameter is supported: ip-address:

Example command to resend DDNS based on existing FDQN and flags { "command": "lease6-resend-ddns", "arguments": { "ip-address": "2001:db8:abcd::", } }

Parameters
handleCallout context - which is expected to contain the lease6-resend-ddns command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2332 of file lease_cmds.cc.

Referenced by lease6_resend_ddns().

int isc::lease_cmds::LeaseCmds::lease6UpdateHandler ( hooks::CalloutHandle handle)

lease6-update handler

This command attempts to update existing IPv6 lease. The parameters specified will replace existing lease. The only condition is that the IP address must not change. If you want to change the IP address, please use lease6-del and lease6-add instead. It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

Example command: { "command": "lease6-update", "arguments": { "subnet-id": 66, "ip-address": "2001:db8::1", "iaid": 7654321, "duid": "88:88:88:88:88:88:88:88", "hostname": "newhostname.example.org" } }";

The optional 'force-create' boolean parameter may be specified to force the lease to be created if it doesn't exist. By default, this parameter is set to false, which means that the lease is not created.

Parameters
handleCallout context - which is expected to contain the update command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2310 of file lease_cmds.cc.

Referenced by lease6_update().

int isc::lease_cmds::LeaseCmds::lease6WipeHandler ( hooks::CalloutHandle handle)

lease6-wipe handler

This commands attempts to remove all IPv4 leases from a specific subnet. Currently the leases are removed from the database, without any processing (like calling hooks or doing DDNS cleanups). It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

Example command: { "command": "lease4-wipe", "arguments": { "subnet-id": 44 } };

Parameters
handleCallout context - which is expected to contain the wipe command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2321 of file lease_cmds.cc.

Referenced by lease6_wipe().

int isc::lease_cmds::LeaseCmds::leaseAddHandler ( hooks::CalloutHandle handle)

lease4-add, lease6-add command handler

This command attempts to add a lease. It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

This function covers both v4 and v6 leases.

Example command for v4: { "command": "lease4-add", "parameters": { "address": "192.0.2.1", "hwaddr": "00:01:02:03:04:05", "client-id": "this-is-a-client", "valid-lft": 3600, "expire": 12345678, "subnet-id": 1, "fqdn-fwd": true, "fqdn-rev": true, "hostname": "myhost.example.org", "state": 0 } } Example command for v6: { "command": "lease6-add", "arguments": { "subnet-id": 66, "ip-address": "2001:db8:abcd::", "type": "IA_PD", "prefix-len": 48, "duid": "01:02:03:04:05:06:07:08", "iaid": 1234, "preferred-lft": 500, "valid-lft": 1000, "expire": 12345678, "fqdn-fwd": true, "fqdn-rev": true, "hostname": "urania.example.org"" } }

Parameters
handleCallout context - which is expected to contain the add command JSON text in the "command" argument
Returns
result of the operation

Definition at line 2250 of file lease_cmds.cc.

Referenced by lease4_add(), and lease6_add().

int isc::lease_cmds::LeaseCmds::leaseGetAllHandler ( hooks::CalloutHandle handle)

lease4-get-all, lease6-get-all commands handler

These commands attempt to retrieve all IPv4 or IPv6 leases, or all IPv4 or all IPv6 leases belonging to the particular subnets. If no subnet identifiers are provided, it returns all IPv4 or IPv6 leases from the database.

Example command for IPv4 query by (subnet-ids): { "command": "lease4-get-all", "arguments": { "subnets": [ 1, 2, 3, 4 ] } }

Example command for retrieving all IPv6 leases: { "command": "lease6-get-all", }

Parameters
handleCallout context - which is expected to contain the get command JSON text in the "command" argument
Returns
0 if the handler has been invoked successfully, 1 if an error occurs, 3 if no leases are returned.

Definition at line 2265 of file lease_cmds.cc.

Referenced by lease4_get_all(), and lease6_get_all().

int isc::lease_cmds::LeaseCmds::leaseGetByClientIdHandler ( hooks::CalloutHandle handle)

lease4-get-by-client-id command handler

This command attempts to retrieve all IPv4 leases with a particular Client Id.

Example command: { "command": "lease4-get-by-client-id", "arguments": { "client-id": "this-is-a-client" } }

Parameters
handleCallout context - which is expected to contain the get command JSON text in the "command" argument
Returns
0 if the handler has been invoked successfully, 1 if an error occurs, 3 if no leases are returned.

Definition at line 2280 of file lease_cmds.cc.

Referenced by lease4_get_by_client_id().

int isc::lease_cmds::LeaseCmds::leaseGetByDuidHandler ( hooks::CalloutHandle handle)

lease6-get-by-duid command handler

This command attempts to retrieve all IPv6 leases with a particular DUID.

Example command: { "command": "lease6-get-by-duid", "arguments": { "duid": "01:02:03:04:05:06:07:08" } }

Parameters
handleCallout context - which is expected to contain the get command JSON text in the "command" argument
Returns
0 if the handler has been invoked successfully, 1 if an error occurs, 3 if no leases are returned.

Definition at line 2285 of file lease_cmds.cc.

Referenced by lease6_get_by_duid().

int isc::lease_cmds::LeaseCmds::leaseGetByHostnameHandler ( hooks::CalloutHandle handle)

lease4-get-by-hostname and lease6-get-by-hostname commands handler

These commands attempt to retrieve all IPv4 or Ipv6 leases with a particular hostname.

Example command for v4: { "command": "lease4-get-by-hostname", "arguments": { "hostname": "urania.example.org" } }

Parameters
handleCallout context - which is expected to contain the get command JSON text in the "command" argument
Returns
0 if the handler has been invoked successfully, 1 if an error occurs, 3 if no leases are returned.

Definition at line 2290 of file lease_cmds.cc.

Referenced by lease4_get_by_hostname(), and lease6_get_by_hostname().

int isc::lease_cmds::LeaseCmds::leaseGetByHwAddressHandler ( hooks::CalloutHandle handle)

lease4-get-by-hw-address command handler

This command attempts to retrieve all IPv4 leases with a particular hardware address.

Example command: { "command": "lease4-get-by-hw-address", "arguments": { "hwaddr": "00:01:02:03:04:05" } }

Parameters
handleCallout context - which is expected to contain the get command JSON text in the "command" argument
Returns
0 if the handler has been invoked successfully, 1 if an error occurs, 3 if no leases are returned.

Definition at line 2275 of file lease_cmds.cc.

Referenced by lease4_get_by_hw_address().

int isc::lease_cmds::LeaseCmds::leaseGetHandler ( hooks::CalloutHandle handle)

lease4-get, lease6-get command handler

This command attempts to retrieve a lease that match selected criteria. It extracts the command name and arguments from the given Callouthandle, attempts to process them, and then set's the handle's "response" argument accordingly.

The following types of parameters are supported:

  • (subnet-id, address) for both v4 and v6
  • (subnet-id, identifier-type, identifier) for v4
  • (subnet-id, type, iana, identifier-type, identifier) for v6

Example command for query by (subnet-id, address): { "command": "lease4-get", "arguments": { "subnet-id": 1, "ip-address": "192.0.2.202" } }

Example command for query by (subnet-id, identifier-type, identifier) { "command": "lease4-get", "arguments": { "subnet-id": 1, "identifier-type": "hw-address", "identifier": "00:01:02:03:04:05" } }

Example command for query by (subnet-id, type, iana, identifier-type, identifier): { "command": "lease6-get", "arguments": { "subnet-id": 66, "iaid": 42, "type": "IA_NA", "identifier-type": "duid", "identifier": "77:77:77:77:77:77:77:77" } }

Parameters
handleCallout context - which is expected to contain the get command JSON text in the "command" argument
Returns
result of the operation (includes lease details, if found), 1 if an error occurs, 3 if lease not found.

Definition at line 2260 of file lease_cmds.cc.

Referenced by lease4_get(), and lease6_get().

int isc::lease_cmds::LeaseCmds::leaseGetPageHandler ( hooks::CalloutHandle handle)

lease4-get-page, lease6-get-page commands handler

These commands attempt to retrieve 1 page of all IPv4 or IPv6 leases. The size of the page is specified by the caller. The caller also specifies the last address returned in the previous page. The new page starts from the first address following the address specified by the caller. If the first page should be returned the IPv4 zero address, IPv6 zero address or the keyword "start" should be provided instead of the last address.

Parameters
handleCallout context - which is expected to contain the get commands JSON text in the "command" argument.
Returns
0 if the handler has been invoked successfully, 1 if an error occurs, 3 if no leases are returned.

Definition at line 2270 of file lease_cmds.cc.

Referenced by lease4_get_page(), and lease6_get_page().


The documentation for this class was generated from the following files: