attr-sql: Make release of online leases during startup optional
This cleanup prevents sharing the same DB between multiple VPN gateways.
This commit is contained in:
parent
f6d0965a4c
commit
a1aede8065
|
@ -1,3 +1,7 @@
|
|||
charon.plugins.attr-sql.crash_recovery = yes
|
||||
Release all online leases during startup. Disable this to share the DB
|
||||
between multiple VPN gateways.
|
||||
|
||||
charon.plugins.attr-sql.database
|
||||
Database URI for attr-sql plugin used by charon. If it contains a password,
|
||||
make sure to adjust the permissions of the config file accordingly.
|
||||
|
|
|
@ -200,7 +200,6 @@ static host_t* get_lease(private_attr_sql_provider_t *this, char *name,
|
|||
"SELECT id, address FROM addresses "
|
||||
"WHERE pool = ? AND identity = 0 LIMIT 1",
|
||||
DB_UINT, pool, DB_UINT, DB_BLOB);
|
||||
|
||||
}
|
||||
|
||||
if (!e || !e->enumerate(e, &id, &address))
|
||||
|
@ -447,7 +446,6 @@ METHOD(attr_sql_provider_t, destroy, void,
|
|||
attr_sql_provider_t *attr_sql_provider_create(database_t *db)
|
||||
{
|
||||
private_attr_sql_provider_t *this;
|
||||
time_t now = time(NULL);
|
||||
|
||||
INIT(this,
|
||||
.public = {
|
||||
|
@ -460,19 +458,25 @@ attr_sql_provider_t *attr_sql_provider_create(database_t *db)
|
|||
},
|
||||
.db = db,
|
||||
.history = lib->settings->get_bool(lib->settings,
|
||||
"%s.plugins.attr-sql.lease_history", TRUE, lib->ns),
|
||||
"%s.plugins.attr-sql.lease_history", TRUE, lib->ns),
|
||||
);
|
||||
|
||||
/* close any "online" leases in the case we crashed */
|
||||
if (this->history)
|
||||
if (lib->settings->get_bool(lib->settings,
|
||||
"%s.plugins.attr-sql.crash_recovery", TRUE, lib->ns))
|
||||
{
|
||||
this->db->execute(this->db, NULL,
|
||||
time_t now = time(NULL);
|
||||
|
||||
/* close any "online" leases in the case we crashed */
|
||||
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,
|
||||
}
|
||||
this->db->execute(this->db, NULL,
|
||||
"UPDATE addresses SET released = ? WHERE released = 0",
|
||||
DB_UINT, now);
|
||||
}
|
||||
return &this->public;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue