diff options
author | Martin Willi <martin@strongswan.org> | 2009-09-23 10:42:05 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2010-04-07 13:55:14 +0200 |
commit | 9fdf5f712e377ff751a2420f37f62adac6fc0d7a (patch) | |
tree | bcac1e10f5e1646eabca43aabce8dbeeb6fc1f32 /src/charon | |
parent | 310498f3deaa020a0f7e2b03fba0a5ba9d344da1 (diff) | |
download | strongswan-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.c | 14 |
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); + } } } |