diff options
author | Rob Austein <sra@hactrn.net> | 2009-06-08 18:20:54 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-06-08 18:20:54 +0000 |
commit | a2ac98602b3d9c891f3b7083093b68bd0cb4547f (patch) | |
tree | fd42c1d5aed1b7b8609b23e89d80ebd529e796ab | |
parent | b11baed47d3307726729aafccce57824a63a53df (diff) |
Use explicit version number with ROA prefixes in SQL
svn path=/rpkid/irdbd.sql; revision=2504
-rw-r--r-- | rpkid/irdbd.sql | 1 | ||||
-rw-r--r-- | rpkid/rpki/left_right.py | 40 | ||||
-rw-r--r-- | rpkid/rpkid.sql | 1 |
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) |