From: Martin Willi Date: Wed, 23 Sep 2009 08:42:05 +0000 (+0200) Subject: Enable/disable inactive/active segments only X-Git-Tag: 4.4.0~79 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9fdf5f712e377ff751a2420f37f62adac6fc0d7a;p=thirdparty%2Fstrongswan.git Enable/disable inactive/active segments only --- diff --git a/src/charon/plugins/ha_sync/ha_sync_segments.c b/src/charon/plugins/ha_sync/ha_sync_segments.c index 3bfc9592a1..8929c62d4e 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); + } } }