?
/**
@file net_events.c
@brief Network based events
@details Copyright (c) 2024 Acronis International GmbH
@author Denis Kopyrin (denis.kopyrin@acronis.com)
@since $Id: $
*/
#include "net_events.h"
#include "net_compat.h"
#include "transport/message.h"
#include "si_templates.h"
#include "si_writer.h"
#include "si_writer_common.h"
#ifdef KERNEL_MOCK
#include "mock/mock.h"
#endif
#define SI_TMPL_AUTH_LOG(tmpl) \
SI_COMMON_FIELDS(tmpl) \
tmpl(FP_SI_PI_LOG_STR)
void net_event_auth_log(task_info_t* task_info, string_view_t str, bool success)
{
uint64_t unique_pid = make_unique_pid(current);
uint64_t event_uid;
const uint32_t event_size = SI_ESTIMATE_TMPL_SIZE(SI_TMPL_AUTH_LOG) + str.len;
msg_t *msg = msg_new(success ? FP_SI_OT_NOTIFY_SOCKET_AUTH_LOG_SUCCESS : FP_SI_OT_NOTIFY_SOCKET_AUTH_LOG_FAILED
, 0
, SI_CT_POST_CALLBACK
, unique_pid
, event_size);
if (!msg)
goto end;
event_uid = transport_global_sequence_next();
{
si_property_writer_t writer;
si_event_writer_init(&writer, &msg->event, event_size);
si_property_writer_write_common(&writer, event_uid, current->pid, current->tgid, task_info);
{
SiSizedString si_str;
si_str.value = str.str;
si_str.length = str.len;
si_property_writer_write_log_str(&writer, si_str);
}
si_event_writer_finalize(&msg->event, &writer);
}
msg->task_info = task_info_get(task_info);
msg->id = event_uid;
end:
return send_msg_async_unref(msg);
}