add overall recommendation to session database entry

This commit is contained in:
Andreas Steffen
2013-06-21 23:25:22 +02:00
parent 4f6bf1a843
commit 2964562199
6 changed files with 75 additions and 38 deletions
+20 -3
View File
@@ -119,6 +119,7 @@ TNC_Result TNC_IMV_NotifyConnectionChange(TNC_IMVID imv_id,
TNC_ConnectionID connection_id,
TNC_ConnectionState new_state)
{
TNC_IMV_Action_Recommendation rec;
imv_state_t *state;
imv_session_t *session;
@@ -133,15 +134,31 @@ TNC_Result TNC_IMV_NotifyConnectionChange(TNC_IMVID imv_id,
state = imv_os_state_create(connection_id);
return imv_os->create_state(imv_os, state);
case TNC_CONNECTION_STATE_DELETE:
return imv_os->delete_state(imv_os, connection_id);
case TNC_CONNECTION_STATE_ACCESS_ALLOWED:
case TNC_CONNECTION_STATE_ACCESS_ISOLATED:
case TNC_CONNECTION_STATE_ACCESS_NONE:
if (imcv_db && imv_os->get_state(imv_os, connection_id, &state))
{
switch (new_state)
{
case TNC_CONNECTION_STATE_ACCESS_ALLOWED:
rec = TNC_IMV_ACTION_RECOMMENDATION_ALLOW;
break;
case TNC_CONNECTION_STATE_ACCESS_ISOLATED:
rec = TNC_IMV_ACTION_RECOMMENDATION_ISOLATE;
break;
case TNC_CONNECTION_STATE_ACCESS_NONE:
default:
rec = TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS;
}
session = state->get_session(state);
imcv_db->add_recommendation(imcv_db, session, rec);
imcv_db->policy_script(imcv_db, session, FALSE);
}
return imv_os->delete_state(imv_os, connection_id);
/* fall through to default state */
default:
return imv_os->change_state(imv_os, connection_id,
new_state, NULL);
return imv_os->change_state(imv_os, connection_id, new_state, NULL);
}
}