summaryrefslogtreecommitdiff
path: root/server/omapi.c
diff options
context:
space:
mode:
authorShawn Routhier <sar@isc.org>2015-05-27 13:17:46 -0700
committerShawn Routhier <sar@isc.org>2015-05-27 13:17:46 -0700
commit3933e2aa5183d4602c4fffee4f2ae0d9ca25df99 (patch)
tree20ec7a7ababacdb01dcf061eef90a7432c70eb04 /server/omapi.c
parent4136513e59b6906e585eac0f0fd88706bdefcb5b (diff)
downloadisc-dhcp-3933e2aa5183d4602c4fffee4f2ae0d9ca25df99.tar.gz
[master] Add support for manipulating lease queues via a binary search.
Add support for manipluating the queues holding leaes for time based events (free, backup, active, expired, abandoned and reserved) via a binary search instead of walking through the linked list.
Diffstat (limited to 'server/omapi.c')
-rw-r--r--server/omapi.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/server/omapi.c b/server/omapi.c
index 17292e23..962aef88 100644
--- a/server/omapi.c
+++ b/server/omapi.c
@@ -3,7 +3,7 @@
OMAPI object interfaces for the DHCP server. */
/*
- * Copyright (c) 2012-2014 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2012-2015 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 2004-2009 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1999-2003 by Internet Software Consortium
*
@@ -457,10 +457,13 @@ isc_result_t dhcp_lease_destroy (omapi_object_t *h, const char *file, int line)
#if defined (DEBUG_MEMORY_LEAKAGE) || \
defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT)
- /* XXX we should never be destroying a lease with a next
- XXX pointer except on exit... */
+ /* We no longer check for a next pointer as that should
+ * be cleared when we destroy the pool and as before we
+ * should only ever be doing that on exit.
if (lease->next)
lease_dereference (&lease->next, file, line);
+ */
+
if (lease->n_hw)
lease_dereference (&lease->n_hw, file, line);
if (lease->n_uid)
@@ -1596,16 +1599,14 @@ isc_result_t dhcp_pool_destroy (omapi_object_t *h, const char *file, int line)
group_dereference (&pool -> group, file, line);
if (pool -> shared_network)
shared_network_dereference (&pool -> shared_network, file, line);
- if (pool -> active)
- lease_dereference (&pool -> active, file, line);
- if (pool -> expired)
- lease_dereference (&pool -> expired, file, line);
- if (pool -> free)
- lease_dereference (&pool -> free, file, line);
- if (pool -> backup)
- lease_dereference (&pool -> backup, file, line);
- if (pool -> abandoned)
- lease_dereference (&pool -> abandoned, file, line);
+
+ POOL_DESTROYP(&pool->active);
+ POOL_DESTROYP(&pool->expired);
+ POOL_DESTROYP(&pool->free);
+ POOL_DESTROYP(&pool->backup);
+ POOL_DESTROYP(&pool->abandoned);
+ POOL_DESTROYP(&pool->reserved);
+
#if defined (FAILOVER_PROTOCOL)
if (pool -> failover_peer)
dhcp_failover_state_dereference (&pool -> failover_peer,