From 03d0e7da032b4ca6081512faabac9ae2508becb8 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Tue, 3 Jul 2007 21:19:23 +0000 Subject: Start of an rpki module collection. svn path=/scripts/rpki/__init__.py; revision=717 --- scripts/rpki/ipaddrs.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 scripts/rpki/ipaddrs.py (limited to 'scripts/rpki/ipaddrs.py') diff --git a/scripts/rpki/ipaddrs.py b/scripts/rpki/ipaddrs.py new file mode 100644 index 00000000..e041e801 --- /dev/null +++ b/scripts/rpki/ipaddrs.py @@ -0,0 +1,27 @@ +# $Id$ + +import socket, struct + +class v4addr(long): + bits = 32 + + def __new__(cls, x): + if isinstance(x, str): + y = struct.unpack("!I", socket.inet_pton(socket.AF_INET, x)) + x = y[0] + return long.__new__(cls, x) + + def __str__(self): + return socket.inet_ntop(socket.AF_INET, struct.pack("!I", long(self))) + +class v6addr(long): + bits = 128 + + def __new__(cls, x): + if isinstance(x, str): + y = struct.unpack("!QQ", socket.inet_pton(socket.AF_INET6, x)) + x = (y[0] << 64) | y[1] + return long.__new__(cls, x) + + def __str__(self): + return socket.inet_ntop(socket.AF_INET6, struct.pack("!QQ", long(self) >> 64, long(self) & 0xFFFFFFFFFFFFFFFF)) -- cgit v1.2.3