Kea  2.1.7-git
isc::dhcp::PgSqlLease6Exchange Class Reference

Supports exchanging IPv6 leases with PostgreSQL. More...

+ Inheritance diagram for isc::dhcp::PgSqlLease6Exchange:

Classes

union  Uiaid
 Union for marshalling IAID into and out of the database IAID is defined in the RFC as 4 octets, which Kea code handles as a uint32_t. More...
 

Public Member Functions

 PgSqlLease6Exchange ()
 
Lease6Ptr convertFromDatabase (const PgSqlResult &r, int row)
 Creates a Lease6 object from a given row in a result set. More...
 
void createBindForSend (const Lease6Ptr &lease, PsqlBindArray &bind_array)
 Creates the bind array for sending Lease6 data to the database. More...
 
void getLeaseTypeColumnValue (const PgSqlResult &r, const int row, const size_t col, Lease6::Type &value) const
 Fetches an integer text column as a Lease6::Type. More...
 
- Public Member Functions inherited from isc::dhcp::PgSqlLeaseExchange
 PgSqlLeaseExchange ()
 
virtual ~PgSqlLeaseExchange ()
 
- Public Member Functions inherited from isc::db::PgSqlExchange
 PgSqlExchange (const size_t num_columns=0)
 Constructor. More...
 
virtual ~PgSqlExchange ()
 Destructor. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from isc::db::PgSqlExchange
static void convertFromBytea (const PgSqlResult &r, const int row, const size_t col, uint8_t *buffer, const size_t buffer_size, size_t &bytes_converted)
 Converts a column in a row in a result set to a binary bytes. More...
 
static void convertFromBytea (const PgSqlResult &r, const int row, const size_t col, std::vector< uint8_t > &value)
 Converts a column in a row in a result set to a binary bytes. More...
 
static time_t convertFromDatabaseTime (const std::string &db_time_val)
 Converts time stamp from the database to a time_t. More...
 
static void convertFromDatabaseTime (const std::string &db_time_val, boost::posix_time::ptime &conv_time)
 Converts time stamp from the database to a boost::posix::ptime. More...
 
static std::string convertLocalToDatabaseTime (const time_t input_time)
 Converts local time_t value to a text representation in local time. More...
 
static std::string convertToDatabaseTime (const time_t input_time)
 Converts UTC time_t value to a text representation in local time. More...
 
static std::string convertToDatabaseTime (const time_t cltt, const uint32_t valid_lifetime)
 Converts lease expiration time to a text representation in local time. More...
 
static std::string dumpRow (const PgSqlResult &r, int row)
 Diagnostic tool which dumps the Result row contents as a string. More...
 
static std::string getColumnLabel (const PgSqlResult &r, const size_t col)
 Fetches the name of the column in a result set. More...
 
static void getColumnValue (const PgSqlResult &r, const int row, const size_t col, std::string &value)
 Fetches text column value as a string. More...
 
static void getColumnValue (const PgSqlResult &r, const int row, const size_t col, bool &value)
 Fetches boolean text ('t' or 'f') as a bool. More...
 
static void getColumnValue (const PgSqlResult &r, const int row, const size_t col, uint8_t &value)
 Fetches an integer text column as a uint8_t. More...
 
template<typename T >
static void getColumnValue (const PgSqlResult &r, const int row, const size_t col, T &value)
 Fetches a text column as the given value type. More...
 
static void getColumnValue (const PgSqlResult &r, const int row, const size_t col, boost::posix_time::ptime &value)
 Fetches a timestamp column as a ptime. More...
 
static void getColumnValue (const PgSqlResult &r, const int row, const size_t col, data::ElementPtr &value)
 Fetches a JSON column as an ElementPtr. More...
 
static isc::asiolink::IOAddress getInetValue4 (const PgSqlResult &r, const int row, const size_t col)
 Converts a column in a row in a result set into IPv4 address. More...
 
static isc::asiolink::IOAddress getInetValue6 (const PgSqlResult &r, const int row, const size_t col)
 Converts a column in a row in a result set into IPv6 address. More...
 
static isc::asiolink::IOAddress getIPv6Value (const PgSqlResult &r, const int row, const size_t col)
 Converts a column in a row in a result set into IPv6 address. More...
 
static const char * getRawColumnValue (const PgSqlResult &r, const int row, const size_t col)
 Gets a pointer to the raw column value in a result set row. More...
 
static isc::util::Triplet< uint32_t > getTripletValue (const PgSqlResult &r, const int row, const size_t col)
 Fetches a uint32_t value into a Triplet using a single column value. More...
 
static isc::util::Triplet< uint32_t > getTripletValue (const PgSqlResult &r, const int row, const size_t def_col, const size_t min_col, const size_t max_col)
 Fetches a uint32_t value into a Triplet using a three column values: default, minimum, and maximum. More...
 
static bool isColumnNull (const PgSqlResult &r, const int row, const size_t col)
 Returns true if a column within a row is null. More...
 
- Protected Attributes inherited from isc::dhcp::PgSqlLeaseExchange
std::string addr_str_
 Common Instance members used for binding and conversion. More...
 
size_t hwaddr_length_
 
std::vector< uint8_t > hwaddr_
 
uint8_t hwaddr_buffer_ [HWAddr::MAX_HWADDR_LEN]
 
uint32_t valid_lifetime_
 
std::string valid_lifetime_str_
 
time_t expire_
 
std::string expire_str_
 
uint32_t subnet_id_
 
std::string subnet_id_str_
 
time_t cltt_
 
bool fqdn_fwd_
 
bool fqdn_rev_
 
std::string hostname_
 
std::string state_str_
 
std::string user_context_
 
- Protected Attributes inherited from isc::db::PgSqlExchange
std::vector< std::string > columns_
 Stores text labels for columns, currently only used for logging and errors. More...
 

Detailed Description

Supports exchanging IPv6 leases with PostgreSQL.

Definition at line 647 of file pgsql_lease_mgr.cc.

Constructor & Destructor Documentation

◆ PgSqlLease6Exchange()

isc::dhcp::PgSqlLease6Exchange::PgSqlLease6Exchange ( )
inline

Definition at line 702 of file pgsql_lease_mgr.cc.

Member Function Documentation

◆ convertFromDatabase()

Lease6Ptr isc::dhcp::PgSqlLease6Exchange::convertFromDatabase ( const PgSqlResult r,
int  row 
)
inline

Creates a Lease6 object from a given row in a result set.

Parameters
rresult set containing one or rows from the Lease6 table
rowrow number within the result set from to create the Lease6 object.
Returns
Lease6Ptr to the newly created Lease4 object
Exceptions
DbOperationErrorif the lease cannot be created.
Todo:
In theory, an administrator could tweak lease information in the database. In this case, some of the values could be set to NULL. This is less likely than in case of host reservations, but we may consider if retrieved values should be checked for being NULL to prevent cryptic errors during conversions from NULL to actual values.

Definition at line 860 of file pgsql_lease_mgr.cc.

References isc_throw, and isc::Exception::what().

+ Here is the call graph for this function:

◆ createBindForSend()

void isc::dhcp::PgSqlLease6Exchange::createBindForSend ( const Lease6Ptr lease,
PsqlBindArray bind_array 
)
inline

Creates the bind array for sending Lease6 data to the database.

Converts each Lease6 member into the appropriate form and adds it to the bind array. Note that the array additions must occur in the order the columns are specified in the SQL statement. By convention all columns in the table are explicitly listed in the SQL statement(s) in the same order as they occur in the table.

Parameters
leaseLease6 object that is to be written to the database
[out]bind_arrayarray to populate with the lease data values
Exceptions
DbOperationErrorif bind_array cannot be populated.

Definition at line 745 of file pgsql_lease_mgr.cc.

References isc::db::PsqlBindArray::add(), isc::dhcp::HTYPE_UNDEFINED, isc_throw, and isc::Exception::what().

+ Here is the call graph for this function:

◆ getLeaseTypeColumnValue()

void isc::dhcp::PgSqlLease6Exchange::getLeaseTypeColumnValue ( const PgSqlResult r,
const int  row,
const size_t  col,
Lease6::Type value 
) const
inline

Fetches an integer text column as a Lease6::Type.

Parameters
rthe result set containing the query results
rowthe row number within the result set
colthe column number within the row
[out]valueparameter to receive the converted value

Note we depart from overloading getColumnValue to avoid ambiguity with base class methods for integers.

Exceptions
DbOperationErrorif the value cannot be fetched or is invalid.

Definition at line 971 of file pgsql_lease_mgr.cc.

References isc_throw.


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