diff options
author | Michael Elkins <melkins@tislabs.com> | 2013-03-21 16:24:44 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2013-03-21 16:24:44 +0000 |
commit | 36a1352db66973374f0617a23b97845a3b326809 (patch) | |
tree | 41a2ac5887dc8406f8928c5089d40222fdd9ae87 /rpkid/rpki/gui/app/models.py | |
parent | 222bcd6df0fe316319902e331633580292b7c867 (diff) |
merge ^/branches/tk334
svn path=/trunk/; revision=5193
Diffstat (limited to 'rpkid/rpki/gui/app/models.py')
-rw-r--r-- | rpkid/rpki/gui/app/models.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/rpkid/rpki/gui/app/models.py b/rpkid/rpki/gui/app/models.py index a2142b4f..64dcc656 100644 --- a/rpkid/rpki/gui/app/models.py +++ b/rpkid/rpki/gui/app/models.py @@ -118,6 +118,34 @@ class Conf(rpki.irdb.models.ResourceHolderCA): def roas(self): return ROARequest.objects.filter(issuer=self) + @property + def routes(self): + """Return all IPv4 routes covered by RPKI certs issued to this resource + holder. + + """ + # 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, + prefix_max__lte=p.prefix_max) + return RouteOrigin.objects.filter(q) + + @property + def routes_v6(self): + """Return all IPv6 routes covered by RPKI certs issued to this resource + holder. + + """ + # 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) + class Meta: proxy = True @@ -187,6 +215,26 @@ class ROARequest(rpki.irdb.models.ROARequest): def get_absolute_url(self): return ('rpki.gui.app.views.roa_detail', [str(self.pk)]) + @property + def routes(self): + "Return all IPv4 routes covered by this roa prefix." + # this assumes one prefix per ROA + rng = self.prefixes.filter(version=4)[0].as_resource_range() + return rpki.gui.routeview.models.RouteOrigin.objects.filter( + prefix_min__lte=rng.max, + prefix_max__gte=rng.min + ) + + @property + def routes_v6(self): + "Return all IPv6 routes covered by this roa prefix." + # this assumes one prefix per ROA + rng = self.prefixes.filter(version=6)[0].as_resource_range() + return rpki.gui.routeview.models.RouteOriginV6.objects.filter( + prefix_min__lte=rng.max, + prefix_max__gte=rng.min + ) + class ROARequestPrefix(rpki.irdb.models.ROARequestPrefix): class Meta: |