session = state->get_session(state);
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 */
if (!platform_info &&
!(state->get_action_flags(state) & IMV_ATTESTATION_FLAG_ATTR_REQ))
TNC_IMV_EVALUATION_RESULT_ERROR);
result = out_msg->send_assessment(out_msg);
out_msg->destroy(out_msg);
+ state->set_action_flags(state, IMV_ATTESTATION_FLAG_REC);
+
if (result != TNC_RESULT_SUCCESS)
{
return result;
{
result = out_msg->send_assessment(out_msg);
out_msg->destroy(out_msg);
+ state->set_action_flags(state, IMV_ATTESTATION_FLAG_REC);
+
if (result != TNC_RESULT_SUCCESS)
{
return result;
enum imv_attestation_flag_t {
IMV_ATTESTATION_FLAG_ATTR_REQ = (1<<0),
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)
};
/**