Attestion IMV provides recommendation only once
This commit is contained in:
@@ -304,6 +304,12 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
session = state->get_session(state);
|
session = state->get_session(state);
|
||||||
imv_id = this->agent->get_id(this->agent);
|
imv_id = this->agent->get_id(this->agent);
|
||||||
|
|
||||||
|
/* exit if a recommendation has already been provided */
|
||||||
|
if (state->get_action_flags(state) & IMV_ATTESTATION_FLAG_REC)
|
||||||
|
{
|
||||||
|
return TNC_RESULT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/* send an IETF attribute request if no platform info was received */
|
/* send an IETF attribute request if no platform info was received */
|
||||||
if (!platform_info &&
|
if (!platform_info &&
|
||||||
!(state->get_action_flags(state) & IMV_ATTESTATION_FLAG_ATTR_REQ))
|
!(state->get_action_flags(state) & IMV_ATTESTATION_FLAG_ATTR_REQ))
|
||||||
@@ -443,6 +449,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
TNC_IMV_EVALUATION_RESULT_ERROR);
|
TNC_IMV_EVALUATION_RESULT_ERROR);
|
||||||
result = out_msg->send_assessment(out_msg);
|
result = out_msg->send_assessment(out_msg);
|
||||||
out_msg->destroy(out_msg);
|
out_msg->destroy(out_msg);
|
||||||
|
state->set_action_flags(state, IMV_ATTESTATION_FLAG_REC);
|
||||||
|
|
||||||
if (result != TNC_RESULT_SUCCESS)
|
if (result != TNC_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
@@ -458,6 +466,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
{
|
{
|
||||||
result = out_msg->send_assessment(out_msg);
|
result = out_msg->send_assessment(out_msg);
|
||||||
out_msg->destroy(out_msg);
|
out_msg->destroy(out_msg);
|
||||||
|
state->set_action_flags(state, IMV_ATTESTATION_FLAG_REC);
|
||||||
|
|
||||||
if (result != TNC_RESULT_SUCCESS)
|
if (result != TNC_RESULT_SUCCESS)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ typedef enum imv_meas_error_t imv_meas_error_t;
|
|||||||
enum imv_attestation_flag_t {
|
enum imv_attestation_flag_t {
|
||||||
IMV_ATTESTATION_FLAG_ATTR_REQ = (1<<0),
|
IMV_ATTESTATION_FLAG_ATTR_REQ = (1<<0),
|
||||||
IMV_ATTESTATION_FLAG_ALGO = (1<<1),
|
IMV_ATTESTATION_FLAG_ALGO = (1<<1),
|
||||||
IMV_ATTESTATION_FLAG_FILE_MEAS = (1<<2)
|
IMV_ATTESTATION_FLAG_FILE_MEAS = (1<<2),
|
||||||
|
IMV_ATTESTATION_FLAG_REC = (1<<3)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user