diff options
Diffstat (limited to 'scripts/rpki/left_right.py')
-rw-r--r-- | scripts/rpki/left_right.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/scripts/rpki/left_right.py b/scripts/rpki/left_right.py index 63caec3d..8aaf64a9 100644 --- a/scripts/rpki/left_right.py +++ b/scripts/rpki/left_right.py @@ -318,6 +318,22 @@ class route_origin_elt(base_elt, rpki.sql.sql_persistant): "route_origin_id" : self.route_origin_id, "as_number" : self.asn } + def sql_fetch_hook(self, db, cur): + self.ipv4 = rpki.resource_set.resource_set_ipv4() + self.ipv4.from_sql(cur, """SELECT start_ip, end_ip FROM route_origin_prefix WHERE route_origin_id = %s AND start_ip NOT LIKE '%:%'""", self.route_origin_id) + self.ipv6 = rpki.resource_set.resource_set_ipv6() + self.ipv4.from_sql(cur, """SELECT start_ip, end_ip FROM route_origin_prefix WHERE route_origin_id = %s AND start_ip LIKE '%:%'""", self.route_origin_id) + + def sql_insert_hook(self, db, cur): + cur.executemany("""INSERT route_origin_prefix (route_origin_id, start_ip, end_ip) VALUES (%s, %s, %s)""", [(x.min, x.max) for x in self.ipv4 + self.ipv6]) + + def sql_update_hook(self, db, cur): + self.delete_hook(db, cur) + self.insert_hook(db, cur) + + def sql_delete_hook(self, db, cur): + cur.execute("""DELETE FROM route_origin_prefix WHERE route_origin_id = %s""", self.route_origin_id) + def startElement(self, stack, name, attrs): """Handle <route_origin/> element.""" assert name == "route_origin", "Unexpected name %s, stack %s" % (name, stack) |