diff options
author | Jakub Stasiak <jakub@stasiak.at> | 2020-06-17 19:05:45 +0200 |
---|---|---|
committer | Jakub Stasiak <jakub@stasiak.at> | 2020-06-17 19:05:45 +0200 |
commit | 297ac7081f76224fb194a7b5350e6d129c328eb4 (patch) | |
tree | 33f20c1c7b29bac1026f76be6f9247f8a5be529c /netaddr/eui/ieee.py | |
parent | 036fc2f39ed55aa0a4e709473bb6d5f7d3b2ef4a (diff) | |
parent | 5b2807ff91640c959dc358334f626cea0e28778c (diff) | |
download | netaddr-next-master.tar.gz |
Merge branch 'rel-0.7.x'next-master
Diffstat (limited to 'netaddr/eui/ieee.py')
-rwxr-xr-x | netaddr/eui/ieee.py | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/netaddr/eui/ieee.py b/netaddr/eui/ieee.py index 36380f6..3e66d55 100755 --- a/netaddr/eui/ieee.py +++ b/netaddr/eui/ieee.py @@ -35,24 +35,13 @@ More details can be found at the following URLs :- import os.path as _path import csv as _csv -from netaddr.compat import _bytes_type +from netaddr.compat import _bytes_type, _importlib_resources from netaddr.core import Subscriber, Publisher -#: Path to local copy of IEEE OUI Registry data file. -OUI_REGISTRY_PATH = _path.join(_path.dirname(__file__), 'oui.txt') -#: Path to netaddr OUI index file. -OUI_INDEX_PATH = _path.join(_path.dirname(__file__), 'oui.idx') - #: OUI index lookup dictionary. OUI_INDEX = {} -#: Path to local copy of IEEE IAB Registry data file. -IAB_REGISTRY_PATH = _path.join(_path.dirname(__file__), 'iab.txt') - -#: Path to netaddr IAB index file. -IAB_INDEX_PATH = _path.join(_path.dirname(__file__), 'iab.idx') - #: IAB index lookup dictionary. IAB_INDEX = {} @@ -258,22 +247,29 @@ class IABIndexParser(Publisher): self.notify(record) -def create_index_from_registry(registry_path, index_path, parser): +def create_index_from_registry(registry_fh, index_path, parser): """Generate an index files from the IEEE registry file.""" - oui_parser = parser(registry_path) + oui_parser = parser(registry_fh) oui_parser.attach(FileIndexer(index_path)) oui_parser.parse() def create_indices(): """Create indices for OUI and IAB file based lookups""" - create_index_from_registry(OUI_REGISTRY_PATH, OUI_INDEX_PATH, OUIIndexParser) - create_index_from_registry(IAB_REGISTRY_PATH, IAB_INDEX_PATH, IABIndexParser) - - -def load_index(index, index_path): + create_index_from_registry( + _path.join(_path.dirname(__file__), 'oui.txt'), + _path.join(_path.dirname(__file__), 'oui.idx'), + OUIIndexParser, + ) + create_index_from_registry( + _path.join(_path.dirname(__file__), 'iab.txt'), + _path.join(_path.dirname(__file__), 'iab.idx'), + IABIndexParser, + ) + + +def load_index(index, fp): """Load index from file into index data structure.""" - fp = open(index_path, 'rb') try: for row in _csv.reader([x.decode('UTF-8') for x in fp]): (key, offset, size) = [int(_) for _ in row] @@ -285,8 +281,8 @@ def load_index(index, index_path): def load_indices(): """Load OUI and IAB lookup indices into memory""" - load_index(OUI_INDEX, OUI_INDEX_PATH) - load_index(IAB_INDEX, IAB_INDEX_PATH) + load_index(OUI_INDEX, _importlib_resources.open_binary(__package__, 'oui.idx')) + load_index(IAB_INDEX, _importlib_resources.open_binary(__package__, 'iab.idx')) if __name__ == '__main__': |