aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/rpki/gui/app/forms.py19
-rw-r--r--rpkid/rpki/gui/app/glue.py8
-rw-r--r--rpkid/rpki/gui/app/views.py24
3 files changed, 21 insertions, 30 deletions
diff --git a/rpkid/rpki/gui/app/forms.py b/rpkid/rpki/gui/app/forms.py
index 1057ee01..355f9d2c 100644
--- a/rpkid/rpki/gui/app/forms.py
+++ b/rpkid/rpki/gui/app/forms.py
@@ -18,11 +18,9 @@ __version__ = '$Id$'
from django.contrib.auth.models import User
from django import forms
-from rpki.resource_set import (resource_range_as, resource_range_ipv4,
- resource_range_ipv6)
+from rpki.resource_set import (resource_range_as, resource_range_ip)
from rpki.gui.app import models
from rpki.exceptions import BadIPResource
-from rpki.gui.app.glue import str_to_resource_range
from rpki.POW import IPAddress
@@ -199,7 +197,7 @@ class ROARequest(forms.Form):
mask = p.bits - (8 * (prefixlen / 8))
prefix = prefix + '/' + str(mask)
- return str_to_resource_range(prefix)
+ return resource_range_ip.parse_str(prefix)
def clean_asn(self):
value = self.cleaned_data.get('asn')
@@ -211,9 +209,9 @@ class ROARequest(forms.Form):
try:
r = self._as_resource_range()
except:
- raise forms.ValidationError('invalid IP address')
+ raise forms.ValidationError('invalid prefix')
- manager = models.ResourceRangeAddressV4 if isinstance(r, resource_range_ipv4) else models.ResourceRangeAddressV6
+ manager = models.ResourceRangeAddressV4 if r.version == 4 else models.ResourceRangeAddressV6
if not manager.objects.filter(cert__conf=self.conf,
prefix_min__lte=r.min,
prefix_max__gte=r.max).exists():
@@ -260,14 +258,14 @@ class ROARequestConfirm(forms.Form):
def clean_prefix(self):
try:
- r = str_to_resource_range(self.cleaned_data.get('prefix'))
+ r = resource_range_ip.parse_str(self.cleaned_data.get('prefix'))
except BadIPResource:
raise forms.ValidationError('invalid prefix')
return str(r)
def clean(self):
try:
- r = str_to_resource_range(self.cleaned_data.get('prefix'))
+ r = resource_range_ip.parse_str(self.cleaned_data.get('prefix'))
if r.prefixlen() > self.cleaned_data.get('max_prefixlen'):
raise forms.ValidationError('max length is smaller than mask')
except BadIPResource:
@@ -333,12 +331,11 @@ class AddNetForm(forms.Form):
def clean_address_range(self):
address_range = self.cleaned_data.get('address_range')
try:
- if ':' in address_range:
- r = resource_range_ipv6.parse_str(address_range)
+ r = resource_range_ip.parse_str(address_range)
+ if r.version == 6:
qs = models.ResourceRangeAddressV6
version = 'IPv6'
else:
- r = resource_range_ipv4.parse_str(address_range)
qs = models.ResourceRangeAddressV4
version = 'IPv4'
except BadIPResource:
diff --git a/rpkid/rpki/gui/app/glue.py b/rpkid/rpki/gui/app/glue.py
index cad48147..03225de7 100644
--- a/rpkid/rpki/gui/app/glue.py
+++ b/rpkid/rpki/gui/app/glue.py
@@ -110,14 +110,6 @@ def list_received_resources(log, conf):
print >>log, "error: unexpected pdu from rpkid type=%s" % type(pdu)
-def str_to_resource_range(prefix):
- try:
- r = resource_range_ipv4.parse_str(prefix)
- except BadIPResource:
- r = resource_range_ipv6.parse_str(prefix)
- return r
-
-
def get_email_list(conf):
"""Return a list of the contact emails for this user.
diff --git a/rpkid/rpki/gui/app/views.py b/rpkid/rpki/gui/app/views.py
index 2d674c95..08e43605 100644
--- a/rpkid/rpki/gui/app/views.py
+++ b/rpkid/rpki/gui/app/views.py
@@ -35,8 +35,8 @@ from django.views.generic import DetailView
from rpki.irdb import Zookeeper, ChildASN, ChildNet
from rpki.gui.app import models, forms, glue, range_list
-from rpki.resource_set import (resource_range_as, resource_range_ipv4,
- resource_range_ipv6, roa_prefix_ipv4)
+from rpki.resource_set import (resource_range_as, resource_range_ip,
+ roa_prefix_ipv4)
from rpki import sundial
import rpki.exceptions
@@ -209,6 +209,12 @@ def dashboard(request):
x.is_prefix = False
unused_prefixes_v6 = my_prefixes_v6.difference(used_prefixes_v6)
+ for x in unused_prefixes_v6:
+ try:
+ x.prefixlen()
+ x.is_prefix = True
+ except rpki.exceptions.MustBePrefix:
+ x.is_prefix = False
clients = models.Client.objects.all() if request.user.is_superuser else None
@@ -325,12 +331,8 @@ def child_add_prefix(request, pk):
form = forms.AddNetForm(request.POST, child=child)
if form.is_valid():
address_range = form.cleaned_data.get('address_range')
- if ':' in address_range:
- r = resource_range_ipv6.parse_str(address_range)
- version = 'IPv6'
- else:
- r = resource_range_ipv4.parse_str(address_range)
- version = 'IPv4'
+ r = resource_range_ip.parse_str(address_range)
+ version = 'IPv%d' % r.version
child.address_ranges.create(start_ip=str(r.min), end_ip=str(r.max),
version=version)
Zookeeper(handle=conf.handle, logstream=logstream).run_rpkid_now()
@@ -523,12 +525,12 @@ def roa_create_confirm(request):
if form.is_valid():
asn = form.cleaned_data.get('asn')
prefix = form.cleaned_data.get('prefix')
- rng = glue.str_to_resource_range(prefix)
+ rng = resource_range_ip.parse_str(prefix)
max_prefixlen = form.cleaned_data.get('max_prefixlen')
# Always create ROA requests with a single prefix.
# https://trac.rpki.net/ticket/32
roa = models.ROARequest.objects.create(issuer=conf, asn=asn)
- v = 'IPv4' if isinstance(rng, resource_range_ipv4) else 'IPv6'
+ v = 'IPv%d' % rng.version
roa.prefixes.create(version=v, prefix=str(rng.min),
prefixlen=rng.prefixlen(),
max_prefixlen=max_prefixlen)
@@ -653,7 +655,7 @@ def refresh(request):
def roa_match(rng):
"""Return a list of tuples of matching routes and roas."""
- if isinstance(rng, resource_range_ipv6):
+ if rng.min.version == 6:
route_manager = models.RouteOriginV6.objects
pfx = 'prefixes_v6'
else: