From f0a8bf47f7d01ded310e60b3ec1e7204284dd7f7 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Tue, 25 Oct 2011 01:10:02 +0200 Subject: refactored TNC framework --- src/libtnccs/tnc/tnccs/tnccs_manager.c | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/libtnccs/tnc/tnccs/tnccs_manager.c (limited to 'src/libtnccs/tnc/tnccs/tnccs_manager.c') diff --git a/src/libtnccs/tnc/tnccs/tnccs_manager.c b/src/libtnccs/tnc/tnccs/tnccs_manager.c new file mode 100644 index 000000000..fa91bfb21 --- /dev/null +++ b/src/libtnccs/tnc/tnccs/tnccs_manager.c @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2011 Andreas Steffen + * HSR Hochschule fuer Technik Rapperswil + * + * 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. See . + * + * 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. + */ + +#include "tnccs_manager.h" + +#include "tnc/tnc.h" + +#include + +/** + * See header + */ +bool tnccs_method_register(plugin_t *plugin, plugin_feature_t *feature, + bool reg, void *data) +{ + if (!tnc || !tnc->tnccs) + { + DBG1(DBG_TNC, "TNC TNCCS manager does not exist"); + return FALSE; + } + if (reg) + { + if (feature->type == FEATURE_CUSTOM) + { + tnccs_type_t type = TNCCS_UNKNOWN; + + if (streq(feature->arg.custom, "tnccs-2.0")) + { + type = TNCCS_2_0; + } + else if (streq(feature->arg.custom, "tnccs-1.1")) + { + type = TNCCS_1_1; + } + else if (streq(feature->arg.custom, "tnccs-dynamic")) + { + type = TNCCS_DYNAMIC; + } + else + { + return FALSE; + } + tnc->tnccs->add_method(tnc->tnccs, type, (tnccs_constructor_t)data); + } + } + else + { + tnc->tnccs->remove_method(tnc->tnccs, (tnccs_constructor_t)data); + } + return TRUE; +} -- cgit v1.2.3