We used to simply take the first element from the stack after we have
split a network. That is wrong because it is not passing through any
filters and no further subnet checks. It could have therefore been
that the tree was not entirely flat.
Reported-by: Arne Fitzenreiter <arne_f@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
loc_network_list_unref(subnets);
loc_network_list_unref(excluded);
- // Replace network with the first one from the stack
+ // Drop the network and restart the whole process again to pick the next network
loc_network_unref(*network);
- *network = loc_network_list_pop_first(enumerator->stack);
- return 0;
+ return __loc_database_enumerator_next_network_flattened(enumerator, network);
}
LOC_EXPORT int loc_database_enumerator_next_network(