aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2008-04-11 00:56:51 +0000
committerRob Austein <sra@hactrn.net>2008-04-11 00:56:51 +0000
commit768624a863edf83088e30f7372117855462933d0 (patch)
tree1e5e61a5667453b2858aa988ab48720611fd2bc7
parentb72c54712ffb2a04031bd336c08240196174be2e (diff)
Checkpoint
svn path=/rpkid/rpki/gctx.py; revision=1651
-rw-r--r--rpkid/rpki/gctx.py1
-rw-r--r--rpkid/rpki/left_right.py10
-rw-r--r--rpkid/testbed.1.yaml4
-rw-r--r--rpkid/testbed.py8
4 files changed, 22 insertions, 1 deletions
diff --git a/rpkid/rpki/gctx.py b/rpkid/rpki/gctx.py
index fa61ac27..9f2770c4 100644
--- a/rpkid/rpki/gctx.py
+++ b/rpkid/rpki/gctx.py
@@ -159,6 +159,7 @@ class global_context(object):
for s in rpki.left_right.self_elt.sql_fetch_all(self):
s.client_poll()
s.update_children()
+ s.generate_roas()
s.regenerate_crls_and_manifests()
self.sql_sweep()
return 200, "OK"
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py
index e3c4c5e9..a8cd3092 100644
--- a/rpkid/rpki/left_right.py
+++ b/rpkid/rpki/left_right.py
@@ -417,6 +417,16 @@ class self_elt(data_elt):
ca_detail.generate_crl()
ca_detail.generate_manifest()
+ def generate_roas(self):
+ """Generate ROAs for this self's route_origin objects.
+
+ This doesn't yet handle revocation or regeneration of existing
+ ROAs, the underlying support for that hasn't been written yet.
+ """
+
+ for route_origin in self.route_origins():
+ route_origin.generate_roa()
+
class bsc_elt(data_elt):
"""<bsc/> (Business Signing Context) element."""
diff --git a/rpkid/testbed.1.yaml b/rpkid/testbed.1.yaml
index acee42e2..0c601e91 100644
--- a/rpkid/testbed.1.yaml
+++ b/rpkid/testbed.1.yaml
@@ -23,6 +23,10 @@ kids:
- name: Alice
ipv4: 192.0.2.1-192.0.2.33
asn: 64533
+ ipv4: 10.3.0.0/16
+ route_origins:
+ 666:
+ ipv4: 10.3.0.44/32
---
- name: R0
rekey:
diff --git a/rpkid/testbed.py b/rpkid/testbed.py
index 8b9ce2ff..0e57e80c 100644
--- a/rpkid/testbed.py
+++ b/rpkid/testbed.py
@@ -367,6 +367,12 @@ class allocation(object):
self.sia_base = yaml.get("sia_base")
if "crl_interval" in yaml:
self.crl_interval = timedelta.parse(yaml["crl_interval"]).convert_to_seconds()
+ self.route_origins = {}
+ if "route_origins" in yaml:
+ for asn,addrs in yaml.get("route_origins").items():
+ self.route_origins[asn] = {
+ "v4" : rpki.resource_set.resource_set_ipv4(addrs.get("ipv4")),
+ "v6" : rpki.resource_set.resource_set_ipv6(addrs.get("ipv6")) }
self.extra_conf = yaml.get("extra_conf", [])
def closure(self):
@@ -429,7 +435,7 @@ class allocation(object):
def is_leaf(self): return not self.kids
def is_root(self): return self.parent is None
- def is_twig(self): return self.parent is not None and self.kids
+ def is_twig(self): return not self.is_leaf() and not self.is_root()
def set_engine_number(self, n):
"""Set the engine number for this entity."""