aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/networking/host.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2014-10-28 18:14:29 +0100
committerTobias Brunner <tobias@strongswan.org>2014-10-30 12:32:45 +0100
commit82be444eb99b51f42e717bf883a981ae9cd7d77e (patch)
tree8049f39c02d2866b585d02914acf1efd3a443798 /src/libstrongswan/networking/host.c
parentbbe3070aa207afaa8c61867157fd097ef09b2ac4 (diff)
downloadstrongswan-82be444eb99b51f42e717bf883a981ae9cd7d77e.tar.bz2
strongswan-82be444eb99b51f42e717bf883a981ae9cd7d77e.tar.xz
host: Add function to create two hosts from a range definition
Diffstat (limited to 'src/libstrongswan/networking/host.c')
-rw-r--r--src/libstrongswan/networking/host.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/libstrongswan/networking/host.c b/src/libstrongswan/networking/host.c
index 8d04a4ec9..95c7390a7 100644
--- a/src/libstrongswan/networking/host.c
+++ b/src/libstrongswan/networking/host.c
@@ -528,6 +528,34 @@ host_t *host_create_from_chunk(int family, chunk_t address, u_int16_t port)
/*
* Described in header.
*/
+bool host_create_from_range(char *string, host_t **from, host_t **to)
+{
+ char *pos;
+
+ pos = strchr(string, '-');
+ if (!pos)
+ {
+ return FALSE;
+ }
+ *to = host_create_from_string(pos + 1, 0);
+ if (!*to)
+ {
+ return FALSE;
+ }
+ pos = strndup(string, pos - string);
+ *from = host_create_from_string_and_family(pos, (*to)->get_family(*to), 0);
+ free(pos);
+ if (!*from)
+ {
+ (*to)->destroy(*to);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*
+ * Described in header.
+ */
host_t *host_create_from_subnet(char *string, int *bits)
{
char *pos, buf[64];