From fd6c0c8fb499a1d99b80cea30a2e6c00bc780f05 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 18 Oct 2012 10:52:42 +0200 Subject: [PATCH] Add a traffic selector constructor creating a TS directly from a CIDR string --- src/libstrongswan/selectors/traffic_selector.c | 17 +++++++++++++++++ src/libstrongswan/selectors/traffic_selector.h | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/libstrongswan/selectors/traffic_selector.c b/src/libstrongswan/selectors/traffic_selector.c index b19b962e60..81f480a3da 100644 --- a/src/libstrongswan/selectors/traffic_selector.c +++ b/src/libstrongswan/selectors/traffic_selector.c @@ -815,6 +815,23 @@ traffic_selector_t *traffic_selector_create_from_string( return (&this->public); } +/* + * see header + */ +traffic_selector_t *traffic_selector_create_from_cidr(char *string, + u_int8_t protocol, u_int16_t port) +{ + host_t *net; + int bits; + + net = host_create_from_subnet(string, &bits); + if (net) + { + return traffic_selector_create_from_subnet(net, bits, protocol, port); + } + return NULL; +} + /* * see header */ diff --git a/src/libstrongswan/selectors/traffic_selector.h b/src/libstrongswan/selectors/traffic_selector.h index 7a81521e91..39b8879fd5 100644 --- a/src/libstrongswan/selectors/traffic_selector.h +++ b/src/libstrongswan/selectors/traffic_selector.h @@ -231,6 +231,19 @@ traffic_selector_t *traffic_selector_create_from_string( char *from_addr, u_int16_t from_port, char *to_addr, u_int16_t to_port); + + +/** + * Create a traffic selector from a CIDR string. + * + * @param string CIDR string, such as 10.1.0.0/16 + * @param protocol protocol for this ts, such as TCP or UDP + * @param port single port for this TS, 0 for any port + * @return traffic selector, NULL if string invalid + */ +traffic_selector_t *traffic_selector_create_from_cidr(char *string, + u_int8_t protocol, u_int16_t port); + /** * Create a new traffic selector using data read from the net. * -- 2.47.2