vici: Add option to query leases of pools
We could later perhaps add filter parameters similar to those of the `ipsec leases` command (pool name/virtual IP).
This commit is contained in:
@@ -526,12 +526,21 @@ Unloading fails for pools with leases currently online.
|
|||||||
|
|
||||||
List the currently loaded pools.
|
List the currently loaded pools.
|
||||||
|
|
||||||
{} => {
|
{
|
||||||
|
leases = <set to yes to include leases>
|
||||||
|
} => {
|
||||||
<pool name>* = {
|
<pool name>* = {
|
||||||
base = <virtual IP pool base address>
|
base = <virtual IP pool base address>
|
||||||
size = <total number of addresses in the pool>
|
size = <total number of addresses in the pool>
|
||||||
online = <number of leases online>
|
online = <number of leases online>
|
||||||
offline = <number of leases offline>
|
offline = <number of leases offline>
|
||||||
|
leases = {
|
||||||
|
<zero-based index>* = {
|
||||||
|
address = <IP address>
|
||||||
|
identity = <assigned identity>
|
||||||
|
status = <online|offline>
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2014 Tobias Brunner
|
* Copyright (C) 2014-2015 Tobias Brunner
|
||||||
* Hochschule fuer Technik Rapperswil
|
* Hochschule fuer Technik Rapperswil
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 Martin Willi
|
* Copyright (C) 2014 Martin Willi
|
||||||
@@ -662,9 +662,16 @@ CALLBACK(get_pools, vici_message_t*,
|
|||||||
vici_message_t *message)
|
vici_message_t *message)
|
||||||
{
|
{
|
||||||
vici_builder_t *builder;
|
vici_builder_t *builder;
|
||||||
enumerator_t *enumerator;
|
enumerator_t *enumerator, *leases;
|
||||||
mem_pool_t *vips;
|
mem_pool_t *vips;
|
||||||
pool_t *pool;
|
pool_t *pool;
|
||||||
|
identification_t *uid;
|
||||||
|
host_t *lease;
|
||||||
|
bool list_leases, on;
|
||||||
|
char buf[32];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
list_leases = message->get_bool(message, FALSE, "leases");
|
||||||
|
|
||||||
builder = vici_builder_create();
|
builder = vici_builder_create();
|
||||||
|
|
||||||
@@ -681,6 +688,23 @@ CALLBACK(get_pools, vici_message_t*,
|
|||||||
builder->add_kv(builder, "online", "%u", vips->get_online(vips));
|
builder->add_kv(builder, "online", "%u", vips->get_online(vips));
|
||||||
builder->add_kv(builder, "offline", "%u", vips->get_offline(vips));
|
builder->add_kv(builder, "offline", "%u", vips->get_offline(vips));
|
||||||
|
|
||||||
|
if (list_leases)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
builder->begin_section(builder, "leases");
|
||||||
|
leases = vips->create_lease_enumerator(vips);
|
||||||
|
while (leases && leases->enumerate(leases, &uid, &lease, &on))
|
||||||
|
{
|
||||||
|
snprintf(buf, sizeof(buf), "%d", i++);
|
||||||
|
builder->begin_section(builder, buf);
|
||||||
|
builder->add_kv(builder, "address", "%H", lease);
|
||||||
|
builder->add_kv(builder, "identity", "%Y", uid);
|
||||||
|
builder->add_kv(builder, "status", on ? "online" : "offline");
|
||||||
|
builder->end_section(builder);
|
||||||
|
}
|
||||||
|
leases->destroy(leases);
|
||||||
|
builder->end_section(builder);
|
||||||
|
}
|
||||||
builder->end_section(builder);
|
builder->end_section(builder);
|
||||||
}
|
}
|
||||||
enumerator->destroy(enumerator);
|
enumerator->destroy(enumerator);
|
||||||
|
|||||||
Reference in New Issue
Block a user