When we add a large number of ASes to the list, we will constantly
re-allocate the whole list because we are only growing it by 64 entries
at a time.
This patch changes that we will double the list in size every time we
run out of space and we will start with 1024 elements.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
size_t size;
};
-static int loc_as_list_grow(struct loc_as_list* list, size_t size) {
+static int loc_as_list_grow(struct loc_as_list* list) {
+ size_t size = list->elements_size * 2;
+ if (size < 1024)
+ size = 1024;
+
DEBUG(list->ctx, "Growing AS list %p by %zu to %zu\n",
list, size, list->elements_size + size);
// Check if we have space left
if (list->size >= list->elements_size) {
- int r = loc_as_list_grow(list, 64);
+ int r = loc_as_list_grow(list);
if (r)
return r;
}