pool: Avoid conflict with start/end variables used in many commands

This commit is contained in:
Tobias Brunner
2020-01-28 15:32:43 +01:00
parent 26f20cc258
commit b7019a5c9e
+22 -22
View File
@@ -40,7 +40,7 @@ database_t *db;
/**
* --start/--end addresses of various subcommands
*/
host_t *start = NULL, *end = NULL;
host_t *start_addr = NULL, *end_addr = NULL;
/**
* whether --add should --replace an existing pool
@@ -333,21 +333,21 @@ next_pool:
*/
static void add(char *name, host_t *start, host_t *end, u_int timeout)
{
chunk_t start_addr, end_addr, cur_addr;
chunk_t start_chunk, end_chunk, cur_addr;
u_int id, count;
start_addr = start->get_address(start);
end_addr = end->get_address(end);
cur_addr = chunk_clonea(start_addr);
count = get_pool_size(start_addr, end_addr);
start_chunk = start->get_address(start);
end_chunk = end->get_address(end);
cur_addr = chunk_clonea(start_chunk);
count = get_pool_size(start_chunk, end_chunk);
if (start_addr.len != end_addr.len ||
memcmp(start_addr.ptr, end_addr.ptr, start_addr.len) > 0)
if (start_chunk.len != end_chunk.len ||
memcmp(start_chunk.ptr, end_chunk.ptr, start_chunk.len) > 0)
{
fprintf(stderr, "invalid start/end pair specified.\n");
exit(EXIT_FAILURE);
}
id = create_pool(name, start_addr, end_addr, timeout);
id = create_pool(name, start_chunk, end_chunk, timeout);
printf("allocating %d addresses... ", count);
fflush(stdout);
db->transaction(db, FALSE);
@@ -357,7 +357,7 @@ static void add(char *name, host_t *start, host_t *end, u_int timeout)
"INSERT INTO addresses (pool, address, identity, acquired, released) "
"VALUES (?, ?, ?, ?, ?)",
DB_UINT, id, DB_BLOB, cur_addr, DB_UINT, 0, DB_UINT, 0, DB_UINT, 1);
if (chunk_equals(cur_addr, end_addr))
if (chunk_equals(cur_addr, end_chunk))
{
break;
}
@@ -944,8 +944,8 @@ static void batch(char *argv0, char *name)
static void cleanup(void)
{
db->destroy(db);
DESTROY_IF(start);
DESTROY_IF(end);
DESTROY_IF(start_addr);
DESTROY_IF(end_addr);
}
static void do_args(int argc, char *argv[])
@@ -1080,9 +1080,9 @@ static void do_args(int argc, char *argv[])
operation = OP_BATCH;
continue;
case 's':
DESTROY_IF(start);
start = host_create_from_string(optarg, 0);
if (start == NULL)
DESTROY_IF(start_addr);
start_addr = host_create_from_string(optarg, 0);
if (!start_addr)
{
fprintf(stderr, "invalid start address: '%s'.\n", optarg);
usage();
@@ -1090,9 +1090,9 @@ static void do_args(int argc, char *argv[])
}
continue;
case 'e':
DESTROY_IF(end);
end = host_create_from_string(optarg, 0);
if (end == NULL)
DESTROY_IF(end_addr);
end_addr = host_create_from_string(optarg, 0);
if (!end_addr)
{
fprintf(stderr, "invalid end address: '%s'.\n", optarg);
usage();
@@ -1161,9 +1161,9 @@ static void do_args(int argc, char *argv[])
{
add_addresses(name, addresses, timeout);
}
else if (start != NULL && end != NULL)
else if (start_addr && end_addr)
{
add(name, start, end, timeout);
add(name, start_addr, end_addr, timeout);
}
else
{
@@ -1203,13 +1203,13 @@ static void do_args(int argc, char *argv[])
show_attr();
break;
case OP_RESIZE:
if (end == NULL)
if (!end_addr)
{
fprintf(stderr, "missing arguments.\n");
usage();
exit(EXIT_FAILURE);
}
resize(name, end);
resize(name, end_addr);
break;
case OP_LEASES:
leases(filter, utc);