From 9fdf5f712e377ff751a2420f37f62adac6fc0d7a Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 23 Sep 2009 10:42:05 +0200 Subject: [PATCH] Enable/disable inactive/active segments only --- src/charon/plugins/ha_sync/ha_sync_segments.c | 14 ++++++++++---- 1 file 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); + } } }