refactored IMV policy management

This commit is contained in:
Andreas Steffen
2013-06-21 23:25:22 +02:00
parent 4f9aabbfd7
commit a6266485be
23 changed files with 889 additions and 600 deletions
+2 -1
View File
@@ -5,6 +5,7 @@ noinst_LTLIBRARIES = libtncif.la
libtncif_la_SOURCES = \
tncif.h tncifimc.h tncifimv.h tncif_names.h tncif_names.c \
tncif_identity.h tncif_identity.c \
tncif_pa_subtypes.h tncif_pa_subtypes.c
tncif_pa_subtypes.h tncif_pa_subtypes.c \
tncif_policy.h tncif_policy.c
EXTRA_DIST = Android.mk
+106
View File
@@ -0,0 +1,106 @@
/*
* 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.
*/
#include "tncif_policy.h"
/**
* See header
*/
TNC_IMV_Evaluation_Result tncif_policy_update_evaluation(
TNC_IMV_Evaluation_Result eval,
TNC_IMV_Evaluation_Result eval_add)
{
switch (eval)
{
case TNC_IMV_EVALUATION_RESULT_COMPLIANT:
switch (eval_add)
{
case TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR:
case TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR:
case TNC_IMV_EVALUATION_RESULT_ERROR:
eval = eval_add;
break;
default:
break;
}
break;
case TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR:
switch (eval_add)
{
case TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR:
case TNC_IMV_EVALUATION_RESULT_ERROR:
eval = eval_add;
break;
default:
break;
}
break;
case TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR:
switch (eval_add)
{
case TNC_IMV_EVALUATION_RESULT_ERROR:
eval = eval_add;
break;
default:
break;
}
break;
case TNC_IMV_EVALUATION_RESULT_DONT_KNOW:
eval = eval_add;
break;
default:
break;
}
return eval;
}
/**
* See header
*/
TNC_IMV_Action_Recommendation tncif_policy_update_recommendation(
TNC_IMV_Action_Recommendation rec,
TNC_IMV_Action_Recommendation rec_add)
{
switch (rec)
{
case TNC_IMV_ACTION_RECOMMENDATION_ALLOW:
switch (rec_add)
{
case TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS:
case TNC_IMV_ACTION_RECOMMENDATION_ISOLATE:
rec = rec_add;
break;
default:
break;
}
break;
case TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS:
switch (rec_add)
{
case TNC_IMV_ACTION_RECOMMENDATION_ISOLATE:
rec = rec_add;
break;
default:
break;
}
break;
case TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION:
rec = rec_add;
break;
default:
break;
}
return rec;
}
+53
View File
@@ -0,0 +1,53 @@
/*
* 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 libtncif libtncif
*
* @addtogroup libtncif
* TNC interface definitions
*
* @defgroup tnc_policy tnc_policy
* @{ @ingroup libtncif
*/
#ifndef TNCIF_POLICY_H_
#define TNCIF_POLICY_H_
#include "tncifimv.h"
/**
* Create an empty TNC Identity object
*
* @param eval Existing evaluation to be updated
* @param eval_add Partial evaluation to be added
* @return Updated evaluation
*/
TNC_IMV_Evaluation_Result tncif_policy_update_evaluation(
TNC_IMV_Evaluation_Result eval,
TNC_IMV_Evaluation_Result eval_add);
/**
* Create an empty TNC Identity object
*
* @param rec Existing recommendationto be updated
* @param rec_add Partial recommendation to be added
* @return Updated recommendation
*/
TNC_IMV_Action_Recommendation tncif_policy_update_recommendation(
TNC_IMV_Action_Recommendation rec,
TNC_IMV_Action_Recommendation rec_add);
#endif /** TNCIF_POLICY_H_ @}*/