* database connection
*/
database_t *db;
+
+ /**
+ * wheter to record lease history in lease table
+ */
+ bool history;
};
/**
pool = get_pool(this, name, &timeout);
if (pool)
{
- if (this->db->execute(this->db, NULL,
+ if (this->history)
+ {
+ this->db->execute(this->db, NULL,
"INSERT INTO leases (address, identity, acquired, released)"
" SELECT id, identity, acquired, ? FROM addresses "
" WHERE pool = ? AND address = ?",
DB_UINT, now, DB_UINT, pool,
- DB_BLOB, address->get_address(address)) > 0 &&
- this->db->execute(this->db, NULL,
+ DB_BLOB, address->get_address(address));
+ }
+ if (this->db->execute(this->db, NULL,
"UPDATE addresses SET released = ? WHERE "
"pool = ? AND address = ?", DB_UINT, time(NULL),
DB_UINT, pool, DB_BLOB, address->get_address(address)) > 0)
this->public.destroy = (void(*)(sql_attribute_t*))destroy;
this->db = db;
+ this->history = lib->settings->get_bool(lib->settings,
+ "charon.plugins.sql.lease_history", TRUE);
/* close any "online" leases in the case we crashed */
- this->db->execute(this->db, NULL,
+ if (this->history)
+ {
+ this->db->execute(this->db, NULL,
"INSERT INTO leases (address, identity, acquired, released)"
" SELECT id, identity, acquired, ? FROM addresses "
" WHERE released = 0", DB_UINT, now);
+ }
this->db->execute(this->db, NULL,
"UPDATE addresses SET released = ? WHERE released = 0",
DB_UINT, now);