added TNC_TNCC_GetAttribute() and TNC_TNCC_SetAttribute() functions
This commit is contained in:
@@ -120,6 +120,47 @@ TNC_Result TNC_TNCC_SendMessageLong(TNC_IMCID imc_id,
|
|||||||
msg_flags, msg, msg_len, msg_vid, msg_subtype);
|
msg_flags, msg, msg_len, msg_vid, msg_subtype);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by the IMC to get the value of an attribute associated with a
|
||||||
|
* connection or with the TNCC as a whole.
|
||||||
|
*/
|
||||||
|
TNC_Result TNC_TNCC_GetAttribute(TNC_IMCID imc_id,
|
||||||
|
TNC_ConnectionID connection_id,
|
||||||
|
TNC_AttributeID attribute_id,
|
||||||
|
TNC_UInt32 buffer_len,
|
||||||
|
TNC_BufferReference buffer,
|
||||||
|
TNC_UInt32 *out_value_len)
|
||||||
|
{
|
||||||
|
if (!tnc->imcs->is_registered(tnc->imcs, imc_id))
|
||||||
|
{
|
||||||
|
DBG1(DBG_TNC, "ignoring GetAttribute() from unregistered IMC %u",
|
||||||
|
imc_id);
|
||||||
|
return TNC_RESULT_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
return tnc->tnccs->get_attribute(tnc->tnccs, TRUE, imc_id, connection_id,
|
||||||
|
attribute_id, buffer_len, buffer, out_value_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by the IMC to set the value of an attribute associated with a
|
||||||
|
* connection or with the TNCC as a whole.
|
||||||
|
*/
|
||||||
|
TNC_Result TNC_TNCC_SetAttribute(TNC_IMCID imc_id,
|
||||||
|
TNC_ConnectionID connection_id,
|
||||||
|
TNC_AttributeID attribute_id,
|
||||||
|
TNC_UInt32 buffer_len,
|
||||||
|
TNC_BufferReference buffer)
|
||||||
|
{
|
||||||
|
if (!tnc->imcs->is_registered(tnc->imcs, imc_id))
|
||||||
|
{
|
||||||
|
DBG1(DBG_TNC, "ignoring SetAttribute() from unregistered IMC %u",
|
||||||
|
imc_id);
|
||||||
|
return TNC_RESULT_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
return tnc->tnccs->set_attribute(tnc->tnccs, TRUE, imc_id, connection_id,
|
||||||
|
attribute_id, buffer_len, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by the IMC when it wants to reserve an additional IMC ID for itself
|
* Called by the IMC when it wants to reserve an additional IMC ID for itself
|
||||||
*/
|
*/
|
||||||
@@ -161,6 +202,14 @@ TNC_Result TNC_TNCC_BindFunction(TNC_IMCID id,
|
|||||||
{
|
{
|
||||||
*function_pointer = (void*)TNC_TNCC_SendMessageLong;
|
*function_pointer = (void*)TNC_TNCC_SendMessageLong;
|
||||||
}
|
}
|
||||||
|
else if (streq(function_name, "TNC_TNCC_GetAttribute"))
|
||||||
|
{
|
||||||
|
*function_pointer = (void*)TNC_TNCC_GetAttribute;
|
||||||
|
}
|
||||||
|
else if (streq(function_name, "TNC_TNCC_SetAttribute"))
|
||||||
|
{
|
||||||
|
*function_pointer = (void*)TNC_TNCC_SetAttribute;
|
||||||
|
}
|
||||||
else if (streq(function_name, "TNC_TNCC_ReserveAdditionalIMCID"))
|
else if (streq(function_name, "TNC_TNCC_ReserveAdditionalIMCID"))
|
||||||
{
|
{
|
||||||
*function_pointer = (void*)TNC_TNCC_ReserveAdditionalIMCID;
|
*function_pointer = (void*)TNC_TNCC_ReserveAdditionalIMCID;
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ TNC_Result TNC_TNCS_GetAttribute(TNC_IMVID imv_id,
|
|||||||
imv_id);
|
imv_id);
|
||||||
return TNC_RESULT_INVALID_PARAMETER;
|
return TNC_RESULT_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
return tnc->tnccs->get_attribute(tnc->tnccs, imv_id, connection_id,
|
return tnc->tnccs->get_attribute(tnc->tnccs, FALSE, imv_id, connection_id,
|
||||||
attribute_id, buffer_len, buffer, out_value_len);
|
attribute_id, buffer_len, buffer, out_value_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ TNC_Result TNC_TNCS_SetAttribute(TNC_IMVID imv_id,
|
|||||||
imv_id);
|
imv_id);
|
||||||
return TNC_RESULT_INVALID_PARAMETER;
|
return TNC_RESULT_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
return tnc->tnccs->set_attribute(tnc->tnccs, imv_id, connection_id,
|
return tnc->tnccs->set_attribute(tnc->tnccs, FALSE, imv_id, connection_id,
|
||||||
attribute_id, buffer_len, buffer);
|
attribute_id, buffer_len, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -368,7 +368,8 @@ METHOD(tnccs_manager_t, provide_recommendation, TNC_Result,
|
|||||||
}
|
}
|
||||||
|
|
||||||
METHOD(tnccs_manager_t, get_attribute, TNC_Result,
|
METHOD(tnccs_manager_t, get_attribute, TNC_Result,
|
||||||
private_tnc_tnccs_manager_t *this, TNC_IMVID imv_id,
|
private_tnc_tnccs_manager_t *this, bool is_imc,
|
||||||
|
TNC_UInt32 imcv_id,
|
||||||
TNC_ConnectionID id,
|
TNC_ConnectionID id,
|
||||||
TNC_AttributeID attribute_id,
|
TNC_AttributeID attribute_id,
|
||||||
TNC_UInt32 buffer_len,
|
TNC_UInt32 buffer_len,
|
||||||
@@ -379,7 +380,7 @@ METHOD(tnccs_manager_t, get_attribute, TNC_Result,
|
|||||||
tnccs_connection_entry_t *entry;
|
tnccs_connection_entry_t *entry;
|
||||||
recommendations_t *recs = NULL;
|
recommendations_t *recs = NULL;
|
||||||
|
|
||||||
if (id == TNC_CONNECTIONID_ANY ||
|
if (is_imc || id == TNC_CONNECTIONID_ANY ||
|
||||||
attribute_id != TNC_ATTRIBUTEID_PREFERRED_LANGUAGE)
|
attribute_id != TNC_ATTRIBUTEID_PREFERRED_LANGUAGE)
|
||||||
{
|
{
|
||||||
return TNC_RESULT_INVALID_PARAMETER;
|
return TNC_RESULT_INVALID_PARAMETER;
|
||||||
@@ -418,7 +419,8 @@ METHOD(tnccs_manager_t, get_attribute, TNC_Result,
|
|||||||
}
|
}
|
||||||
|
|
||||||
METHOD(tnccs_manager_t, set_attribute, TNC_Result,
|
METHOD(tnccs_manager_t, set_attribute, TNC_Result,
|
||||||
private_tnc_tnccs_manager_t *this, TNC_IMVID imv_id,
|
private_tnc_tnccs_manager_t *this, bool is_imc,
|
||||||
|
TNC_UInt32 imcv_id,
|
||||||
TNC_ConnectionID id,
|
TNC_ConnectionID id,
|
||||||
TNC_AttributeID attribute_id,
|
TNC_AttributeID attribute_id,
|
||||||
TNC_UInt32 buffer_len,
|
TNC_UInt32 buffer_len,
|
||||||
@@ -428,7 +430,7 @@ METHOD(tnccs_manager_t, set_attribute, TNC_Result,
|
|||||||
tnccs_connection_entry_t *entry;
|
tnccs_connection_entry_t *entry;
|
||||||
recommendations_t *recs = NULL;
|
recommendations_t *recs = NULL;
|
||||||
|
|
||||||
if (id == TNC_CONNECTIONID_ANY ||
|
if (is_imc || id == TNC_CONNECTIONID_ANY ||
|
||||||
(attribute_id != TNC_ATTRIBUTEID_REASON_STRING &&
|
(attribute_id != TNC_ATTRIBUTEID_REASON_STRING &&
|
||||||
attribute_id != TNC_ATTRIBUTEID_REASON_LANGUAGE))
|
attribute_id != TNC_ATTRIBUTEID_REASON_LANGUAGE))
|
||||||
{
|
{
|
||||||
@@ -454,11 +456,11 @@ METHOD(tnccs_manager_t, set_attribute, TNC_Result,
|
|||||||
|
|
||||||
if (attribute_id == TNC_ATTRIBUTEID_REASON_STRING)
|
if (attribute_id == TNC_ATTRIBUTEID_REASON_STRING)
|
||||||
{
|
{
|
||||||
return recs->set_reason_string(recs, imv_id, attribute);
|
return recs->set_reason_string(recs, imcv_id, attribute);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return recs->set_reason_language(recs, imv_id, attribute);
|
return recs->set_reason_language(recs, imcv_id, attribute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TNC_RESULT_INVALID_PARAMETER;
|
return TNC_RESULT_INVALID_PARAMETER;
|
||||||
|
|||||||
@@ -142,7 +142,8 @@ struct tnccs_manager_t {
|
|||||||
* Get the value of an attribute associated with a connection or with the
|
* Get the value of an attribute associated with a connection or with the
|
||||||
* TNCS as a whole.
|
* TNCS as a whole.
|
||||||
*
|
*
|
||||||
* @param imv_id ID of the IMV requesting the attribute
|
* @param is_imc TRUE if IMC, FALSE if IMV
|
||||||
|
* @param imcv_id ID of the IMC/IMV requesting the attribute
|
||||||
* @param id ID of target connection
|
* @param id ID of target connection
|
||||||
* @param attribute_id ID of the requested attribute
|
* @param attribute_id ID of the requested attribute
|
||||||
* @param buffer_len length of the buffer in bytes
|
* @param buffer_len length of the buffer in bytes
|
||||||
@@ -150,8 +151,8 @@ struct tnccs_manager_t {
|
|||||||
* @param out_value_len actual length of the returned attribute
|
* @param out_value_len actual length of the returned attribute
|
||||||
* @return return code
|
* @return return code
|
||||||
*/
|
*/
|
||||||
TNC_Result (*get_attribute)(tnccs_manager_t *this,
|
TNC_Result (*get_attribute)(tnccs_manager_t *this, bool is_imc,
|
||||||
TNC_IMVID imv_id,
|
TNC_UInt32 imcv_id,
|
||||||
TNC_ConnectionID id,
|
TNC_ConnectionID id,
|
||||||
TNC_AttributeID attribute_id,
|
TNC_AttributeID attribute_id,
|
||||||
TNC_UInt32 buffer_len,
|
TNC_UInt32 buffer_len,
|
||||||
@@ -162,15 +163,16 @@ struct tnccs_manager_t {
|
|||||||
* Set the value of an attribute associated with a connection or with the
|
* Set the value of an attribute associated with a connection or with the
|
||||||
* TNCS as a whole.
|
* TNCS as a whole.
|
||||||
*
|
*
|
||||||
* @param imv_id ID of the IMV setting the attribute
|
* @param is_imc TRUE if IMC, FALSE if IMV
|
||||||
|
* @param imcv_id ID of the IMC/IMV setting the attribute
|
||||||
* @param id ID of target connection
|
* @param id ID of target connection
|
||||||
* @param attribute_id ID of the attribute to be set
|
* @param attribute_id ID of the attribute to be set
|
||||||
* @param buffer_len length of the buffer in bytes
|
* @param buffer_len length of the buffer in bytes
|
||||||
* @param buffer pointer to the buffer
|
* @param buffer pointer to the buffer
|
||||||
* @return return code
|
* @return return code
|
||||||
*/
|
*/
|
||||||
TNC_Result (*set_attribute)(tnccs_manager_t *this,
|
TNC_Result (*set_attribute)(tnccs_manager_t *this, bool is_imc,
|
||||||
TNC_IMVID imv_id,
|
TNC_UInt32 imcv_id,
|
||||||
TNC_ConnectionID id,
|
TNC_ConnectionID id,
|
||||||
TNC_AttributeID attribute_id,
|
TNC_AttributeID attribute_id,
|
||||||
TNC_UInt32 buffer_len,
|
TNC_UInt32 buffer_len,
|
||||||
|
|||||||
Reference in New Issue
Block a user