]> git.ipfire.org Git - location/libloc.git/commitdiff
export: Write the everything zone
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 17 Dec 2025 11:47:46 +0000 (11:47 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 17 Dec 2025 11:47:46 +0000 (11:47 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/python/location/export.py

index d4178a596e78f66ba692d4ea80647dccd1124fe6..ce97fdc2abd9d1991cc0e8c4c6578796b56f3468 100644 (file)
@@ -410,10 +410,47 @@ class ZoneExporter(object):
                for network in self.db.networks:
                        self._write_network(f, network, "TXT", "\"%s\"" % network)
 
+       # Everything
+
+       def _write_everything(self, f):
+               flags = {
+                       _location.NETWORK_FLAG_ANONYMOUS_PROXY    : "is-anonymous-proxy",
+                       _location.NETWORK_FLAG_SATELLITE_PROVIDER : "is-satellite-provider",
+                       _location.NETWORK_FLAG_ANYCAST            : "is-anycast",
+                       _location.NETWORK_FLAG_DROP               : "is-drop",
+               }
+
+               # Write all networks
+               for network in self.db.networks:
+                       # List the network
+                       self._write_network(f, network, "A", "127.0.0.2")
+
+                       # Write the prefix
+                       self._write_network(f, network, "TXT", "\"prefix=%s\"" % network)
+
+                       # Write the country code
+                       if network.country_code:
+                               self._write_network(f, network, "TXT", "\"cc=%s\"" % network.country_code)
+
+                       # Write the ASN
+                       if network.asn:
+                               self._write_network(f, network, "TXT", "\"as-number=%s\"" % network.asn)
+
+                               # Write the AS name
+                               asn = self.db.get_as(network.asn)
+                               if asn:
+                                       self._write_network(f, network, "TXT", "\"as-name=%s\"" % asn.name)
+
+                       # Write flags
+                       for flag in flags:
+                               if network.has_flag(flag):
+                                       self._write_network(f, network, "TXT", "\"%s=yes\"" % flags[flag])
+
        formats = {
-               "asn"    : _write_asn,
-               "cc"     : _write_cc,
-               "bogons" : _write_bogons,
-               "origin" : _write_origin,
-               "prefix" : _write_prefix,
+               "asn"        : _write_asn,
+               "cc"         : _write_cc,
+               "bogons"     : _write_bogons,
+               "origin"     : _write_origin,
+               "prefix"     : _write_prefix,
+               "everything" : _write_everything,
        }