From 8d64bbe752850c927f786d56aee3e9f274ec9b0f Mon Sep 17 00:00:00 2001 From: Michael Elkins Date: Fri, 31 Oct 2014 18:16:46 +0000 Subject: test for empty prefix list when filtering routing table to avoid returning the entire table. closes #731 svn path=/trunk/; revision=6001 --- rpki/gui/app/models.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/rpki/gui/app/models.py b/rpki/gui/app/models.py index 21a86487..d3b0733d 100644 --- a/rpki/gui/app/models.py +++ b/rpki/gui/app/models.py @@ -153,11 +153,15 @@ class Conf(rpki.irdb.models.ResourceHolderCA): """ # build a Q filter to select all RouteOrigin objects covered by # prefixes in the resource holder's certificates - q = models.Q() - for p in ResourceRangeAddressV4.objects.filter(cert__conf=self): - q |= models.Q(prefix_min__gte=p.prefix_min, + prefixes = ResourceRangeAddressV4.objects.filter(cert__conf=self) + if prefixes: + q = models.Q() + for p in prefixes: + q |= models.Q(prefix_min__gte=p.prefix_min, prefix_max__lte=p.prefix_max) - return RouteOrigin.objects.filter(q) + return RouteOrigin.objects.filter(q) + else: + return RouteOrigin.objects.none() @property def routes_v6(self): @@ -167,11 +171,15 @@ class Conf(rpki.irdb.models.ResourceHolderCA): """ # build a Q filter to select all RouteOrigin objects covered by # prefixes in the resource holder's certificates - q = models.Q() - for p in ResourceRangeAddressV6.objects.filter(cert__conf=self): - q |= models.Q(prefix_min__gte=p.prefix_min, - prefix_max__lte=p.prefix_max) - return RouteOriginV6.objects.filter(q) + prefixes = ResourceRangeAddressV6.objects.filter(cert__conf=self) + if prefixes: + q = models.Q() + for p in ResourceRangeAddressV6.objects.filter(cert__conf=self): + q |= models.Q(prefix_min__gte=p.prefix_min, + prefix_max__lte=p.prefix_max) + return RouteOriginV6.objects.filter(q) + else: + return RouteOriginV6.objects.none() def send_alert(self, subject, message, from_email, severity=Alert.INFO): """Store an alert for this resource holder.""" -- cgit v1.2.3