/**
@file     net_events.h
@brief    Serializers to send network based events
@details  Copyright (c) 2024 Acronis International GmbH
@author   Denis Kopyrin (denis.kopyrin@acronis.com)
@since    $Id: $
*/

#pragma once

#ifdef KERNEL_MOCK
#include "mock/mock_net.h"
#endif

#include <linux/net.h>
#include <linux/socket.h>

#include "task_info_map.h"
#include "string_view.h"

void net_event_bind(task_info_t* task, struct socket *sock, struct sockaddr *addr, int addr_len);
void net_event_connect(task_info_t* task, struct socket *sock, struct sockaddr *addr, int addr_len);
void net_event_create_raw(task_info_t* task, int family, int protocol);
void net_event_sendmsg_tcp(task_info_t* task, struct socket *sock);
void net_event_sendmsg_udp(task_info_t* task, struct socket *sock, struct msghdr *msg);
void net_event_recvmsg_raw(task_info_t* task, struct socket *sock);
void net_event_post_accept(task_info_t* task, struct socket *sock);
void net_event_auth_log(task_info_t* task, string_view_t str, bool success);
