From: Martin Willi Date: Thu, 18 Oct 2012 08:52:42 +0000 (+0200) Subject: Add a traffic selector constructor creating a TS directly from a CIDR string X-Git-Tag: 5.0.2dr4~281 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fd6c0c8fb499a1d99b80cea30a2e6c00bc780f05;p=thirdparty%2Fstrongswan.git Add a traffic selector constructor creating a TS directly from a CIDR string --- 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. *