By default, we enabled flattening of the network tree when we export it.
However, this is only required for xt_geoip since the other formats can
deal with overlapping networks and would even benefit from a shorter
list.
Therefore this is now only enabled when needed which results in shorter
export times (9 seconds instead of 2.5 minutes) and the full ipset is
about 20% smaller when loaded into memory than before.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
suffix = "networks"
mode = "w"
+ # Enable network flattening (i.e. networks cannot overlap)
+ flatten = False
+
def __init__(self, f, family=None, prefix=None):
self.f = f
self.prefix = prefix
"""
suffix = "iv"
mode = "wb"
+ flatten = True
def write(self, network):
self.f.write(network._first_address)
# Get all networks that match the family
networks = self.db.search_networks(family=family,
- country_codes=country_codes, asns=asns, flatten=True)
+ country_codes=country_codes, asns=asns, flatten=self.writer.flatten)
# Walk through all networks
for network in networks: