aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-09-23 10:42:05 +0200
committerMartin Willi <martin@revosec.ch>2010-04-07 13:55:14 +0200
commit9fdf5f712e377ff751a2420f37f62adac6fc0d7a (patch)
treebcac1e10f5e1646eabca43aabce8dbeeb6fc1f32 /src/charon
parent310498f3deaa020a0f7e2b03fba0a5ba9d344da1 (diff)
downloadstrongswan-9fdf5f712e377ff751a2420f37f62adac6fc0d7a.tar.bz2
strongswan-9fdf5f712e377ff751a2420f37f62adac6fc0d7a.tar.xz
Enable/disable inactive/active segments only
Diffstat (limited to 'src/charon')
-rw-r--r--src/charon/plugins/ha_sync/ha_sync_segments.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/charon/plugins/ha_sync/ha_sync_segments.c b/src/charon/plugins/ha_sync/ha_sync_segments.c
index 3bfc9592a..8929c62d4 100644
--- a/src/charon/plugins/ha_sync/ha_sync_segments.c
+++ b/src/charon/plugins/ha_sync/ha_sync_segments.c
@@ -127,13 +127,19 @@ static void enable_disable(private_ha_sync_segments_t *this, u_int segment,
{
if (enable)
{
- this->active |= SEGMENTS_BIT(i);
- this->kernel->activate(this->kernel, i);
+ if (!(this->active & SEGMENTS_BIT(i)))
+ {
+ this->active |= SEGMENTS_BIT(i);
+ this->kernel->activate(this->kernel, i);
+ }
}
else
{
- this->active &= ~SEGMENTS_BIT(i);
- this->kernel->deactivate(this->kernel, i);
+ if (this->active & SEGMENTS_BIT(i))
+ {
+ this->active &= ~SEGMENTS_BIT(i);
+ this->kernel->deactivate(this->kernel, i);
+ }
}
}