diff options
author | Shawn Routhier <sar@isc.org> | 2015-05-27 13:17:46 -0700 |
---|---|---|
committer | Shawn Routhier <sar@isc.org> | 2015-05-27 13:17:46 -0700 |
commit | 3933e2aa5183d4602c4fffee4f2ae0d9ca25df99 (patch) | |
tree | 20ec7a7ababacdb01dcf061eef90a7432c70eb04 /server/omapi.c | |
parent | 4136513e59b6906e585eac0f0fd88706bdefcb5b (diff) | |
download | isc-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.c | 27 |
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, |