Initial commit: mwhois with SCION AS support and decimal AS conversion

Based on mwhois by Antonios A. Chariton
Modifications for SCION AS support by Olaf Baumert, Axpo Systems AG
This commit is contained in:
Olaf Baumert
2025-06-03 11:01:02 +00:00
commit 34c631a06d
340 changed files with 212460 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
=IEEE EUI-64 Tests=
Copyright (c) 2008-2015, David P. D. Moss. All rights reserved.
{{{
>>> from netaddr import *
}}}
IEEE EUI-64 tests.
{{{
>>> eui = EUI('00-1B-77-FF-FE-49-54-FD')
>>> eui
EUI('00-1B-77-FF-FE-49-54-FD')
>>> eui.oui
OUI('00-1B-77')
>>> eui.ei
'FF-FE-49-54-FD'
>>> eui.eui64()
EUI('00-1B-77-FF-FE-49-54-FD')
>>> mac = EUI('00-0F-1F-12-E7-33')
>>> ip = mac.ipv6_link_local()
>>> ip
IPAddress('fe80::20f:1fff:fe12:e733')
>>> ip.is_link_local()
True
>>> mac.eui64()
EUI('00-0F-1F-FF-FE-12-E7-33')
}}}
Individual Address Block tests.
{{{
>>> lower_eui = EUI('00-50-C2-05-C0-00')
>>> upper_eui = EUI('00-50-C2-05-CF-FF')
>>> lower_eui.is_iab()
True
>>> str(lower_eui.oui)
'00-50-C2'
>>> str(lower_eui.iab)
'00-50-C2-05-C0-00'
>>> lower_eui.ei
'05-C0-00'
>>> int(lower_eui.oui) == 0x0050c2
True
>>> int(lower_eui.iab) == 0x0050c205c
True
>>> upper_eui.is_iab()
True
>>> str(upper_eui.oui)
'00-50-C2'
>>> str(upper_eui.iab)
'00-50-C2-05-C0-00'
>>> upper_eui.ei
'05-CF-FF'
>>> int(upper_eui.oui) == 0x0050c2
True
>>> int(upper_eui.iab) == 0x0050c205c
True
}}}
Constructor tests.
{{{
>>> eui = EUI('00-90-96-AF-CC-39')
>>> eui == EUI('0-90-96-AF-CC-39')
True
>>> eui == EUI('00-90-96-af-cc-39')
True
>>> eui == EUI('00:90:96:AF:CC:39')
True
>>> eui == EUI('00:90:96:af:cc:39')
True
>>> eui == EUI('0090-96AF-CC39')
True
>>> eui == EUI('0090:96af:cc39')
True
>>> eui == EUI('009096-AFCC39')
True
>>> eui == EUI('009096:AFCC39')
True
>>> eui == EUI('009096AFCC39')
True
>>> eui == EUI('009096afcc39')
True
>>> EUI('01-00-00-00-00-00') == EUI('010000000000')
True
>>> EUI('01-00-00-00-00-00') == EUI('10000000000')
True
>>> EUI('01-00-00-01-00-00') == EUI('010000:010000')
True
>>> EUI('01-00-00-01-00-00') == EUI('10000:10000')
True
}}}
EUI-48 and EUI-64 indentifiers of the same value are *not* equivalent.
{{{
>>> eui48 = EUI('01-00-00-01-00-00')
>>> int(eui48) == 1099511693312
True
>>> eui64 = EUI('00-00-01-00-00-01-00-00')
>>> int(eui64) == 1099511693312
True
>>> eui48 == eui64
False
}}}
Sortability
{{{
>>> import random
>>> eui_list = [EUI(0, 64), EUI(0), EUI(0xffffffffffff, dialect=mac_unix), EUI(0x1000000000000)]
>>> random.shuffle(eui_list)
>>> eui_list.sort()
>>> for eui in eui_list:
... str(eui), eui.version
('00-00-00-00-00-00', 48)
('ff:ff:ff:ff:ff:ff', 48)
('00-00-00-00-00-00-00-00', 64)
('00-01-00-00-00-00-00-00', 64)
}}}
Persistence
{{{
>>> import pickle
>>> eui1 = EUI('00-00-00-01-02-03')
>>> eui2 = pickle.loads(pickle.dumps(eui1))
>>> eui1 == eui2
True
>>> eui1 = EUI('00-00-00-01-02-03', dialect=mac_cisco)
>>> eui2 = pickle.loads(pickle.dumps(eui1))
>>> eui1 == eui2
True
>>> eui1.dialect == eui2.dialect
True
>>> oui1 = EUI('00-00-00-01-02-03').oui
>>> oui2 = pickle.loads(pickle.dumps(oui1))
>>> oui1 == oui2
True
>>> oui1.records == oui2.records
True
>>> iab1 = EUI('00-50-C2-00-1F-FF').iab
>>> iab2 = pickle.loads(pickle.dumps(iab1))
>>> iab1 == iab2
True
>>> iab1.record == iab2.record
True
}}}