aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2009-12-22 17:07:08 +0100
committerAndreas Steffen <andreas.steffen@strongswan.org>2009-12-22 17:07:08 +0100
commit925eadba5fd421bcca9cae1bd37beb6c723104b6 (patch)
tree08596612616dd1c7b68e64d85f0918bac2a40b97 /src/libstrongswan
parente16a01a5e656c3adb560a881ef454340756cdf8a (diff)
downloadstrongswan-925eadba5fd421bcca9cae1bd37beb6c723104b6.tar.bz2
strongswan-925eadba5fd421bcca9cae1bd37beb6c723104b6.tar.xz
do not recalculate netbits for true subnets
Diffstat (limited to 'src/libstrongswan')
-rw-r--r--src/libstrongswan/selectors/traffic_selector.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstrongswan/selectors/traffic_selector.c b/src/libstrongswan/selectors/traffic_selector.c
index 87e3464f6..68bbbe2fd 100644
--- a/src/libstrongswan/selectors/traffic_selector.c
+++ b/src/libstrongswan/selectors/traffic_selector.c
@@ -534,12 +534,14 @@ static void set_address(private_traffic_selector_t *this, host_t *host)
{
memset(this->from6, 0x00, sizeof(this->from6));
memset(this->to6, 0xFF, sizeof(this->to6));
+ this->netbits = 0;
}
else
{
chunk_t from = host->get_address(host);
memcpy(this->from, from.ptr, from.len);
memcpy(this->to, from.ptr, from.len);
+ this->netbits = from.len * 8;
}
}
}
@@ -599,7 +601,8 @@ static void to_subnet(private_traffic_selector_t *this, host_t **net, u_int8_t *
u_int16_t port = 0;
chunk_t net_chunk;
- *mask = calc_netbits(this);
+ *mask = (this->netbits == NON_SUBNET_ADDRESS_RANGE) ? calc_netbits(this)
+ : this->netbits;
switch (this->type)
{