kernel-libipsec: Router reads packets from multiple TUN devices

These devices are collected via kernel_listener_t interface.
This commit is contained in:
Tobias Brunner
2013-06-21 17:03:21 +02:00
parent 7045defbff
commit dcaf8d570c
4 changed files with 268 additions and 16 deletions
@@ -13,6 +13,7 @@
*/
#include "kernel_libipsec_ipsec.h"
#include "kernel_libipsec_router.h"
#include <library.h>
#include <ipsec.h>
@@ -35,11 +36,6 @@ struct private_kernel_libipsec_ipsec_t {
*/
ipsec_event_listener_t ipsec_listener;
/**
* TUN device
*/
tun_device_t *tun;
/**
* Mutex to lock access to various lists
*/
@@ -389,7 +385,7 @@ static bool install_route(private_kernel_libipsec_ipsec_t *this,
}
INIT(route,
.if_name = strdup(this->tun->get_name(this->tun)),
.if_name = router->get_tun_name(router, is_virtual ? src_ip : NULL),
.src_ip = src_ip,
.dst_net = chunk_clone(policy->dst.net->get_address(policy->dst.net)),
.prefixlen = policy->dst.mask,
@@ -634,7 +630,6 @@ kernel_libipsec_ipsec_t *kernel_libipsec_ipsec_create()
.ipsec_listener = {
.expire = expire,
},
.tun = lib->get(lib, "kernel-libipsec-tun"),
.mutex = mutex_create(MUTEX_TYPE_DEFAULT),
.policies = linked_list_create(),
.excludes = linked_list_create(),