diff options
Diffstat (limited to 'usr.sbin/dhcp/common/alloc.c')
-rw-r--r-- | usr.sbin/dhcp/common/alloc.c | 137 |
1 files changed, 75 insertions, 62 deletions
diff --git a/usr.sbin/dhcp/common/alloc.c b/usr.sbin/dhcp/common/alloc.c index 8b300ced0c1..38fe5e7536a 100644 --- a/usr.sbin/dhcp/common/alloc.c +++ b/usr.sbin/dhcp/common/alloc.c @@ -3,7 +3,7 @@ Memory allocation... */ /* - * Copyright (c) 1995, 1996 The Internet Software Consortium. + * Copyright (c) 1995, 1996, 1998 The Internet Software Consortium. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -40,29 +40,23 @@ * Enterprises, see ``http://www.vix.com''. */ -#ifndef lint -static char copyright[] = -"$Id: alloc.c,v 1.1 1998/08/18 03:43:25 deraadt Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n"; -#endif /* not lint */ - #include "dhcpd.h" struct dhcp_packet *dhcp_free_list; struct packet *packet_free_list; -VOIDPTR dmalloc (size, name) +void * dmalloc(size, name) int size; char *name; { - VOIDPTR foo = (VOIDPTR)malloc (size); + void *foo = calloc(size, sizeof(char)); if (!foo) warn ("No memory for %s.", name); - memset (foo, 0, size); return foo; } -void dfree (ptr, name) - VOIDPTR ptr; +void dfree(ptr, name) + void *ptr; char *name; { if (!ptr) { @@ -72,33 +66,45 @@ void dfree (ptr, name) free (ptr); } -struct packet *new_packet (name) +struct packet *new_packet(name) char *name; { struct packet *rval; - rval = (struct packet *)dmalloc (sizeof (struct packet), name); + rval = (struct packet *)dmalloc(sizeof(struct packet), name); return rval; } -struct dhcp_packet *new_dhcp_packet (name) +struct dhcp_packet *new_dhcp_packet(name) char *name; { struct dhcp_packet *rval; - rval = (struct dhcp_packet *)dmalloc (sizeof (struct dhcp_packet), - name); + rval = (struct dhcp_packet *)dmalloc(sizeof(struct dhcp_packet), + name); return rval; } -struct tree *new_tree (name) +struct tree *new_tree(name) char *name; { - struct tree *rval = dmalloc (sizeof (struct tree), name); + struct tree *rval = dmalloc(sizeof(struct tree), name); + return rval; +} + +struct string_list *new_string_list(size, name) + size_t size; + char * name; +{ + struct string_list *rval; + + rval =dmalloc(sizeof(struct string_list) + size, name); + if (rval != NULL) + rval->string = ((char *)rval) + sizeof(struct string_list); return rval; } struct tree_cache *free_tree_caches; -struct tree_cache *new_tree_cache (name) +struct tree_cache *new_tree_cache(name) char *name; { struct tree_cache *rval; @@ -106,85 +112,83 @@ struct tree_cache *new_tree_cache (name) if (free_tree_caches) { rval = free_tree_caches; free_tree_caches = - (struct tree_cache *)(rval -> value); + (struct tree_cache *)(rval->value); } else { - rval = dmalloc (sizeof (struct tree_cache), name); + rval = dmalloc(sizeof(struct tree_cache), name); if (!rval) - error ("unable to allocate tree cache for %s.", name); + error("unable to allocate tree cache for %s.", name); } return rval; } -struct hash_table *new_hash_table (count, name) +struct hash_table *new_hash_table(count, name) int count; char *name; { - struct hash_table *rval = dmalloc (sizeof (struct hash_table) - - (DEFAULT_HASH_SIZE - * sizeof (struct hash_bucket *)) - + (count - * sizeof (struct hash_bucket *)), - name); - rval -> hash_count = count; + struct hash_table *rval; + rval = dmalloc(sizeof (struct hash_table) + - (DEFAULT_HASH_SIZE * sizeof(struct hash_bucket *)) + + (count * sizeof(struct hash_bucket *)), name); + rval->hash_count = count; return rval; } -struct hash_bucket *new_hash_bucket (name) +struct hash_bucket *new_hash_bucket(name) char *name; { - struct hash_bucket *rval = dmalloc (sizeof (struct hash_bucket), name); + struct hash_bucket *rval = dmalloc(sizeof(struct hash_bucket), name); return rval; } -struct lease *new_leases (n, name) +struct lease *new_leases(n, name) int n; char *name; { - struct lease *rval = dmalloc (n * sizeof (struct lease), name); + struct lease *rval = dmalloc(n * sizeof(struct lease), name); return rval; } -struct lease *new_lease (name) +struct lease *new_lease(name) char *name; { - struct lease *rval = dmalloc (sizeof (struct lease), name); + struct lease *rval = dmalloc(sizeof(struct lease), name); return rval; } -struct subnet *new_subnet (name) +struct subnet *new_subnet(name) char *name; { - struct subnet *rval = dmalloc (sizeof (struct subnet), name); + struct subnet *rval = dmalloc(sizeof(struct subnet), name); return rval; } -struct class *new_class (name) +struct class *new_class(name) char *name; { - struct class *rval = dmalloc (sizeof (struct class), name); + struct class *rval = dmalloc(sizeof(struct class), name); return rval; } -struct shared_network *new_shared_network (name) +struct shared_network *new_shared_network(name) char *name; { struct shared_network *rval = - dmalloc (sizeof (struct shared_network), name); + dmalloc (sizeof(struct shared_network), name); return rval; } -struct group *new_group (name) +struct group *new_group(name) char *name; { struct group *rval = - dmalloc (sizeof (struct group), name); + dmalloc(sizeof(struct group), name); return rval; } -struct protocol *new_protocol (name) +struct protocol *new_protocol(name) char *name; { - struct protocol *rval = dmalloc (sizeof (struct protocol), name); + struct protocol *rval = dmalloc(sizeof(struct protocol), name); return rval; } @@ -198,7 +202,7 @@ struct lease_state *new_lease_state (name) if (free_lease_states) { rval = free_lease_states; free_lease_states = - (struct lease_state *)(free_lease_states -> next); + (struct lease_state *)(free_lease_states->next); } else { rval = dmalloc (sizeof (struct lease_state), name); } @@ -225,21 +229,23 @@ void free_name_server (ptr, name) struct name_server *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_domain_search_list (ptr, name) struct domain_search_list *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_lease_state (ptr, name) struct lease_state *ptr; char *name; { - ptr -> next = free_lease_states; + if (ptr->prl) + dfree (ptr->prl, name); + ptr->next = free_lease_states; free_lease_states = ptr; } @@ -247,63 +253,63 @@ void free_protocol (ptr, name) struct protocol *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_group (ptr, name) struct group *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_shared_network (ptr, name) struct shared_network *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_class (ptr, name) struct class *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_subnet (ptr, name) struct subnet *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_lease (ptr, name) struct lease *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_hash_bucket (ptr, name) struct hash_bucket *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_hash_table (ptr, name) struct hash_table *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_tree_cache (ptr, name) struct tree_cache *ptr; char *name; { - ptr -> value = (unsigned char *)free_tree_caches; + ptr->value = (unsigned char *)free_tree_caches; free_tree_caches = ptr; } @@ -311,19 +317,26 @@ void free_packet (ptr, name) struct packet *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_dhcp_packet (ptr, name) struct dhcp_packet *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); } void free_tree (ptr, name) struct tree *ptr; char *name; { - dfree ((VOIDPTR)ptr, name); + dfree (ptr, name); +} + +void free_string_list (ptr, name) + struct string_list *ptr; + char *name; +{ + dfree (ptr, name); } |