![]() |
Kea 2.2.0
|
This file holds the implementation of the Lease Manager using MySQL. More...
#include <config.h>#include <asiolink/io_address.h>#include <dhcp/duid.h>#include <dhcp/hwaddr.h>#include <dhcpsrv/cfg_db_access.h>#include <dhcpsrv/cfgmgr.h>#include <dhcpsrv/dhcpsrv_log.h>#include <dhcpsrv/lease_mgr_factory.h>#include <dhcpsrv/mysql_lease_mgr.h>#include <dhcpsrv/timer_mgr.h>#include <mysql/mysql_connection.h>#include <util/multi_threading_mgr.h>#include <boost/array.hpp>#include <boost/make_shared.hpp>#include <boost/static_assert.hpp>#include <mysqld_error.h>#include <iostream>#include <iomanip>#include <limits>#include <sstream>#include <string>#include <time.h>
Include dependency graph for mysql_lease_mgr.cc:Go to the source code of this file.
Classes | |
| class | isc::dhcp::MySqlLease4Exchange |
| Exchange MySQL and Lease4 Data. More... | |
| class | isc::dhcp::MySqlLease6Exchange |
| Exchange MySQL and Lease6 Data. More... | |
| class | isc::dhcp::MySqlLeaseExchange |
| Common MySQL and Lease Data Methods. More... | |
| class | isc::dhcp::MySqlLeaseStatsQuery |
| MySql derivation of the statistical lease data query. More... | |
Namespaces | |
| namespace | isc |
| Defines the logger used by the top-level component of kea-lfc. | |
| namespace | isc::dhcp |
This file holds the implementation of the Lease Manager using MySQL.
The implementation uses MySQL's C API, as it comes as standard with the MySQL client libraries.
In general, each of the database access methods corresponds to one SQL statement. To avoid the overhead of parsing a statement every time it is used, when the database is opened "prepared statements" are created - essentially doing the SQL parsing up front. Every time a method is used to access data, the corresponding prepared statement is referenced. Each prepared statement contains a set of placeholders for data, each placeholder being for:
All such data is associated with the prepared statement using an array of MYSQL_BIND structures. Each element in the array corresponds to one parameter in the prepared statement - the first element in the array is associated with the first parameter, the second element with the second parameter etc.
Within this file, the setting up of the MYSQL_BIND arrays for data being passed to and retrieved from the database is handled in the isc::dhcp::MySqlLease4Exchange and isc::dhcp::MySqlLease6Exchange classes. The classes also hold intermediate variables required for exchanging some of the data.
With these exchange objects in place, many of the methods follow similar logic:
Definition in file mysql_lease_mgr.cc.