diff options
author | Jakub Sławiński | 2004-10-12 00:07:33 +0200 |
---|---|---|
committer | Joshua Judson Rosen | 2014-07-17 21:14:58 +0200 |
commit | 8a5f0141a346ad4b94d09313a2ec9a52efa7cf59 (patch) | |
tree | 70af82a7af209cca2ecd6fb44388cf25dd9c785d /modules.c | |
parent | v0.5.4 (diff) | |
download | apf-8a5f0141a346ad4b94d09313a2ec9a52efa7cf59.tar.gz |
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
Diffstat (limited to 'modules.c')
-rw-r--r-- | modules.c | 63 |
1 files changed, 63 insertions, 0 deletions
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 <jeremian [at] poczta.fm> + * + * 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 <stdlib.h> +#include <dlfcn.h> + +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; +} |