aboutsummaryrefslogtreecommitdiff
path: root/rpki
diff options
context:
space:
mode:
authorMichael Elkins <melkins@tislabs.com>2014-10-31 18:16:46 +0000
committerMichael Elkins <melkins@tislabs.com>2014-10-31 18:16:46 +0000
commit8d64bbe752850c927f786d56aee3e9f274ec9b0f (patch)
tree562dcbc228601bc2a071c69260d47d60fe5cdb0d /rpki
parent63fc9d2a18b53aa5489b9560b6137d45071a52bd (diff)
test for empty prefix list when filtering routing table to avoid returning the entire table. closes #731
svn path=/trunk/; revision=6001
Diffstat (limited to 'rpki')
-rw-r--r--rpki/gui/app/models.py26
1 files 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."""