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 * --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 * 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) 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; u_int id, count;
start_addr = start->get_address(start); start_chunk = start->get_address(start);
end_addr = end->get_address(end); end_chunk = end->get_address(end);
cur_addr = chunk_clonea(start_addr); cur_addr = chunk_clonea(start_chunk);
count = get_pool_size(start_addr, end_addr); count = get_pool_size(start_chunk, end_chunk);
if (start_addr.len != end_addr.len || if (start_chunk.len != end_chunk.len ||
memcmp(start_addr.ptr, end_addr.ptr, start_addr.len) > 0) memcmp(start_chunk.ptr, end_chunk.ptr, start_chunk.len) > 0)
{ {
fprintf(stderr, "invalid start/end pair specified.\n"); fprintf(stderr, "invalid start/end pair specified.\n");
exit(EXIT_FAILURE); 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); printf("allocating %d addresses... ", count);
fflush(stdout); fflush(stdout);
db->transaction(db, FALSE); 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) " "INSERT INTO addresses (pool, address, identity, acquired, released) "
"VALUES (?, ?, ?, ?, ?)", "VALUES (?, ?, ?, ?, ?)",
DB_UINT, id, DB_BLOB, cur_addr, DB_UINT, 0, DB_UINT, 0, DB_UINT, 1); 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; break;
} }
@@ -944,8 +944,8 @@ static void batch(char *argv0, char *name)
static void cleanup(void) static void cleanup(void)
{ {
db->destroy(db); db->destroy(db);
DESTROY_IF(start); DESTROY_IF(start_addr);
DESTROY_IF(end); DESTROY_IF(end_addr);
} }
static void do_args(int argc, char *argv[]) static void do_args(int argc, char *argv[])
@@ -1080,9 +1080,9 @@ static void do_args(int argc, char *argv[])
operation = OP_BATCH; operation = OP_BATCH;
continue; continue;
case 's': case 's':
DESTROY_IF(start); DESTROY_IF(start_addr);
start = host_create_from_string(optarg, 0); start_addr = host_create_from_string(optarg, 0);
if (start == NULL) if (!start_addr)
{ {
fprintf(stderr, "invalid start address: '%s'.\n", optarg); fprintf(stderr, "invalid start address: '%s'.\n", optarg);
usage(); usage();
@@ -1090,9 +1090,9 @@ static void do_args(int argc, char *argv[])
} }
continue; continue;
case 'e': case 'e':
DESTROY_IF(end); DESTROY_IF(end_addr);
end = host_create_from_string(optarg, 0); end_addr = host_create_from_string(optarg, 0);
if (end == NULL) if (!end_addr)
{ {
fprintf(stderr, "invalid end address: '%s'.\n", optarg); fprintf(stderr, "invalid end address: '%s'.\n", optarg);
usage(); usage();
@@ -1161,9 +1161,9 @@ static void do_args(int argc, char *argv[])
{ {
add_addresses(name, addresses, timeout); 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 else
{ {
@@ -1203,13 +1203,13 @@ static void do_args(int argc, char *argv[])
show_attr(); show_attr();
break; break;
case OP_RESIZE: case OP_RESIZE:
if (end == NULL) if (!end_addr)
{ {
fprintf(stderr, "missing arguments.\n"); fprintf(stderr, "missing arguments.\n");
usage(); usage();
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
resize(name, end); resize(name, end_addr);
break; break;
case OP_LEASES: case OP_LEASES:
leases(filter, utc); leases(filter, utc);