aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2014-04-15 13:29:06 +0200
committerMartin Willi <martin@revosec.ch>2014-05-07 14:13:37 +0200
commitafb8f492ef92db9d59a05c1cce6cd8eaec3bbc7b (patch)
tree7b8e2415857f5b0b18bb1fdc9d2a84adff6e326b /src/libcharon/plugins
parent3ad9c34c920c5ff8cb89127c9c1ff3f4a2c4b225 (diff)
downloadstrongswan-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.c14
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);