summaryrefslogtreecommitdiff
path: root/src/libimcv/imv/imv_session.h
diff options
context:
space:
mode:
authorYves-Alexis Perez <corsac@debian.org>2013-08-25 15:37:27 +0200
committerYves-Alexis Perez <corsac@debian.org>2013-08-25 15:37:27 +0200
commitc7307e752d8f47c68f834e22ee2ce0a14a70e695 (patch)
treefbb442a20ab54aad511b46a070e65b8d09c22791 /src/libimcv/imv/imv_session.h
parentf74c6d77c3efb529e7403eeef0613c061eb895b3 (diff)
parent6b99c8d9cff7b3e8ae8f3204b99e7ea40f791349 (diff)
downloadvyos-strongswan-c7307e752d8f47c68f834e22ee2ce0a14a70e695.tar.gz
vyos-strongswan-c7307e752d8f47c68f834e22ee2ce0a14a70e695.zip
Merge tag 'upstream/5.1.0'
Upstream version 5.1.0
Diffstat (limited to 'src/libimcv/imv/imv_session.h')
-rw-r--r--src/libimcv/imv/imv_session.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/src/libimcv/imv/imv_session.h b/src/libimcv/imv/imv_session.h
new file mode 100644
index 000000000..6b94523b8
--- /dev/null
+++ b/src/libimcv/imv/imv_session.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2013 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 imv_session_t imv_session
+ * @{ @ingroup libimcv_imv
+ */
+
+#ifndef IMV_SESSION_H_
+#define IMV_SESSION_H_
+
+#include "imv_workitem.h"
+
+#include <tncifimv.h>
+
+#include <library.h>
+
+typedef struct imv_session_t imv_session_t;
+
+/**
+ * IMV session interface
+ */
+struct imv_session_t {
+
+ /**
+ * Get unique session ID
+ *
+ * @return Session ID
+ */
+ int (*get_session_id)(imv_session_t *this);
+
+ /**
+ * Get TNCCS Connection ID
+ *
+ * @return TNCCS Connection ID
+ */
+ TNC_ConnectionID (*get_connection_id)(imv_session_t *this);
+
+ /**
+ * Set policy_started status
+ *
+ * @param start TRUE if policy started, FALSE if policy stopped
+ */
+ void (*set_policy_started)(imv_session_t *this, bool start);
+
+ /**
+ * Get policy_started status
+ *
+ * @return TRUE if policy started, FALSE if policy stopped
+ */
+ bool (*get_policy_started)(imv_session_t *this);
+
+ /**
+ * Insert workitem into list
+ *
+ * @param workitem Workitem to be inserted
+ */
+ void (*insert_workitem)(imv_session_t *this, imv_workitem_t *workitem);
+
+ /**
+ * Remove workitem from list
+ *
+ * @param enumerator Enumerator pointing to workitem to be removed
+ */
+ void (*remove_workitem)(imv_session_t *this, enumerator_t *enumerator);
+
+ /**
+ * Create workitem enumerator
+ *
+ */
+ enumerator_t* (*create_workitem_enumerator)(imv_session_t *this);
+
+ /**
+ * Get number of workitem allocated to a given IMV
+ *
+ * @param imv_id IMV ID
+ * @return Number of workitems assigned to given IMV
+ */
+ int (*get_workitem_count)(imv_session_t *this, TNC_IMVID imv_id);
+
+ /**
+ * Get reference to session
+ */
+ imv_session_t* (*get_ref)(imv_session_t*);
+
+ /**
+ * Destroys an imv_session_t object
+ */
+ void (*destroy)(imv_session_t *this);
+};
+
+/**
+ * Create an imv_session_t instance
+ *
+ * @param session_id Unique Session ID
+ * @param id Associated Connection ID
+ */
+imv_session_t* imv_session_create(int session_id, TNC_ConnectionID id);
+
+#endif /** IMV_SESSION_H_ @}*/