aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/gui
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2012-10-12 21:42:51 +0000
committerRob Austein <sra@hactrn.net>2012-10-12 21:42:51 +0000
commitf91067126a35c2df1d5fff8d0061262e568114c1 (patch)
tree7998f195ca3236701fead828549fed23dc180024 /rpkid/rpki/gui
parent0de5ca9137dfafdf85e2d268016b3e6b6908fd02 (diff)
Replace rpki.ipaddrs with rpki.POW.IPAddress.
svn path=/branches/tk274/; revision=4773
Diffstat (limited to 'rpkid/rpki/gui')
-rw-r--r--rpkid/rpki/gui/app/forms.py10
-rw-r--r--rpkid/rpki/gui/cacheview/models.py1
-rw-r--r--rpkid/rpki/gui/cacheview/views.py8
-rw-r--r--rpkid/rpki/gui/models.py15
4 files changed, 12 insertions, 22 deletions
diff --git a/rpkid/rpki/gui/app/forms.py b/rpkid/rpki/gui/app/forms.py
index 80439b00..2166343a 100644
--- a/rpkid/rpki/gui/app/forms.py
+++ b/rpkid/rpki/gui/app/forms.py
@@ -23,7 +23,7 @@ from rpki.resource_set import (resource_range_as, resource_range_ipv4,
from rpki.gui.app import models
from rpki.exceptions import BadIPResource
from rpki.gui.app.glue import str_to_resource_range
-import rpki.ipaddrs
+from rpki.POW import IPAddress
class AddConfForm(forms.Form):
@@ -190,11 +190,7 @@ class ROARequest(forms.Form):
"""
prefix = self.cleaned_data.get('prefix')
if '/' not in prefix:
- p = rpki.ipaddrs.parse(prefix)
-
- # rpki.ipaddrs.parse doesn't return a v?addr object, so can't
- # introspect p.bits
- bits = 32 if ':' not in prefix else 64
+ p = IPAddress(prefix)
# determine the first nonzero bit starting from the lsb and
# subtract from the address size to find the closest classful
@@ -203,7 +199,7 @@ class ROARequest(forms.Form):
while (p != 0) and (p & 1) == 0:
prefixlen = prefixlen + 1
p = p >> 1
- mask = bits - (8 * (prefixlen / 8))
+ mask = p.bits - (8 * (prefixlen / 8))
prefix = prefix + '/' + str(mask)
return str_to_resource_range(prefix)
diff --git a/rpkid/rpki/gui/cacheview/models.py b/rpkid/rpki/gui/cacheview/models.py
index 4be45b5c..f58cca33 100644
--- a/rpkid/rpki/gui/cacheview/models.py
+++ b/rpkid/rpki/gui/cacheview/models.py
@@ -20,7 +20,6 @@ import time
from django.db import models
-import rpki.ipaddrs
import rpki.resource_set
import rpki.gui.models
diff --git a/rpkid/rpki/gui/cacheview/views.py b/rpkid/rpki/gui/cacheview/views.py
index b75763fa..ffb04136 100644
--- a/rpkid/rpki/gui/cacheview/views.py
+++ b/rpkid/rpki/gui/cacheview/views.py
@@ -20,7 +20,7 @@ from django.shortcuts import get_object_or_404, redirect
from rpki.gui.cacheview import models, forms, misc
from rpki.gui.app.views import render
from rpki.resource_set import resource_range_as
-from rpki.ipaddrs import v4addr, v6addr
+from rpki.POW import IPAddress
# Create your views here.
@@ -133,11 +133,7 @@ def query_view(request):
prefix_list = []
for roa in roas:
for pfx in roa.prefixes.all():
- if pfx.family == 4:
- addr = v4addr(pfx.prefix.encode())
- elif pfx.family == 6:
- addr = v6addr(pfx.prefix.encode())
-
+ addr = IPAddress(pfx.prefix.encode())
prefix_list.append((pfx, roa, addr))
prefix_list.sort(cmp=cmp_prefix)
diff --git a/rpkid/rpki/gui/models.py b/rpkid/rpki/gui/models.py
index 749f335f..3f601f7c 100644
--- a/rpkid/rpki/gui/models.py
+++ b/rpkid/rpki/gui/models.py
@@ -23,7 +23,7 @@ import struct
from django.db import models
import rpki.resource_set
-import rpki.ipaddrs
+import rpki.POW
class IPv6AddressField(models.Field):
"Field large enough to hold a 128-bit unsigned integer."
@@ -34,16 +34,15 @@ class IPv6AddressField(models.Field):
return 'binary(16)'
def to_python(self, value):
- if isinstance(value, rpki.ipaddrs.v6addr):
+ if isinstance(value, rpki.POW.IPAddress):
return value
- x = struct.unpack('!QQ', value)
- return rpki.ipaddrs.v6addr((x[0] << 64) | x[1])
+ return rpki.POW.IPAddress.from_bytes(value)
def get_db_prep_value(self, value, connection, prepared):
- return struct.pack('!QQ', (long(value) >> 64) & 0xFFFFFFFFFFFFFFFFL, long(value) & 0xFFFFFFFFFFFFFFFFL)
+ return value.to_bytes()
class IPv4AddressField(models.Field):
- "Wrapper around rpki.ipaddrs.v4addr."
+ "Wrapper around rpki.POW.IPAddress."
__metaclass__ = models.SubfieldBase
@@ -51,9 +50,9 @@ class IPv4AddressField(models.Field):
return 'int UNSIGNED'
def to_python(self, value):
- if isinstance(value, rpki.ipaddrs.v4addr):
+ if isinstance(value, rpki.POW.IPAddress):
return value
- return rpki.ipaddrs.v4addr(value)
+ return rpki.POW.IPAddress(value)
def get_db_prep_value(self, value, connection, prepared):
return long(value)