From 6266197e9257df1501b1962ad0a3e3ba757092f3 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 16 Nov 2009 01:15:39 +0100 Subject: acl: add function flush_access_list(). --- src/acl.c | 24 ++++++++++++++++++++++++ src/acl.h | 1 + 2 files changed, 25 insertions(+) (limited to 'src') diff --git a/src/acl.c b/src/acl.c index 612d44e..81b6113 100644 --- a/src/acl.c +++ b/src/acl.c @@ -357,3 +357,27 @@ int check_acl (const char *ip, const char *host) host, ip); return 0; } + +void flush_access_list (void) +{ + struct acl_s *acl; + size_t i; + + if (!access_list) { + return; + } + + /* + * We need to free allocated data hanging off the acl entries + * before we can free the acl entries themselves. + * A hierarchical memory system would be great... + */ + for (i = 0; i != (size_t) vector_length (access_list); ++i) { + acl = (struct acl_s *) vector_getentry (access_list, i, NULL); + if (acl->type == ACL_STRING) { + safefree (acl->address.string); + } + } + + vector_delete (access_list); +} diff --git a/src/acl.h b/src/acl.h index 3a3d837..e71444d 100644 --- a/src/acl.h +++ b/src/acl.h @@ -25,5 +25,6 @@ typedef enum { ACL_ALLOW, ACL_DENY } acl_access_t; extern int insert_acl (char *location, acl_access_t access_type); extern int check_acl (const char *ip_address, const char *string_address); +extern void flush_access_list (void); #endif -- cgit v1.2.3