diff options
| author | Andreas Steffen <andreas.steffen@strongswan.org> | 2010-09-28 23:34:04 +0200 |
|---|---|---|
| committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2010-09-28 23:34:04 +0200 |
| commit | 4e8e74fcfa2efcbebbc5cd33634115c774e87b14 (patch) | |
| tree | b40615ee7158a670b45c46953ae29e690169ab16 /src/libcharon/plugins | |
| parent | 280c8ea2f0aa50914fc863debe171b12f629561a (diff) | |
| download | strongswan-4e8e74fcfa2efcbebbc5cd33634115c774e87b14.tar.bz2 strongswan-4e8e74fcfa2efcbebbc5cd33634115c774e87b14.tar.xz | |
moved TNCCS layer out of eap_tnc plugin
Diffstat (limited to 'src/libcharon/plugins')
| -rw-r--r-- | src/libcharon/plugins/eap_tnc/Makefile.am | 3 | ||||
| -rw-r--r-- | src/libcharon/plugins/eap_tnc/eap_tnc.c | 9 | ||||
| -rw-r--r-- | src/libcharon/plugins/tnccs_11/Makefile.am | 17 | ||||
| -rw-r--r-- | src/libcharon/plugins/tnccs_11/tnccs_11.c (renamed from src/libcharon/plugins/eap_tnc/tnc_if_tnccs.c) | 46 | ||||
| -rw-r--r-- | src/libcharon/plugins/tnccs_11/tnccs_11.h (renamed from src/libcharon/plugins/eap_tnc/tnc_if_tnccs.h) | 19 | ||||
| -rw-r--r-- | src/libcharon/plugins/tnccs_11/tnccs_11_plugin.c | 47 | ||||
| -rw-r--r-- | src/libcharon/plugins/tnccs_11/tnccs_11_plugin.h | 42 |
7 files changed, 136 insertions, 47 deletions
diff --git a/src/libcharon/plugins/eap_tnc/Makefile.am b/src/libcharon/plugins/eap_tnc/Makefile.am index 004a3eb6b..9c5a445c5 100644 --- a/src/libcharon/plugins/eap_tnc/Makefile.am +++ b/src/libcharon/plugins/eap_tnc/Makefile.am @@ -12,7 +12,6 @@ libstrongswan_eap_tnc_la_LIBADD = $(top_builddir)/src/libtls/libtls.la endif libstrongswan_eap_tnc_la_SOURCES = \ - eap_tnc_plugin.h eap_tnc_plugin.c eap_tnc.h eap_tnc.c \ - tnc_if_tnccs.h tnc_if_tnccs.c + eap_tnc_plugin.h eap_tnc_plugin.c eap_tnc.h eap_tnc.c libstrongswan_eap_tnc_la_LDFLAGS = -module -avoid-version diff --git a/src/libcharon/plugins/eap_tnc/eap_tnc.c b/src/libcharon/plugins/eap_tnc/eap_tnc.c index 65f4a23a0..dc50e1202 100644 --- a/src/libcharon/plugins/eap_tnc/eap_tnc.c +++ b/src/libcharon/plugins/eap_tnc/eap_tnc.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2010 Andreas Steffen - * Hochschule fuer Technik Rapperswil + * 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 @@ -14,7 +14,6 @@ */ #include "eap_tnc.h" -#include "tnc_if_tnccs.h" #include <tls_eap.h> @@ -115,7 +114,7 @@ static eap_tnc_t *eap_tnc_create(identification_t *server, private_eap_tnc_t *this; size_t frag_size; int max_msg_count; - tls_t *tnc_if_tnccs; + tnccs_t *tnccs; INIT(this, .public = { @@ -134,8 +133,8 @@ static eap_tnc_t *eap_tnc_create(identification_t *server, "charon.plugins.eap-tnc.fragment_size", MAX_FRAGMENT_LEN); max_msg_count = lib->settings->get_int(lib->settings, "charon.plugins.eap-tnc.max_message_count", MAX_MESSAGE_COUNT); - tnc_if_tnccs = tnc_if_tnccs_create(is_server, TLS_PURPOSE_EAP_TNC); - this->tls_eap = tls_eap_create(EAP_TNC, tnc_if_tnccs, frag_size, max_msg_count); + tnccs = charon->tnccs->create_instance(charon->tnccs, TNCCS_1_1, is_server); + this->tls_eap = tls_eap_create(EAP_TNC, (tls_t*)tnccs, frag_size, max_msg_count); if (!this->tls_eap) { free(this); diff --git a/src/libcharon/plugins/tnccs_11/Makefile.am b/src/libcharon/plugins/tnccs_11/Makefile.am new file mode 100644 index 000000000..af483bce4 --- /dev/null +++ b/src/libcharon/plugins/tnccs_11/Makefile.am @@ -0,0 +1,17 @@ + +INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libhydra \ + -I$(top_srcdir)/src/libcharon -I$(top_srcdir)/src/libtls + +AM_CFLAGS = -rdynamic + +if MONOLITHIC +noinst_LTLIBRARIES = libstrongswan-tnccs-11.la +else +plugin_LTLIBRARIES = libstrongswan-tnccs-11.la +libstrongswan_tnccs_11_la_LIBADD = $(top_builddir)/src/libtls/libtls.la +endif + +libstrongswan_tnccs_11_la_SOURCES = \ + tnccs_11_plugin.h tnccs_11_plugin.c tnccs_11.h tnccs_11.c + +libstrongswan_tnccs_11_la_LDFLAGS = -module -avoid-version diff --git a/src/libcharon/plugins/eap_tnc/tnc_if_tnccs.c b/src/libcharon/plugins/tnccs_11/tnccs_11.c index 5b6a506c7..d8734a733 100644 --- a/src/libcharon/plugins/eap_tnc/tnc_if_tnccs.c +++ b/src/libcharon/plugins/tnccs_11/tnccs_11.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2010 Andreas Steffen - * Copyright (C) 2010 HSR Hochschule fuer Technik Rapperswil + * 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 @@ -13,16 +13,16 @@ * for more details. */ -#include "tnc_if_tnccs.h" +#include "tnccs_11.h" #include <debug.h> -typedef struct private_tnc_if_tnccs_t private_tnc_if_tnccs_t; +typedef struct private_tnccs_11_t private_tnccs_11_t; /** - * Private data of a tnc_if_tnccs_t object. + * Private data of a tnccs_11_t object. */ -struct private_tnc_if_tnccs_t { +struct private_tnccs_11_t { /** * Public tls_t interface. @@ -30,18 +30,13 @@ struct private_tnc_if_tnccs_t { tls_t public; /** - * Role this TNC IF-TNCCS stack acts as. + * Role this TNCCS protocol stack acts as. */ bool is_server; - - /** - * TLS stack purpose, as given to constructor - */ - tls_purpose_t purpose; }; METHOD(tls_t, process, status_t, - private_tnc_if_tnccs_t *this, void *buf, size_t buflen) + private_tnccs_11_t *this, void *buf, size_t buflen) { chunk_t in = { buf, buflen }; @@ -51,7 +46,7 @@ METHOD(tls_t, process, status_t, } METHOD(tls_t, build, status_t, - private_tnc_if_tnccs_t *this, void *buf, size_t *buflen, size_t *msglen) + private_tnccs_11_t *this, void *buf, size_t *buflen, size_t *msglen) { char output[] = "<?xml version=\"1.0\"?>\n" @@ -75,32 +70,32 @@ METHOD(tls_t, build, status_t, } METHOD(tls_t, is_server, bool, - private_tnc_if_tnccs_t *this) + private_tnccs_11_t *this) { return this->is_server; } METHOD(tls_t, get_purpose, tls_purpose_t, - private_tnc_if_tnccs_t *this) + private_tnccs_11_t *this) { - return this->purpose; + return TLS_PURPOSE_EAP_TNC; } METHOD(tls_t, is_complete, bool, - private_tnc_if_tnccs_t *this) + private_tnccs_11_t *this) { /* TODO */ return FALSE; } METHOD(tls_t, get_eap_msk, chunk_t, - private_tnc_if_tnccs_t *this) + private_tnccs_11_t *this) { return chunk_empty; } METHOD(tls_t, destroy, void, - private_tnc_if_tnccs_t *this) + private_tnccs_11_t *this) { free(this); } @@ -108,17 +103,9 @@ METHOD(tls_t, destroy, void, /** * See header */ -tls_t *tnc_if_tnccs_create(bool is_server, tls_purpose_t purpose) +tls_t *tnccs_11_create(bool is_server) { - private_tnc_if_tnccs_t *this; - - switch (purpose) - { - case TLS_PURPOSE_EAP_TNC: - break; - default: - return NULL; - } + private_tnccs_11_t *this; INIT(this, .public = { @@ -131,7 +118,6 @@ tls_t *tnc_if_tnccs_create(bool is_server, tls_purpose_t purpose) .destroy = _destroy, }, .is_server = is_server, - .purpose = purpose, ); return &this->public; diff --git a/src/libcharon/plugins/eap_tnc/tnc_if_tnccs.h b/src/libcharon/plugins/tnccs_11/tnccs_11.h index 5c0d51c9a..fb4791722 100644 --- a/src/libcharon/plugins/eap_tnc/tnc_if_tnccs.h +++ b/src/libcharon/plugins/tnccs_11/tnccs_11.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2010 Andreas Steffen - * Hochschule fuer Technik Rapperswil + * 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 @@ -14,12 +14,12 @@ */ /** - * @defgroup tnc_if_tnccs tnc_if_tnccs - * @{ @ingroup tnc_if_tnccs + * @defgroup tnccs_11 tnccs_11 + * @{ @ingroup tnccs_11 */ -#ifndef TNC_IF_TNCCS_H_ -#define TNC_IF_TNCCS_H_ +#ifndef TNCCS_11_H_ +#define TNCCS_11_H_ #include <library.h> @@ -28,10 +28,9 @@ /** * Create an instance of the TNC IF-TNCCS 1.1 protocol handler. * - * @param is_server TRUE to act as server, FALSE for client - * @param purpose purpose this TLS stack instance is used for - * @return TNC_IF_TNCCS stack + * @param is_server TRUE to act as TNC Server, FALSE for TNC Client + * @return TNC_IF_TNCCS 1.1 protocol stack */ -tls_t *tnc_if_tnccs_create(bool is_server, tls_purpose_t purpose); +tls_t *tnccs_11_create(bool is_server); -#endif /** TNC_IF_TNCCS_H_ @}*/ +#endif /** TNCCS_11_H_ @}*/ diff --git a/src/libcharon/plugins/tnccs_11/tnccs_11_plugin.c b/src/libcharon/plugins/tnccs_11/tnccs_11_plugin.c new file mode 100644 index 000000000..03905ca37 --- /dev/null +++ b/src/libcharon/plugins/tnccs_11/tnccs_11_plugin.c @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. + * + * 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_11_plugin.h" +#include "tnccs_11.h" + +#include <daemon.h> + +METHOD(plugin_t, destroy, void, + tnccs_11_plugin_t *this) +{ + charon->tnccs->remove_method(charon->tnccs, + (tnccs_constructor_t)tnccs_11_create); + free(this); +} + +/* + * see header file + */ +plugin_t *tnccs_11_plugin_create() +{ + tnccs_11_plugin_t *this; + + INIT(this, + .plugin = { + .destroy = _destroy, + }, + ); + + charon->tnccs->add_method(charon->tnccs, TNCCS_1_1, + (tnccs_constructor_t)tnccs_11_create); + + return &this->plugin; +} + diff --git a/src/libcharon/plugins/tnccs_11/tnccs_11_plugin.h b/src/libcharon/plugins/tnccs_11/tnccs_11_plugin.h new file mode 100644 index 000000000..619a073ad --- /dev/null +++ b/src/libcharon/plugins/tnccs_11/tnccs_11_plugin.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2010 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 <http://www.fsf.org/copyleft/gpl.txt>. + * + * 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. + */ + +/** + * @defgroup tnccs_11 tnccs_11 + * @ingroup cplugins + * + * @defgroup tnccs_11_plugin tnccs_11_plugin + * @{ @ingroup tnccs_11 + */ + +#ifndef TNCCS_11_PLUGIN_H_ +#define TNCCS_11_PLUGIN_H_ + +#include <plugins/plugin.h> + +typedef struct tnccs_11_plugin_t tnccs_11_plugin_t; + +/** + * EAP-TNC plugin + */ +struct tnccs_11_plugin_t { + + /** + * implements plugin interface + */ + plugin_t plugin; +}; + +#endif /** TNCCS_11_PLUGIN_H_ @}*/ |
