diff options
| author | Martin Willi <martin@revosec.ch> | 2014-04-15 13:29:06 +0200 |
|---|---|---|
| committer | Martin Willi <martin@revosec.ch> | 2014-05-07 14:13:37 +0200 |
| commit | afb8f492ef92db9d59a05c1cce6cd8eaec3bbc7b (patch) | |
| tree | 7b8e2415857f5b0b18bb1fdc9d2a84adff6e326b /src/libcharon/plugins | |
| parent | 3ad9c34c920c5ff8cb89127c9c1ff3f4a2c4b225 (diff) | |
| download | strongswan-afb8f492ef92db9d59a05c1cce6cd8eaec3bbc7b.tar.bz2 strongswan-afb8f492ef92db9d59a05c1cce6cd8eaec3bbc7b.tar.xz | |
vici: Support referencing external named pools for peer configs
Diffstat (limited to 'src/libcharon/plugins')
| -rw-r--r-- | src/libcharon/plugins/vici/vici_config.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libcharon/plugins/vici/vici_config.c b/src/libcharon/plugins/vici/vici_config.c index ee18349a6..7940e1382 100644 --- a/src/libcharon/plugins/vici/vici_config.c +++ b/src/libcharon/plugins/vici/vici_config.c @@ -198,6 +198,7 @@ typedef struct { linked_list_t *proposals; linked_list_t *children; linked_list_t *vips; + char *pools; u_int64_t reauth_time; u_int64_t rekey_time; u_int64_t over_time; @@ -331,6 +332,7 @@ static void free_peer_data(peer_data_t *data) data->proposals->destroy_offset(data->proposals, offsetof(proposal_t, destroy)); data->vips->destroy_offset(data->vips, offsetof(host_t, destroy)); + free(data->pools); free(data->local_addrs); free(data->remote_addrs); } @@ -1222,6 +1224,7 @@ CALLBACK(peer_li, bool, { "remote_addrs", parse_stringlist, &peer->remote_addrs }, { "proposals", parse_ike_proposal, peer->proposals }, { "vips", parse_hosts, peer->vips }, + { "pools", parse_stringlist, &peer->pools }, }; return parse_rules(rules, countof(rules), name, value, @@ -1684,12 +1687,14 @@ CALLBACK(config_sn, bool, .over_time = LFT_UNDEFINED, .rand_time = LFT_UNDEFINED, }; + enumerator_t *enumerator; peer_cfg_t *peer_cfg; ike_cfg_t *ike_cfg; child_cfg_t *child_cfg; auth_cfg_t *auth_cfg; proposal_t *proposal; host_t *host; + char *str; DBG2(DBG_CFG, " conn %s:", name); @@ -1773,6 +1778,15 @@ CALLBACK(config_sn, bool, { peer_cfg->add_virtual_ip(peer_cfg, host); } + if (peer.pools) + { + enumerator = enumerator_create_token(peer.pools, ",", " "); + while (enumerator->enumerate(enumerator, &str)) + { + peer_cfg->add_pool(peer_cfg, str); + } + enumerator->destroy(enumerator); + } free_peer_data(&peer); |
