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()
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
"""
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):
"""
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))
def _write_footer(self):
self.f.write("}\n")
- def _write_network(self, network):
+ def write(self, network):
self.f.write(" %s,\n" % network)
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)