aboutsummaryrefslogtreecommitdiff
path: root/rtr-origin
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-04-01 20:41:11 +0000
committerRob Austein <sra@hactrn.net>2009-04-01 20:41:11 +0000
commitb0abc494f932b8fc9b507cfedd235e1d721ff675 (patch)
tree2eb5f4e948d0fcadce0b282ffe509d0ef300cc89 /rtr-origin
parent5f498b4a35dd788ad04e7ce1154179bde67152d7 (diff)
Checkpoint
svn path=/rtr-origin/updater.py; revision=2297
Diffstat (limited to 'rtr-origin')
-rwxr-xr-xrtr-origin/updater.py62
1 files changed, 58 insertions, 4 deletions
diff --git a/rtr-origin/updater.py b/rtr-origin/updater.py
index 53178cf7..ce1ee535 100755
--- a/rtr-origin/updater.py
+++ b/rtr-origin/updater.py
@@ -23,7 +23,7 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
"""
-import sys, os, struct, time, rpki.x509, rpki.ipaddrs, rpki.sundial
+import sys, os, struct, time, glob, rpki.x509, rpki.ipaddrs, rpki.sundial
os.environ["TZ"] = "UTC"
time.tzset()
@@ -288,8 +288,7 @@ class prefix_set(list):
prefix_set.
"""
self = cls()
- self.timestamp = rpki.sundial.now()
- self.serial = self.timestamp.totimestamp()
+ self.serial = rpki.sundial.now().totimestamp()
for root, dirs, files in os.walk(rcynic_dir):
for f in files:
if f.endswith(".roa"):
@@ -322,6 +321,37 @@ class prefix_set(list):
f.close()
return self
+ @classmethod
+ def load_axfr(cls, filename):
+ """Load an AXFR-style prefix_set from a file, parse filename to
+ obtain serial.
+ """
+ fn1, fn2 = os.path.basename(filename).split(".")
+ assert fn1.isdigit() and fn2 == "ax"
+ self = cls.from_file(filename)
+ self.serial = int(fn1)
+ return self
+
+ def save_axfr(self):
+ """Write AXFR-style prefix_set to file with magic filename."""
+ self.to_file("%d.ax" % self.serial)
+
+ @classmethod
+ def load_ixfr(cls, filename):
+ """Load an IXFR-style prefix_set from a file, parse filename to
+ obtain serials.
+ """
+ fn1, fn2, fn3 = os.path.basename(filename).split(".")
+ assert fn1.isdigit() and fn2 == "ix" and fn3.isdigit()
+ self = cls.from_file(filename)
+ self.from_serial = int(fn3)
+ self.to_serial = int(fn1)
+ return self
+
+ def save_ixfr(self, other):
+ """Write an IXFR-style prefix-set to file with magic filename."""
+ self.diff_to_file(other, "%d.ix.%d" % (self.serial, other.serial))
+
def diff_to_file(self, other, outputfile):
"""Compare this prefix_set with an older one and write a file
consisting of the changes. Since we store prefix_sets in sorted
@@ -368,5 +398,29 @@ def test2():
for p in fnord: print p
os.unlink("fnord")
+def test3():
+
+ p1 = prefix_set.from_rcynic("../rcynic/rcynic-data/authenticated")
+ p1.save_axfr()
+
+ time.sleep(5)
+
+ p2 = prefix_set.from_rcynic("../rpkid/testbed.dir/rcynic-data/authenticated")
+ p2.save_axfr()
+ p2.save_ixfr(p1)
+
+ axfrs = [prefix_set.load_axfr(f) for f in glob.glob("*.ax")]
+ ixfrs = [prefix_set.load_ixfr(f) for f in glob.glob("*.ix.*")]
+
+ for a in axfrs:
+ print "# AXFR", a.serial
+ for p in a:
+ print p
+
+ for i in ixfrs:
+ print "# IXFR", i.from_serial, "->", i.to_serial
+ for p in i:
+ print p
+
if __name__ == "__main__":
- test2()
+ test3()