aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/left_right.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki/left_right.py')
-rw-r--r--rpkid/rpki/left_right.py40
1 files changed, 19 insertions, 21 deletions
diff --git a/rpkid/rpki/left_right.py b/rpkid/rpki/left_right.py
index 67f266a2..2b0c2965 100644
--- a/rpkid/rpki/left_right.py
+++ b/rpkid/rpki/left_right.py
@@ -756,33 +756,31 @@ class route_origin_elt(data_elt):
"""
Extra SQL fetch actions for route_origin_elt -- handle prefix list.
"""
- self.ipv4 = rpki.resource_set.roa_prefix_set_ipv4.from_sql(
- self.gctx.sql,
- """
- SELECT address, prefixlen, max_prefixlen FROM route_origin_prefix
- WHERE route_origin_id = %s AND address NOT LIKE '%:%'
- """, (self.route_origin_id,))
- self.ipv6 = rpki.resource_set.roa_prefix_set_ipv6.from_sql(
- self.gctx.sql,
- """
- SELECT address, prefixlen, max_prefixlen FROM route_origin_prefix
- WHERE route_origin_id = %s AND address LIKE '%:%'
- """, (self.route_origin_id,))
+ for version, datatype, attribute in ((4, rpki.resource_set.roa_prefix_set_ipv4, "ipv4"),
+ (6, rpki.resource_set.roa_prefix_set_ipv6, "ipv6")):
+ setattr(self, attribute, datatype.from_sql(
+ self.gctx.sql,
+ """
+ SELECT address, prefixlen, max_prefixlen FROM route_origin_prefix
+ WHERE route_origin_id = %s AND version = %s
+ """,
+ (self.route_origin_id, version)))
def sql_insert_hook(self):
"""
Extra SQL insert actions for route_origin_elt -- handle address
ranges.
"""
- if self.ipv4 or self.ipv6:
- self.gctx.sql.executemany(
- """
- INSERT route_origin_prefix (route_origin_id, address, prefixlen, max_prefixlen)
- VALUES (%s, %s, %s, %s)
- """,
- ((self.route_origin_id, x.address, x.prefixlen, x.max_prefixlen)
- for x in (self.ipv4 or []) + (self.ipv6 or [])))
-
+ for version, prefix_set in ((4, self.ipv4), (6, self.ipv6)):
+ if prefix_set:
+ self.gctx.sql.executemany(
+ """
+ INSERT route_origin_prefix (route_origin_id, address, prefixlen, max_prefixlen, version)
+ VALUES (%s, %s, %s, %s, %s)
+ """,
+ ((self.route_origin_id, x.address, x.prefixlen, x.max_prefixlen, version)
+ for x in prefix_set))
+
def sql_delete_hook(self):
"""
Extra SQL delete actions for route_origin_elt -- handle address