diff options
| author | Martin Willi <martin@revosec.ch> | 2012-10-18 11:23:30 +0200 |
|---|---|---|
| committer | Martin Willi <martin@revosec.ch> | 2012-10-24 13:25:08 +0200 |
| commit | 1efd6c6f2a126094bf375c859eea5a5f04da8be0 (patch) | |
| tree | 14aef5559d96b60ffa1d18cb7999c7daf14d93f7 /src/libcharon/plugins/stroke | |
| parent | fd6c0c8fb499a1d99b80cea30a2e6c00bc780f05 (diff) | |
| download | strongswan-1efd6c6f2a126094bf375c859eea5a5f04da8be0.tar.bz2 strongswan-1efd6c6f2a126094bf375c859eea5a5f04da8be0.tar.xz | |
Make use of new CIDR string ts constructor where appropriate
Diffstat (limited to 'src/libcharon/plugins/stroke')
| -rw-r--r-- | src/libcharon/plugins/stroke/stroke_config.c | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/src/libcharon/plugins/stroke/stroke_config.c b/src/libcharon/plugins/stroke/stroke_config.c index 0d3684d6d..de3f4472e 100644 --- a/src/libcharon/plugins/stroke/stroke_config.c +++ b/src/libcharon/plugins/stroke/stroke_config.c @@ -881,10 +881,10 @@ static void add_ts(private_stroke_config_t *this, } else { - host_t *net; - if (!end->subnets) { + host_t *net; + net = host_create_from_string(end->address, 0); if (net) { @@ -895,39 +895,24 @@ static void add_ts(private_stroke_config_t *this, } else { - char *del, *start, *bits; + enumerator_t *enumerator; + char *subnet; - start = end->subnets; - do + enumerator = enumerator_create_token(end->subnets, ",", " "); + while (enumerator->enumerate(enumerator, &subnet)) { - int intbits = 0; - - del = strchr(start, ','); - if (del) - { - *del = '\0'; - } - bits = strchr(start, '/'); - if (bits) - { - *bits = '\0'; - intbits = atoi(bits + 1); - } - - net = host_create_from_string(start, 0); - if (net) + ts = traffic_selector_create_from_cidr(subnet, + end->protocol, end->port); + if (ts) { - ts = traffic_selector_create_from_subnet(net, intbits, - end->protocol, end->port); child_cfg->add_traffic_selector(child_cfg, local, ts); } else { - DBG1(DBG_CFG, "invalid subnet: %s, skipped", start); + DBG1(DBG_CFG, "invalid subnet: %s, skipped", subnet); } - start = del + 1; } - while (del); + enumerator->destroy(enumerator); } } } |
