aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-06-08 18:20:54 +0000
committerRob Austein <sra@hactrn.net>2009-06-08 18:20:54 +0000
commita2ac98602b3d9c891f3b7083093b68bd0cb4547f (patch)
treefd42c1d5aed1b7b8609b23e89d80ebd529e796ab
parentb11baed47d3307726729aafccce57824a63a53df (diff)
Use explicit version number with ROA prefixes in SQL
svn path=/rpkid/irdbd.sql; revision=2504
-rw-r--r--rpkid/irdbd.sql1
-rw-r--r--rpkid/rpki/left_right.py40
-rw-r--r--rpkid/rpkid.sql1
3 files changed, 21 insertions, 21 deletions
diff --git a/rpkid/irdbd.sql b/rpkid/irdbd.sql
index 8f534c32..8838f77c 100644
--- a/rpkid/irdbd.sql
+++ b/rpkid/irdbd.sql
@@ -68,6 +68,7 @@ CREATE TABLE roa_request_prefix (
prefix VARCHAR(40) NOT NULL,
prefixlen TINYINT NOT NULL,
max_prefixlen TINYINT NOT NULL,
+ version TINYINT NOT NULL,
roa_request_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (roa_request_id, prefix, prefixlen, max_prefixlen),
FOREIGN KEY (roa_request_id) REFERENCES roa_request (roa_request_id)
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
diff --git a/rpkid/rpkid.sql b/rpkid/rpkid.sql
index a8efa7ee..8cb2484c 100644
--- a/rpkid/rpkid.sql
+++ b/rpkid/rpkid.sql
@@ -187,6 +187,7 @@ CREATE TABLE route_origin_prefix (
address VARCHAR(40) NOT NULL,
prefixlen TINYINT NOT NULL,
max_prefixlen TINYINT NOT NULL,
+ version TINYINT NOT NULL,
route_origin_id BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (route_origin_id, address, prefixlen, max_prefixlen),
FOREIGN KEY (route_origin_id) REFERENCES route_origin (route_origin_id)