diff options
author | Martin Willi <martin@revosec.ch> | 2011-11-18 14:30:15 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-03-20 17:30:44 +0100 |
commit | 764ee21d83fa93aedaf6effbc841a55d7340f2e7 (patch) | |
tree | cb5906e087fd257376084bcab2d087d2f19c722a /src | |
parent | 26b55dc6c84cbe165a47728d376c652f157723c2 (diff) | |
download | strongswan-764ee21d83fa93aedaf6effbc841a55d7340f2e7.tar.bz2 strongswan-764ee21d83fa93aedaf6effbc841a55d7340f2e7.tar.xz |
ts.get_subnet() returns TRUE if the selector actually is a subnet
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/selectors/traffic_selector.c | 6 | ||||
-rw-r--r-- | src/libstrongswan/selectors/traffic_selector.h | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/libstrongswan/selectors/traffic_selector.c b/src/libstrongswan/selectors/traffic_selector.c index b1bcf1b2d..8b862a8dc 100644 --- a/src/libstrongswan/selectors/traffic_selector.c +++ b/src/libstrongswan/selectors/traffic_selector.c @@ -571,7 +571,7 @@ METHOD(traffic_selector_t, includes, bool, return FALSE; } -METHOD(traffic_selector_t, to_subnet, void, +METHOD(traffic_selector_t, to_subnet, bool, private_traffic_selector_t *this, host_t **net, u_int8_t *mask) { /* there is no way to do this cleanly, as the address range may @@ -597,7 +597,7 @@ METHOD(traffic_selector_t, to_subnet, void, break; default: /* unreachable */ - return; + return FALSE; } net_chunk.ptr = malloc(net_chunk.len); @@ -616,6 +616,8 @@ METHOD(traffic_selector_t, to_subnet, void, *net = host_create_from_chunk(family, net_chunk, port); chunk_free(&net_chunk); + + return this->netbits != NON_SUBNET_ADDRESS_RANGE; } METHOD(traffic_selector_t, clone_, traffic_selector_t*, diff --git a/src/libstrongswan/selectors/traffic_selector.h b/src/libstrongswan/selectors/traffic_selector.h index 257da3f24..67b5da5bf 100644 --- a/src/libstrongswan/selectors/traffic_selector.h +++ b/src/libstrongswan/selectors/traffic_selector.h @@ -203,8 +203,9 @@ struct traffic_selector_t { * * @param net converted subnet (has to be freed) * @param mask converted net mask + * @return TRUE if traffic selector matches exactly to the subnet */ - void (*to_subnet) (traffic_selector_t *this, host_t **net, u_int8_t *mask); + bool (*to_subnet) (traffic_selector_t *this, host_t **net, u_int8_t *mask); /** * Destroys the ts object |