mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-03 00:00:24 -04:00
kernel-listener: Add helpers to clone/destroy acquire data
This commit is contained in:
parent
6ae29af18b
commit
c563b0d930
@ -50,7 +50,8 @@ encoding/payloads/fragment_payload.c encoding/payloads/fragment_payload.h \
|
||||
kernel/kernel_interface.c kernel/kernel_interface.h \
|
||||
kernel/kernel_ipsec.c kernel/kernel_ipsec.h \
|
||||
kernel/kernel_net.c kernel/kernel_net.h \
|
||||
kernel/kernel_listener.h kernel/kernel_handler.c kernel/kernel_handler.h \
|
||||
kernel/kernel_listener.c kernel/kernel_listener.h \
|
||||
kernel/kernel_handler.c kernel/kernel_handler.h \
|
||||
network/receiver.c network/receiver.h network/sender.c network/sender.h \
|
||||
network/socket.c network/socket.h \
|
||||
network/socket_manager.c network/socket_manager.h \
|
||||
|
@ -48,7 +48,8 @@ encoding/payloads/fragment_payload.c encoding/payloads/fragment_payload.h \
|
||||
kernel/kernel_interface.c kernel/kernel_interface.h \
|
||||
kernel/kernel_ipsec.c kernel/kernel_ipsec.h \
|
||||
kernel/kernel_net.c kernel/kernel_net.h \
|
||||
kernel/kernel_listener.h kernel/kernel_handler.c kernel/kernel_handler.h \
|
||||
kernel/kernel_listener.c kernel/kernel_listener.h \
|
||||
kernel/kernel_handler.c kernel/kernel_handler.h \
|
||||
network/receiver.c network/receiver.h network/sender.c network/sender.h \
|
||||
network/socket.c network/socket.h \
|
||||
network/socket_manager.c network/socket_manager.h \
|
||||
|
57
src/libcharon/kernel/kernel_listener.c
Normal file
57
src/libcharon/kernel/kernel_listener.c
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Tobias Brunner
|
||||
*
|
||||
* Copyright (C) secunet Security Networks AG
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include "kernel_listener.h"
|
||||
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
kernel_acquire_data_t *kernel_acquire_data_clone(kernel_acquire_data_t *data)
|
||||
{
|
||||
kernel_acquire_data_t *clone;
|
||||
|
||||
INIT(clone);
|
||||
|
||||
*clone = *data;
|
||||
|
||||
if (clone->src)
|
||||
{
|
||||
clone->src = clone->src->clone(clone->src);
|
||||
}
|
||||
if (clone->dst)
|
||||
{
|
||||
clone->dst = clone->dst->clone(clone->dst);
|
||||
}
|
||||
if (clone->label)
|
||||
{
|
||||
clone->label = clone->label->clone(clone->label);
|
||||
}
|
||||
return clone;
|
||||
}
|
||||
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
void kernel_acquire_data_destroy(kernel_acquire_data_t *data)
|
||||
{
|
||||
if (data)
|
||||
{
|
||||
DESTROY_IF(data->src);
|
||||
DESTROY_IF(data->dst);
|
||||
DESTROY_IF(data->label);
|
||||
free(data);
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2010-2013 Tobias Brunner
|
||||
* Copyright (C) 2010-2025 Tobias Brunner
|
||||
*
|
||||
* Copyright (C) secunet Security Networks AG
|
||||
*
|
||||
@ -119,4 +119,21 @@ struct kernel_listener_t {
|
||||
bool (*tun)(kernel_listener_t *this, tun_device_t *tun, bool created);
|
||||
};
|
||||
|
||||
/**
|
||||
* Clone the given acquire data received from the kernel.
|
||||
*
|
||||
* @param data data to clone
|
||||
* @return clone of the original object and all associated data
|
||||
*/
|
||||
kernel_acquire_data_t *kernel_acquire_data_clone(kernel_acquire_data_t *data);
|
||||
|
||||
/**
|
||||
* Destroy the given previously cloned acquire data.
|
||||
*
|
||||
* @note This must not be used on the original data from the kernel interface.
|
||||
*
|
||||
* @param data cloned data to destroy
|
||||
*/
|
||||
void kernel_acquire_data_destroy(kernel_acquire_data_t *data);
|
||||
|
||||
#endif /** KERNEL_LISTENER_H_ @}*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user