141 lines
3.3 KiB
C
141 lines
3.3 KiB
C
/*
|
|
* 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_workitem_t imv_workitem
|
|
* @{ @ingroup libimcv_imv
|
|
*/
|
|
|
|
#ifndef IMV_WORKITEM_H_
|
|
#define IMV_WORKITEM_H_
|
|
|
|
#include <tncifimv.h>
|
|
|
|
#include <library.h>
|
|
|
|
typedef struct imv_workitem_t imv_workitem_t;
|
|
typedef enum imv_workitem_type_t imv_workitem_type_t;
|
|
|
|
enum imv_workitem_type_t {
|
|
IMV_WORKITEM_PACKAGES = 1,
|
|
IMV_WORKITEM_UNKNOWN_SOURCE = 2,
|
|
IMV_WORKITEM_FORWARDING = 3,
|
|
IMV_WORKITEM_DEFAULT_PWD = 4,
|
|
IMV_WORKITEM_FILE_REF_MEAS = 5,
|
|
IMV_WORKITEM_FILE_MEAS = 6,
|
|
IMV_WORKITEM_FILE_META = 7,
|
|
IMV_WORKITEM_DIR_REF_MEAS = 8,
|
|
IMV_WORKITEM_DIR_MEAS = 9,
|
|
IMV_WORKITEM_DIR_META = 10,
|
|
IMV_WORKITEM_TCP_PORT_OPEN = 11,
|
|
IMV_WORKITEM_TCP_PORT_BLOCK = 12,
|
|
IMV_WORKITEM_UDP_PORT_OPEN = 13,
|
|
IMV_WORKITEM_UDP_PORT_BLOCK = 14,
|
|
IMV_WORKITEM_SWID_TAGS = 15,
|
|
IMV_WORKITEM_TPM_ATTEST = 16
|
|
};
|
|
|
|
extern enum_name_t *imv_workitem_type_names;
|
|
|
|
/**
|
|
* IMV database interface
|
|
*/
|
|
struct imv_workitem_t {
|
|
|
|
/**
|
|
* Get primary workitem key
|
|
*
|
|
* @return Primary workitem key
|
|
*/
|
|
int (*get_id)(imv_workitem_t *this);
|
|
|
|
/**
|
|
* Get workitem type
|
|
*
|
|
* @return Workitem type
|
|
*/
|
|
imv_workitem_type_t (*get_type)(imv_workitem_t *this);
|
|
|
|
/**
|
|
* Set IMV ID
|
|
*
|
|
* @param id IMV ID
|
|
*/
|
|
void (*set_imv_id)(imv_workitem_t *this, TNC_IMVID imv_id);
|
|
|
|
/**
|
|
* Get IMV ID
|
|
*
|
|
* @return IMV ID
|
|
*/
|
|
TNC_IMVID (*get_imv_id)(imv_workitem_t *this);
|
|
|
|
/**
|
|
* Get string argument
|
|
*
|
|
* @return Argument string
|
|
*/
|
|
char* (*get_arg_str)(imv_workitem_t *this);
|
|
|
|
/**
|
|
* Get integer argument
|
|
*
|
|
* @return Argument integer
|
|
*/
|
|
int (*get_arg_int)(imv_workitem_t *this);
|
|
|
|
/**
|
|
* Set result string
|
|
*
|
|
* @param result Result string
|
|
* @param eval Evaluation Result
|
|
* @return Action Recommendation
|
|
*/
|
|
TNC_IMV_Action_Recommendation (*set_result)(imv_workitem_t *this,
|
|
char *result, TNC_IMV_Evaluation_Result eval);
|
|
|
|
/**
|
|
* Set result string
|
|
*
|
|
* @param result Result string
|
|
* @return Action Recommendatino
|
|
*/
|
|
TNC_IMV_Action_Recommendation (*get_result)(imv_workitem_t *this,
|
|
char **result);
|
|
|
|
/**
|
|
* Destroys an imv_workitem_t object
|
|
*/
|
|
void (*destroy)(imv_workitem_t *this);
|
|
};
|
|
|
|
/**
|
|
* Create an imv_workitem_t instance
|
|
*
|
|
* @param id Primary workitem key
|
|
* @param type Workitem type
|
|
* @param arg_str String argument
|
|
* @param arg_int Integer argument
|
|
* @param rec_fail Recommendation with minor/major non-compliance case
|
|
* @param rec_noresult Recommendation in don't know/error case
|
|
*/
|
|
imv_workitem_t *imv_workitem_create(int id, imv_workitem_type_t type,
|
|
char *arg_str, int arg_int,
|
|
TNC_IMV_Action_Recommendation rec_fail,
|
|
TNC_IMV_Action_Recommendation rec_noresult);
|
|
|
|
#endif /** IMV_WORKITEM_H_ @}*/
|