aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2010-09-28 23:34:04 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2010-09-28 23:34:04 +0200
commit4e8e74fcfa2efcbebbc5cd33634115c774e87b14 (patch)
treeb40615ee7158a670b45c46953ae29e690169ab16 /src/libcharon/plugins
parent280c8ea2f0aa50914fc863debe171b12f629561a (diff)
downloadstrongswan-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.am3
-rw-r--r--src/libcharon/plugins/eap_tnc/eap_tnc.c9
-rw-r--r--src/libcharon/plugins/tnccs_11/Makefile.am17
-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.c47
-rw-r--r--src/libcharon/plugins/tnccs_11/tnccs_11_plugin.h42
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_ @}*/