aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2011-06-05 12:27:20 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2011-06-05 12:27:20 +0200
commita82ff71cd77eaed5c65a7a097997409435ee8bb5 (patch)
treeb21e5b5eebd2f9e55c2399d67adce2ff8aaf35ea /src/libcharon
parent2f7f248f1108aeb2d5fe5a7592329b1c1e41ad47 (diff)
downloadstrongswan-a82ff71cd77eaed5c65a7a097997409435ee8bb5.tar.bz2
strongswan-a82ff71cd77eaed5c65a7a097997409435ee8bb5.tar.xz
map action recommendation codes to PB access recommendation codes
Diffstat (limited to 'src/libcharon')
-rw-r--r--src/libcharon/plugins/tnccs_20/tnccs_20.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/libcharon/plugins/tnccs_20/tnccs_20.c b/src/libcharon/plugins/tnccs_20/tnccs_20.c
index df3fe8504..849789252 100644
--- a/src/libcharon/plugins/tnccs_20/tnccs_20.c
+++ b/src/libcharon/plugins/tnccs_20/tnccs_20.c
@@ -461,6 +461,7 @@ static void check_and_build_recommendation(private_tnccs_20_t *this)
chunk_t reason, language;
enumerator_t *enumerator;
pb_tnc_msg_t *msg;
+ pb_access_recommendation_code_t pb_rec;
if (!this->recs->have_recommendation(this->recs, &rec, &eval))
{
@@ -474,10 +475,22 @@ static void check_and_build_recommendation(private_tnccs_20_t *this)
this->batch->add_msg(this->batch, msg);
/**
- * IMV Action Recommendation and PB Access Recommendation codes
- * are shifted by one.
+ * Map IMV Action Recommendation codes to PB Access Recommendation codes
*/
- msg = pb_access_recommendation_msg_create(rec + 1);
+ switch (rec)
+ {
+ case TNC_IMV_ACTION_RECOMMENDATION_ALLOW:
+ pb_rec = PB_REC_ACCESS_ALLOWED;
+ break;
+ case TNC_IMV_ACTION_RECOMMENDATION_ISOLATE:
+ pb_rec = PB_REC_QUARANTINED;
+ break;
+ case TNC_IMV_ACTION_RECOMMENDATION_NO_ACCESS:
+ case TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION:
+ default:
+ pb_rec = PB_REC_ACCESS_DENIED;
+ }
+ msg = pb_access_recommendation_msg_create(pb_rec);
this->batch->add_msg(this->batch, msg);
enumerator = this->recs->create_reason_enumerator(this->recs);