imc/imv->send_message() uses attr_list

This commit is contained in:
Andreas Steffen
2012-07-11 23:34:51 +02:00
parent c9c3da66a8
commit 246c9ad831
9 changed files with 59 additions and 81 deletions
+13 -2
View File
@@ -18,7 +18,6 @@
#include <tncif_names.h>
#include <debug.h>
#include <utils/linked_list.h>
#include <threading/rwlock.h>
typedef struct private_imv_agent_t private_imv_agent_t;
@@ -470,11 +469,14 @@ METHOD(imv_agent_t, get_state, bool,
METHOD(imv_agent_t, send_message, TNC_Result,
private_imv_agent_t *this, TNC_ConnectionID connection_id, bool excl,
TNC_UInt32 src_imv_id, TNC_UInt32 dst_imc_id, chunk_t msg)
TNC_UInt32 src_imv_id, TNC_UInt32 dst_imc_id, linked_list_t *attr_list)
{
TNC_MessageType type;
TNC_UInt32 msg_flags;
imv_state_t *state;
pa_tnc_attr_t *attr;
pa_tnc_msg_t *pa_tnc_msg;
chunk_t msg;
state = find_connection(this, connection_id);
if (!state)
@@ -484,6 +486,15 @@ METHOD(imv_agent_t, send_message, TNC_Result,
return TNC_RESULT_FATAL;
}
pa_tnc_msg = pa_tnc_msg_create();
while (attr_list->remove_first(attr_list, (void**)&attr) == SUCCESS)
{
pa_tnc_msg->add_attribute(pa_tnc_msg, attr);
}
pa_tnc_msg->build(pa_tnc_msg);
msg = pa_tnc_msg->get_encoding(pa_tnc_msg);
if (state->has_long(state) && this->send_message_long)
{
if (!src_imv_id)
+3 -2
View File
@@ -26,6 +26,7 @@
#include <tncifimv.h>
#include <pen/pen.h>
#include <utils/linked_list.h>
#include <library.h>
@@ -104,13 +105,13 @@ struct imv_agent_t {
* @param excl exclusive flag
* @param src_imv_id IMV ID to be set as source
* @param dst_imc_id IMD ID to be set as destination
* @param msg message to send
* @param attr_list list of PA-TNC attributes to send
* @return TNC result code
*/
TNC_Result (*send_message)(imv_agent_t *this,
TNC_ConnectionID connection_id, bool excl,
TNC_UInt32 src_imv_id, TNC_UInt32 dst_imc_id,
chunk_t msg);
linked_list_t *attr_list);
/**
* Call when a PA-TNC message was received