123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /*
- * 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_database_t imv_database
- * @{ @ingroup libimcv_imv
- */
- #ifndef IMV_DATABASE_H_
- #define IMV_DATABASE_H_
- #include "imv_session.h"
- #include "imv_workitem.h"
- #include <tncifimv.h>
- #include <library.h>
- typedef struct imv_database_t imv_database_t;
- /**
- * IMV database interface
- */
- struct imv_database_t {
- /**
- * Create or get a session associated with a TNCCS connection
- *
- * @param conn_id TNCCS Connection ID
- * @param ar_id_type Access Requestor identity type
- * @param ar_id_value Access Requestor identity value
- * @return Session associated with TNCCS Connection
- */
- imv_session_t* (*add_session)(imv_database_t *this,
- TNC_ConnectionID conn_id,
- uint32_t ar_id_type, chunk_t ar_id_value);
- /**
- * Remove and delete a session
- *
- * @param session Session
- */
- void (*remove_session)(imv_database_t *this, imv_session_t *session);
- /**
- * Add final recommendation to a session database entry
- *
- * @param session Session
- * @param rec Final recommendation
- */
- void (*add_recommendation)(imv_database_t *this, imv_session_t *session,
- TNC_IMV_Action_Recommendation rec);
- /**
- * Announce session start/stop to policy script
- *
- * @param session Session
- * @param start TRUE if session start, FALSE if session stop
- * @return TRUE if command successful, FALSE otherwise
- */
- bool (*policy_script)(imv_database_t *this, imv_session_t *session,
- bool start);
- /**
- * Finalize a workitem
- *
- * @param workitem Workitem to be finalized
- */
- bool (*finalize_workitem)(imv_database_t *this, imv_workitem_t *workitem);
- /**
- * Get database handle
- *
- * @return Database handle
- */
- database_t* (*get_database)(imv_database_t *this);
- /**
- * Destroys an imv_database_t object
- */
- void (*destroy)(imv_database_t *this);
- };
- /**
- * Create an imv_database_t instance
- *
- * @param uri Database uri
- * @param script Policy Manager script
- */
- imv_database_t* imv_database_create(char *uri, char *script);
- #endif /** IMV_DATABASE_H_ @}*/
|