33 #if defined (COMPACT_LEASES) 34 struct lease *free_leases;
36 #if defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT) 37 struct lease *lease_hunks;
41 struct lease *c, *n, **p;
45 for (n = lease_hunks; n; n = n->
next) {
46 for (i = 1; i < n->
starts + 1; i++) {
48 for (c = free_leases; c; c = c->
next) {
59 #if defined (DEBUG_RC_HISTORY) 60 dump_rc_history(&n[i]);
66 for (c = lease_hunks; c; c = n) {
69 log_info(
"lease hunk %lx leases %ld free %ld",
70 (
unsigned long)c, (
unsigned long)(c->starts),
71 (
unsigned long)(c->ends));
77 for (c = free_leases; c; c = n) {
90 #if defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT) 91 rval =
dmalloc ((n + 1) *
sizeof (
struct lease), file, line);
92 memset (rval, 0,
sizeof (
struct lease));
94 rval ->
next = lease_hunks;
107 const char *file,
int line)
112 lease = (
struct lease *)lo;
113 memset (lease, 0,
sizeof (
struct lease));
114 lease ->
next = free_leases;
116 return ISC_R_SUCCESS;
120 const char *file,
int line)
122 struct lease **lease = (
struct lease **)lp;
127 free_leases = lt ->
next;
129 return ISC_R_SUCCESS;
131 return ISC_R_NOMEMORY;
140 #if !defined (NO_HOST_FREES) 143 isc_result_t host_allocate (
struct host_decl **p,
const char *file,
int line)
150 const char *file,
int line)
156 isc_result_t host_dereference (
struct host_decl **ptr,
157 const char *file,
int line)
159 if ((*ptr) -> refcnt == 1) {
160 log_error (
"host dereferenced with refcnt == 1.");
161 #if defined (DEBUG_RC_HISTORY) 178 if (free_lease_states) {
188 memset (rval, 0,
sizeof *rval);
213 free_lease_states = ptr;
217 #if defined (DEBUG_MEMORY_LEAKAGE) || \ 218 defined (DEBUG_MEMORY_LEAKAGE_ON_EXIT) 219 void relinquish_free_lease_states ()
223 for (cs = free_lease_states; cs; cs = ns) {
239 memset (permit, 0,
sizeof *permit);
249 class_dereference (&permit ->
class,
MDL);
250 dfree (permit, file, line);
struct lease_state * next
struct lease * new_leases(unsigned, const char *, int)
isc_result_t omapi_object_reference(omapi_object_t **, omapi_object_t *, const char *, int)
const char * piaddr(const struct iaddr addr)
omapi_object_type_t * dhcp_type_pool
void * dmalloc(unsigned, const char *, int)
struct iaddr ip_addr(struct iaddr subnet, struct iaddr mask, u_int32_t host_address)
struct data_string parameter_request_list
#define DHCP_R_INVALIDARG
omapi_object_type_t * dhcp_type_lease
void data_string_forget(struct data_string *data, const char *file, int line)
int log_error(const char *,...) __attribute__((__format__(__printf__
void relinquish_lease_hunks(void)
void free_permit(struct permit *permit, const char *file, int line)
#define OMAPI_OBJECT_ALLOC(name, stype, type)
struct permit * new_permit(char *file, int line) const
struct option_state * options
int option_state_allocate(struct option_state **ptr, const char *file, int line)
struct lease_state * free_lease_states
isc_result_t omapi_object_dereference(omapi_object_t **, const char *, int)
omapi_object_type_t * dhcp_type_subclass
omapi_object_type_t * dhcp_type_host
void dfree(void *, const char *, int)
void free_lease_state(struct lease_state *ptr, const char *file, int line)
int int log_info(const char *,...) __attribute__((__format__(__printf__
omapi_object_type_t * dhcp_type_class
isc_result_t dhcp_lease_get(omapi_object_t **, const char *, int)
struct lease_state * new_lease_state(char *file, int line) const
int option_state_dereference(struct option_state **ptr, const char *file, int line)
int packet_dereference(struct packet **ptr, const char *file, int line)
isc_result_t omapi_object_allocate(omapi_object_t **, omapi_object_type_t *, size_t, const char *, int)
#define dmalloc_reuse(x, y, l, z)
isc_result_t dhcp_lease_free(omapi_object_t *, const char *, int)
struct data_string filename server_name