allow registration of multiple message type
This commit is contained in:
@@ -38,8 +38,9 @@
|
||||
|
||||
static const char imc_name[] = "OS";
|
||||
|
||||
#define IMC_VENDOR_ID PEN_IETF
|
||||
#define IMC_SUBTYPE PA_SUBTYPE_IETF_OPERATING_SYSTEM
|
||||
static pen_type_t msg_types[] = {
|
||||
{ PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM }
|
||||
};
|
||||
|
||||
static imc_agent_t *imc_os;
|
||||
static os_info_t *os;
|
||||
@@ -57,8 +58,7 @@ TNC_Result TNC_IMC_Initialize(TNC_IMCID imc_id,
|
||||
DBG1(DBG_IMC, "IMC \"%s\" has already been initialized", imc_name);
|
||||
return TNC_RESULT_ALREADY_INITIALIZED;
|
||||
}
|
||||
imc_os = imc_agent_create(imc_name, IMC_VENDOR_ID, IMC_SUBTYPE,
|
||||
imc_id, actual_version);
|
||||
imc_os = imc_agent_create(imc_name, msg_types, 1, imc_id, actual_version);
|
||||
if (!imc_os)
|
||||
{
|
||||
return TNC_RESULT_FATAL;
|
||||
@@ -231,7 +231,8 @@ TNC_Result TNC_IMC_BeginHandshake(TNC_IMCID imc_id,
|
||||
add_fwd_enabled(attr_list);
|
||||
add_default_pwd_enabled(attr_list);
|
||||
result = imc_os->send_message(imc_os, connection_id, FALSE, 0,
|
||||
TNC_IMVID_ANY, attr_list);
|
||||
TNC_IMVID_ANY, PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM,
|
||||
attr_list);
|
||||
attr_list->destroy(attr_list);
|
||||
}
|
||||
|
||||
@@ -356,7 +357,8 @@ static TNC_Result receive_message(TNC_IMCID imc_id,
|
||||
if (attr_list->get_count(attr_list))
|
||||
{
|
||||
result = imc_os->send_message(imc_os, connection_id, TRUE, imc_id,
|
||||
src_imv_id, attr_list);
|
||||
src_imv_id, PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM,
|
||||
attr_list);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -34,8 +34,9 @@
|
||||
|
||||
static const char imc_name[] = "Scanner";
|
||||
|
||||
#define IMC_VENDOR_ID PEN_ITA
|
||||
#define IMC_SUBTYPE PA_SUBTYPE_ITA_SCANNER
|
||||
static pen_type_t msg_types[] = {
|
||||
{ PEN_ITA, PA_SUBTYPE_ITA_SCANNER }
|
||||
};
|
||||
|
||||
static imc_agent_t *imc_scanner;
|
||||
|
||||
@@ -52,8 +53,7 @@ TNC_Result TNC_IMC_Initialize(TNC_IMCID imc_id,
|
||||
DBG1(DBG_IMC, "IMC \"%s\" has already been initialized", imc_name);
|
||||
return TNC_RESULT_ALREADY_INITIALIZED;
|
||||
}
|
||||
imc_scanner = imc_agent_create(imc_name, IMC_VENDOR_ID, IMC_SUBTYPE,
|
||||
imc_id, actual_version);
|
||||
imc_scanner = imc_agent_create(imc_name, msg_types, 1, imc_id, actual_version);
|
||||
if (!imc_scanner)
|
||||
{
|
||||
return TNC_RESULT_FATAL;
|
||||
@@ -247,7 +247,8 @@ static TNC_Result send_message(TNC_ConnectionID connection_id)
|
||||
attr_list = linked_list_create();
|
||||
attr_list->insert_last(attr_list, attr);
|
||||
result = imc_scanner->send_message(imc_scanner, connection_id, FALSE, 0,
|
||||
TNC_IMVID_ANY, attr_list);
|
||||
TNC_IMVID_ANY, PEN_ITA, PA_SUBTYPE_ITA_SCANNER,
|
||||
attr_list);
|
||||
attr_list->destroy(attr_list);
|
||||
|
||||
return result;
|
||||
|
||||
@@ -33,8 +33,9 @@
|
||||
|
||||
static const char imc_name[] = "Test";
|
||||
|
||||
#define IMC_VENDOR_ID PEN_ITA
|
||||
#define IMC_SUBTYPE PA_SUBTYPE_ITA_TEST
|
||||
static pen_type_t msg_types[] = {
|
||||
{ PEN_ITA, PA_SUBTYPE_ITA_TEST }
|
||||
};
|
||||
|
||||
static imc_agent_t *imc_test;
|
||||
|
||||
@@ -51,8 +52,7 @@ TNC_Result TNC_IMC_Initialize(TNC_IMCID imc_id,
|
||||
DBG1(DBG_IMC, "IMC \"%s\" has already been initialized", imc_name);
|
||||
return TNC_RESULT_ALREADY_INITIALIZED;
|
||||
}
|
||||
imc_test = imc_agent_create(imc_name, IMC_VENDOR_ID, IMC_SUBTYPE,
|
||||
imc_id, actual_version);
|
||||
imc_test = imc_agent_create(imc_name, msg_types, 1, imc_id, actual_version);
|
||||
if (!imc_test)
|
||||
{
|
||||
return TNC_RESULT_FATAL;
|
||||
@@ -208,7 +208,8 @@ static TNC_Result send_message(imc_state_t *state, TNC_UInt32 src_imc_id,
|
||||
|
||||
excl = dst_imv_id != TNC_IMVID_ANY;
|
||||
result = imc_test->send_message(imc_test, connection_id, excl, src_imc_id,
|
||||
dst_imv_id, attr_list);
|
||||
dst_imv_id, PEN_ITA, PA_SUBTYPE_ITA_TEST,
|
||||
attr_list);
|
||||
attr_list->destroy(attr_list);
|
||||
|
||||
return result;
|
||||
|
||||
@@ -39,8 +39,9 @@
|
||||
|
||||
static const char imv_name[] = "OS";
|
||||
|
||||
#define IMV_VENDOR_ID PEN_IETF
|
||||
#define IMV_SUBTYPE PA_SUBTYPE_IETF_OPERATING_SYSTEM
|
||||
static pen_type_t msg_types[] = {
|
||||
{ PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM }
|
||||
};
|
||||
|
||||
static imv_agent_t *imv_os;
|
||||
|
||||
@@ -57,8 +58,7 @@ TNC_Result TNC_IMV_Initialize(TNC_IMVID imv_id,
|
||||
DBG1(DBG_IMV, "IMV \"%s\" has already been initialized", imv_name);
|
||||
return TNC_RESULT_ALREADY_INITIALIZED;
|
||||
}
|
||||
imv_os = imv_agent_create(imv_name, IMV_VENDOR_ID, IMV_SUBTYPE,
|
||||
imv_id, actual_version);
|
||||
imv_os = imv_agent_create(imv_name, msg_types, 1, imv_id, actual_version);
|
||||
if (!imv_os)
|
||||
{
|
||||
return TNC_RESULT_FATAL;
|
||||
@@ -285,11 +285,13 @@ static TNC_Result receive_message(TNC_IMVID imv_id,
|
||||
if (assessment)
|
||||
{
|
||||
attr_list->destroy_offset(attr_list, offsetof(pa_tnc_attr_t, destroy));
|
||||
return imv_os->provide_recommendation(imv_os, connection_id, src_imc_id);
|
||||
return imv_os->provide_recommendation(imv_os, connection_id, src_imc_id,
|
||||
PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM);
|
||||
}
|
||||
|
||||
result = imv_os->send_message(imv_os, connection_id, TRUE, imv_id,
|
||||
src_imc_id, attr_list);
|
||||
src_imc_id, PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM,
|
||||
attr_list);
|
||||
attr_list->destroy(attr_list);
|
||||
|
||||
return result;
|
||||
@@ -343,8 +345,8 @@ TNC_Result TNC_IMV_SolicitRecommendation(TNC_IMVID imv_id,
|
||||
DBG1(DBG_IMV, "IMV \"%s\" has not been initialized", imv_name);
|
||||
return TNC_RESULT_NOT_INITIALIZED;
|
||||
}
|
||||
return imv_os->provide_recommendation(imv_os, connection_id,
|
||||
TNC_IMCID_ANY);
|
||||
return imv_os->provide_recommendation(imv_os, connection_id, TNC_IMCID_ANY,
|
||||
PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -386,7 +388,8 @@ TNC_Result TNC_IMV_BatchEnding(TNC_IMVID imv_id,
|
||||
attr_cast->add(attr_cast, PEN_IETF, IETF_ATTR_FACTORY_DEFAULT_PWD_ENABLED);
|
||||
attr_list->insert_last(attr_list, attr);
|
||||
result = imv_os->send_message(imv_os, connection_id, FALSE, imv_id,
|
||||
TNC_IMCID_ANY, attr_list);
|
||||
TNC_IMCID_ANY, PEN_IETF, PA_SUBTYPE_IETF_OPERATING_SYSTEM,
|
||||
attr_list);
|
||||
attr_list->destroy(attr_list);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,8 +33,9 @@
|
||||
|
||||
static const char imv_name[] = "Scanner";
|
||||
|
||||
#define IMV_VENDOR_ID PEN_ITA
|
||||
#define IMV_SUBTYPE PA_SUBTYPE_ITA_SCANNER
|
||||
static pen_type_t msg_types[] = {
|
||||
{ PEN_ITA, PA_SUBTYPE_ITA_SCANNER }
|
||||
};
|
||||
|
||||
static imv_agent_t *imv_scanner;
|
||||
|
||||
@@ -124,8 +125,7 @@ TNC_Result TNC_IMV_Initialize(TNC_IMVID imv_id,
|
||||
DBG1(DBG_IMV, "IMV \"%s\" has already been initialized", imv_name);
|
||||
return TNC_RESULT_ALREADY_INITIALIZED;
|
||||
}
|
||||
imv_scanner = imv_agent_create(imv_name, IMV_VENDOR_ID, IMV_SUBTYPE,
|
||||
imv_id, actual_version);
|
||||
imv_scanner = imv_agent_create(imv_name, msg_types, 1, imv_id, actual_version);
|
||||
if (!imv_scanner)
|
||||
{
|
||||
return TNC_RESULT_FATAL;
|
||||
@@ -310,7 +310,7 @@ static TNC_Result receive_message(TNC_IMVID imv_id,
|
||||
TNC_IMV_EVALUATION_RESULT_ERROR);
|
||||
}
|
||||
return imv_scanner->provide_recommendation(imv_scanner, connection_id,
|
||||
src_imc_id);
|
||||
src_imc_id, PEN_ITA, PA_SUBTYPE_ITA_SCANNER);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -362,7 +362,7 @@ TNC_Result TNC_IMV_SolicitRecommendation(TNC_IMVID imv_id,
|
||||
return TNC_RESULT_NOT_INITIALIZED;
|
||||
}
|
||||
return imv_scanner->provide_recommendation(imv_scanner, connection_id,
|
||||
TNC_IMCID_ANY);
|
||||
TNC_IMCID_ANY, PEN_ITA, PA_SUBTYPE_ITA_SCANNER);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -33,8 +33,9 @@
|
||||
|
||||
static const char imv_name[] = "Test";
|
||||
|
||||
#define IMV_VENDOR_ID PEN_ITA
|
||||
#define IMV_SUBTYPE PA_SUBTYPE_ITA_TEST
|
||||
static pen_type_t msg_types[] = {
|
||||
{ PEN_ITA, PA_SUBTYPE_ITA_TEST }
|
||||
};
|
||||
|
||||
static imv_agent_t *imv_test;
|
||||
|
||||
@@ -51,8 +52,7 @@ TNC_Result TNC_IMV_Initialize(TNC_IMVID imv_id,
|
||||
DBG1(DBG_IMV, "IMV \"%s\" has already been initialized", imv_name);
|
||||
return TNC_RESULT_ALREADY_INITIALIZED;
|
||||
}
|
||||
imv_test = imv_agent_create(imv_name, IMV_VENDOR_ID, IMV_SUBTYPE,
|
||||
imv_id, actual_version);
|
||||
imv_test = imv_agent_create(imv_name, msg_types, 1, imv_id, actual_version);
|
||||
if (!imv_test)
|
||||
{
|
||||
return TNC_RESULT_FATAL;
|
||||
@@ -210,7 +210,7 @@ static TNC_Result receive_message(TNC_IMVID imv_id,
|
||||
TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION,
|
||||
TNC_IMV_EVALUATION_RESULT_ERROR);
|
||||
return imv_test->provide_recommendation(imv_test, connection_id,
|
||||
src_imc_id);
|
||||
src_imc_id, PEN_ITA, PA_SUBTYPE_ITA_TEST);
|
||||
}
|
||||
|
||||
/* request a handshake retry ? */
|
||||
@@ -228,14 +228,15 @@ static TNC_Result receive_message(TNC_IMVID imv_id,
|
||||
attr = ita_attr_command_create("repeat");
|
||||
attr_list->insert_last(attr_list, attr);
|
||||
result = imv_test->send_message(imv_test, connection_id, TRUE, imv_id,
|
||||
src_imc_id, attr_list);
|
||||
src_imc_id, PEN_ITA, PA_SUBTYPE_ITA_TEST, attr_list);
|
||||
attr_list->destroy(attr_list);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return received_command ? imv_test->provide_recommendation(imv_test,
|
||||
connection_id, src_imc_id) : TNC_RESULT_SUCCESS;
|
||||
connection_id, src_imc_id, PEN_ITA, PA_SUBTYPE_ITA_TEST) :
|
||||
TNC_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -287,7 +288,7 @@ TNC_Result TNC_IMV_SolicitRecommendation(TNC_IMVID imv_id,
|
||||
return TNC_RESULT_NOT_INITIALIZED;
|
||||
}
|
||||
return imv_test->provide_recommendation(imv_test, connection_id,
|
||||
TNC_IMCID_ANY);
|
||||
TNC_IMCID_ANY, PEN_ITA, PA_SUBTYPE_ITA_TEST);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user