summaryrefslogtreecommitdiffstats
path: root/contrib/isc-dhcp/common/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/isc-dhcp/common/memory.c')
-rw-r--r--contrib/isc-dhcp/common/memory.c161
1 files changed, 0 insertions, 161 deletions
diff --git a/contrib/isc-dhcp/common/memory.c b/contrib/isc-dhcp/common/memory.c
deleted file mode 100644
index 4a444e2..0000000
--- a/contrib/isc-dhcp/common/memory.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* memory.c
-
- Memory-resident database... */
-
-/*
- * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
- * Copyright (c) 1995-2003 by Internet Software Consortium
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Internet Systems Consortium, Inc.
- * 950 Charter Street
- * Redwood City, CA 94063
- * <info@isc.org>
- * http://www.isc.org/
- *
- * This software has been written for Internet Systems Consortium
- * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
- * To learn more about Internet Systems Consortium, see
- * ``http://www.isc.org/''. To learn more about Vixie Enterprises,
- * see ``http://www.vix.com''. To learn more about Nominum, Inc., see
- * ``http://www.nominum.com''.
- */
-
-#ifndef lint
-static char copyright[] =
-"$Id: memory.c,v 1.66.2.5 2004/06/10 17:59:19 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
-#endif /* not lint */
-
-#include "dhcpd.h"
-
-struct group *root_group;
-group_hash_t *group_name_hash;
-int (*group_write_hook) (struct group_object *);
-
-isc_result_t delete_group (struct group_object *group, int writep)
-{
- struct group_object *d;
-
- /* The group should exist and be hashed - if not, it's invalid. */
- if (group_name_hash) {
- d = (struct group_object *)0;
- group_hash_lookup (&d, group_name_hash, group -> name,
- strlen (group -> name), MDL);
- } else
- return ISC_R_INVALIDARG;
- if (!d)
- return ISC_R_INVALIDARG;
-
- /* Also not okay to delete a group that's not the one in
- the hash table. */
- if (d != group)
- return ISC_R_INVALIDARG;
-
- /* If it's dynamic, and we're deleting it, we can just blow away the
- hash table entry. */
- if ((group -> flags & GROUP_OBJECT_DYNAMIC) &&
- !(group -> flags & GROUP_OBJECT_STATIC)) {
- group_hash_delete (group_name_hash,
- group -> name, strlen (group -> name), MDL);
- } else {
- group -> flags |= GROUP_OBJECT_DELETED;
- if (group -> group)
- group_dereference (&group -> group, MDL);
- }
-
- /* Store the group declaration in the lease file. */
- if (writep && group_write_hook) {
- if (!(*group_write_hook) (group))
- return ISC_R_IOERROR;
- }
- return ISC_R_SUCCESS;
-}
-
-isc_result_t supersede_group (struct group_object *group, int writep)
-{
- struct group_object *t, *u;
- isc_result_t status;
-
- /* Register the group in the group name hash table,
- so we can look it up later. */
- if (group_name_hash) {
- t = (struct group_object *)0;
- group_hash_lookup (&t, group_name_hash,
- group -> name,
- strlen (group -> name), MDL);
- if (t && t != group) {
- /* If this isn't a dynamic entry, then we need to flag
- the replacement as not dynamic either - otherwise,
- if the dynamic entry is deleted later, the static
- entry will come back next time the server is stopped
- and restarted. */
- if (!(t -> flags & GROUP_OBJECT_DYNAMIC))
- group -> flags |= GROUP_OBJECT_STATIC;
-
- /* Delete the old object if it hasn't already been
- deleted. If it has already been deleted, get rid of
- the hash table entry. This is a legitimate
- situation - a deleted static object needs to be kept
- around so we remember it's deleted. */
- if (!(t -> flags & GROUP_OBJECT_DELETED))
- delete_group (t, 0);
- else {
- group_hash_delete (group_name_hash,
- group -> name,
- strlen (group -> name),
- MDL);
- group_object_dereference (&t, MDL);
- }
- }
- } else {
- group_new_hash (&group_name_hash, 0, MDL);
- t = (struct group_object *)0;
- }
-
- /* Add the group to the group name hash if it's not
- already there, and also thread it into the list of
- dynamic groups if appropriate. */
- if (!t) {
- group_hash_add (group_name_hash, group -> name,
- strlen (group -> name), group, MDL);
- }
-
- /* Store the group declaration in the lease file. */
- if (writep && group_write_hook) {
- if (!(*group_write_hook) (group))
- return ISC_R_IOERROR;
- }
- return ISC_R_SUCCESS;
-}
-
-int clone_group (struct group **gp, struct group *group,
- const char *file, int line)
-{
- isc_result_t status;
- struct group *g = (struct group *)0;
-
- /* Normally gp should contain the null pointer, but for convenience
- it's permissible to clone a group into itself. */
- if (*gp && *gp != group)
- return 0;
- if (!group_allocate (&g, file, line))
- return 0;
- if (group == *gp)
- *gp = (struct group *)0;
- group_reference (gp, g, file, line);
- g -> authoritative = group -> authoritative;
- group_reference (&g -> next, group, file, line);
- group_dereference (&g, file, line);
- return 1;
-}
OpenPOWER on IntegriCloud