]> git.ipfire.org Git - people/ms/libloc.git/commitdiff
export: Remove old flattening feature
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 19 Nov 2020 12:40:01 +0000 (12:40 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 19 Nov 2020 12:40:01 +0000 (12:40 +0000)
The database enumerator now only returns networks that will
never overlap.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/python/export.py

index 6b3987827c195659552ba0b250fb956a76773758..4702bcfa08edf0ec7a1c27e8797011d625f8f2dc 100644 (file)
@@ -39,11 +39,8 @@ class OutputWriter(object):
        suffix = "networks"
        mode = "w"
 
-       def __init__(self, f, prefix=None, flatten=True):
-               self.f, self.prefix, self.flatten = f, prefix, flatten
-
-               # The previously written network
-               self._last_network = None
+       def __init__(self, f, prefix=None):
+               self.f, self.prefix = f, prefix
 
                # Immediately write the header
                self._write_header()
@@ -60,18 +57,6 @@ class OutputWriter(object):
        def __repr__(self):
                return "<%s f=%s>" % (self.__class__.__name__, self.f)
 
-       def _flatten(self, network):
-               """
-                       Checks if the given network needs to be written to file,
-                       or if it is a subnet of the previously written network.
-               """
-               if self._last_network and network.is_subnet_of(self._last_network):
-                       return True
-
-               # Remember this network for the next call
-               self._last_network = network
-               return False
-
        def _write_header(self):
                """
                        The header of the file
@@ -84,15 +69,8 @@ class OutputWriter(object):
                """
                pass
 
-       def _write_network(self, network):
-               self.f.write("%s\n" % network)
-
        def write(self, network):
-               if self.flatten and self._flatten(network):
-                       log.debug("Skipping writing network %s (last one was %s)" % (network, self._last_network))
-                       return
-
-               return self._write_network(network)
+               self.f.write("%s\n" % network)
 
        def finish(self):
                """
@@ -113,7 +91,7 @@ class IpsetOutputWriter(OutputWriter):
        def _write_header(self):
                self.f.write("create %s hash:net family inet hashsize 1024 maxelem 65536\n" % self.prefix)
 
-       def _write_network(self, network):
+       def write(self, network):
                self.f.write("add %s %s\n" % (self.prefix, network))
 
 
@@ -129,7 +107,7 @@ class NftablesOutputWriter(OutputWriter):
        def _write_footer(self):
                self.f.write("}\n")
 
-       def _write_network(self, network):
+       def write(self, network):
                self.f.write("  %s,\n" % network)
 
 
@@ -141,7 +119,7 @@ class XTGeoIPOutputWriter(OutputWriter):
        suffix = "iv"
        mode = "wb"
 
-       def _write_network(self, network):
+       def write(self, network):
                for address in (network._first_address, network._last_address):
                        self.f.write(address)