Do not enable/disable our own sync tunnel
This commit is contained in:
committed by
Martin Willi
parent
9fdf5f712e
commit
b7f15be136
@@ -171,12 +171,12 @@ plugin_t *plugin_create()
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->segments = ha_sync_segments_create(this->socket, this->kernel,
|
|
||||||
count, active);
|
|
||||||
if (secret)
|
if (secret)
|
||||||
{
|
{
|
||||||
this->tunnel = ha_sync_tunnel_create(secret, local, remote);
|
this->tunnel = ha_sync_tunnel_create(local, remote, secret);
|
||||||
}
|
}
|
||||||
|
this->segments = ha_sync_segments_create(this->socket, this->kernel,
|
||||||
|
this->tunnel, count, active);
|
||||||
if (fifo)
|
if (fifo)
|
||||||
{
|
{
|
||||||
this->ctl = ha_sync_ctl_create(this->segments);
|
this->ctl = ha_sync_ctl_create(this->segments);
|
||||||
|
|||||||
@@ -35,6 +35,11 @@ struct private_ha_sync_segments_t {
|
|||||||
*/
|
*/
|
||||||
ha_sync_socket_t *socket;
|
ha_sync_socket_t *socket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sync tunnel, if any
|
||||||
|
*/
|
||||||
|
ha_sync_tunnel_t *tunnel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to control segments at kernel level
|
* Interface to control segments at kernel level
|
||||||
*/
|
*/
|
||||||
@@ -110,15 +115,20 @@ static void enable_disable(private_ha_sync_segments_t *this, u_int segment,
|
|||||||
enumerator = charon->ike_sa_manager->create_enumerator(charon->ike_sa_manager);
|
enumerator = charon->ike_sa_manager->create_enumerator(charon->ike_sa_manager);
|
||||||
while (enumerator->enumerate(enumerator, &ike_sa))
|
while (enumerator->enumerate(enumerator, &ike_sa))
|
||||||
{
|
{
|
||||||
if (ike_sa->get_state(ike_sa) == old)
|
if (ike_sa->get_state(ike_sa) != old)
|
||||||
{
|
{
|
||||||
for (i = segment; i < limit; i++)
|
continue;
|
||||||
|
}
|
||||||
|
if (this->tunnel && this->tunnel->is_sync_sa(this->tunnel, ike_sa))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (i = segment; i < limit; i++)
|
||||||
|
{
|
||||||
|
if (this->kernel->in_segment(this->kernel,
|
||||||
|
ike_sa->get_other_host(ike_sa), i))
|
||||||
{
|
{
|
||||||
if (this->kernel->in_segment(this->kernel,
|
ike_sa->set_state(ike_sa, new);
|
||||||
ike_sa->get_other_host(ike_sa), i))
|
|
||||||
{
|
|
||||||
ike_sa->set_state(ike_sa, new);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -305,6 +315,7 @@ static void destroy(private_ha_sync_segments_t *this)
|
|||||||
*/
|
*/
|
||||||
ha_sync_segments_t *ha_sync_segments_create(ha_sync_socket_t *socket,
|
ha_sync_segments_t *ha_sync_segments_create(ha_sync_socket_t *socket,
|
||||||
ha_sync_kernel_t *kernel,
|
ha_sync_kernel_t *kernel,
|
||||||
|
ha_sync_tunnel_t *tunnel,
|
||||||
u_int count, segment_mask_t active)
|
u_int count, segment_mask_t active)
|
||||||
{
|
{
|
||||||
private_ha_sync_segments_t *this = malloc_thing(private_ha_sync_segments_t);
|
private_ha_sync_segments_t *this = malloc_thing(private_ha_sync_segments_t);
|
||||||
@@ -317,6 +328,7 @@ ha_sync_segments_t *ha_sync_segments_create(ha_sync_socket_t *socket,
|
|||||||
this->public.destroy = (void(*)(ha_sync_segments_t*))destroy;
|
this->public.destroy = (void(*)(ha_sync_segments_t*))destroy;
|
||||||
|
|
||||||
this->socket = socket;
|
this->socket = socket;
|
||||||
|
this->tunnel = tunnel;
|
||||||
this->kernel = kernel;
|
this->kernel = kernel;
|
||||||
this->lock = rwlock_create(RWLOCK_TYPE_DEFAULT);
|
this->lock = rwlock_create(RWLOCK_TYPE_DEFAULT);
|
||||||
this->active = active;
|
this->active = active;
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ typedef u_int16_t segment_mask_t;
|
|||||||
#define SEGMENTS_BIT(segment) (0x01 << (segment - 1))
|
#define SEGMENTS_BIT(segment) (0x01 << (segment - 1))
|
||||||
|
|
||||||
#include "ha_sync_socket.h"
|
#include "ha_sync_socket.h"
|
||||||
|
#include "ha_sync_tunnel.h"
|
||||||
#include "ha_sync_kernel.h"
|
#include "ha_sync_kernel.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -95,6 +96,7 @@ struct ha_sync_segments_t {
|
|||||||
*/
|
*/
|
||||||
ha_sync_segments_t *ha_sync_segments_create(ha_sync_socket_t *socket,
|
ha_sync_segments_t *ha_sync_segments_create(ha_sync_socket_t *socket,
|
||||||
ha_sync_kernel_t *kernel,
|
ha_sync_kernel_t *kernel,
|
||||||
|
ha_sync_tunnel_t *tunnel,
|
||||||
u_int count, segment_mask_t active);
|
u_int count, segment_mask_t active);
|
||||||
|
|
||||||
#endif /* HA_SYNC_SEGMENTS_ @}*/
|
#endif /* HA_SYNC_SEGMENTS_ @}*/
|
||||||
|
|||||||
Reference in New Issue
Block a user