From 8a5f0141a346ad4b94d09313a2ec9a52efa7cf59 Mon Sep 17 00:00:00 2001 From: Jakub Sławiński Date: Tue, 12 Oct 2004 00:07:33 +0200 Subject: v0.5.5 - Added: rsa key generation by afclient - Modified: afclient is now generating keys by default - Fixed: major bug in packet buffering - Added: 'timeout', 'clients' and 'usrpcli' options - Fixed: parsing 'users' option - Modified: module management routines - Added: module support for service's packet filtering - Fixed: few minor bugs in closing connection routines - Added: possibility to use several clients per realm - Modified: there is no need for 'users', 'timeout', 'clients', 'proto', 'usrpcli' and 'climode' options in config file when default values are acceptable --- modules.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 modules.c (limited to 'modules.c') diff --git a/modules.c b/modules.c new file mode 100644 index 0000000..75c2a08 --- /dev/null +++ b/modules.c @@ -0,0 +1,63 @@ +/* + * active port forwarder - software for secure forwarding + * Copyright (C) 2003,2004 jeremian + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "modules.h" + +#include +#include + +int +loadmodule(moduleT* module) +{ + if (module->name) { + module->handle = dlopen(module->name, RTLD_NOW); + if (!module->handle) { + return 1; + } + dlerror(); + *(void**) (&module->info) = dlsym(module->handle, "info"); + *(void**) (&module->allow) = dlsym(module->handle, "allow"); + *(void**) (&module->filter) = dlsym(module->handle, "filter"); + if (dlerror() != NULL) { + return 2; + } + module->loaded = 1; + } + return 0; +} + +int +releasemodule(moduleT* module) +{ + if (ismloaded(module)) { + module->loaded = 0; + module->info = NULL; + module->allow = NULL; + module->filter = NULL; + return dlclose(module->handle); + } + return 0; +} + +int +ismloaded(moduleT* module) +{ + return module->loaded; +} -- cgit v1.1