added option charon.plugins.sql.lease_history to disable lease history logging
authorMartin Willi <martin@strongswan.org>
Thu, 24 Jul 2008 08:28:45 +0000 (08:28 -0000)
committerMartin Willi <martin@strongswan.org>
Thu, 24 Jul 2008 08:28:45 +0000 (08:28 -0000)
src/charon/plugins/sql/sql_attribute.c

index e3cf60f..1e5c289 100644 (file)
@@ -35,6 +35,11 @@ struct private_sql_attribute_t {
         * database connection
         */
        database_t *db;
+       
+       /**
+        * wheter to record lease history in lease table
+        */
+       bool history;
 };
 
 /**
@@ -233,13 +238,16 @@ static bool release_address(private_sql_attribute_t *this,
                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)
@@ -274,12 +282,17 @@ sql_attribute_t *sql_attribute_create(database_t *db)
        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);