aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/threads/stroke_interface.h
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2006-04-04 12:45:29 +0000
committerMartin Willi <martin@strongswan.org>2006-04-04 12:45:29 +0000
commitf2ee13a7e844c5b107137ca21136684c610f2864 (patch)
treef90e948f8ad1f356c1d326ba8c302aace5cb6e98 /Source/charon/threads/stroke_interface.h
parentefadbf79e9c864578bfd1277d824e69b2989aac5 (diff)
downloadstrongswan-f2ee13a7e844c5b107137ca21136684c610f2864.tar.bz2
strongswan-f2ee13a7e844c5b107137ca21136684c610f2864.tar.xz
- improved strokeing
- down connection - status - some other tweaks
Diffstat (limited to 'Source/charon/threads/stroke_interface.h')
-rw-r--r--Source/charon/threads/stroke_interface.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/Source/charon/threads/stroke_interface.h b/Source/charon/threads/stroke_interface.h
new file mode 100644
index 000000000..ced887fa6
--- /dev/null
+++ b/Source/charon/threads/stroke_interface.h
@@ -0,0 +1,96 @@
+/**
+ * @file stroke.h
+ *
+ * @brief Interface of stroke_t.
+ *
+ */
+
+/*
+ * Copyright (C) 2006 Martin Willi
+ * 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.
+ */
+
+#ifndef STROKE_H_
+#define STROKE_H_
+
+#include <config/policy_store.h>
+#include <config/connection_store.h>
+#include <config/credential_store.h>
+
+
+#define IPSEC_DIR "/etc/ipsec.d/"
+#define PRIVATE_KEY_DIR IPSEC_DIR "private/"
+#define CERTIFICATE_DIR IPSEC_DIR "certs/"
+
+
+typedef struct stroke_t stroke_t;
+
+/**
+ * @brief Stroke is a configuration and control interface which
+ * allows other processes to modify charons behavior.
+ *
+ * stroke_t allows config manipulation (as whack in pluto).
+ * Messages of type stroke_msg_t's are sent over a unix socket
+ * (/var/run/charon.ctl). stroke_t implements the connections_t
+ * and the policies_t interface, which means it acts as a
+ * configuration backend for those too. stroke_t uses an own
+ * thread to read from the socket.
+ *
+ * @warning DO NOT cast stroke_t to any of the implemented interfaces!
+ * stroke_t implements multiple interfaces, so you must use
+ * stroke_t.interface_xy to access the specific interface! You have
+ * been warned...
+ *
+ * @todo Add clean thread cancellation
+ *
+ * @b Constructors:
+ * - stroke_create()
+ *
+ * @ingroup threads
+ */
+struct stroke_t {
+
+ /**
+ * Implements connection_store_t interface
+ */
+ connection_store_t connections;
+
+ /**
+ * Implements policy_store_t interface
+ */
+ policy_store_t policies;
+
+ /**
+ * Implements credential_store_t interfacce
+ */
+ credential_store_t credentials;
+
+ /**
+ * @brief Destroy a stroke_t instance.
+ *
+ * @param this stroke_t objec to destroy
+ */
+ void (*destroy) (stroke_t *this);
+};
+
+
+/**
+ * @brief Create the stroke interface and listen on the socket.
+ *
+ * @return stroke_t object
+ *
+ * @ingroup threads
+ */
+stroke_t *stroke_create();
+
+#endif /* STROKE_H_ */