OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python37
/
lib
/
python3.7
/
site-packages
/
exabgp
/
protocol
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
03/16/2023 12:55:54 PM
rwxr-xr-x
📄
__init__.py
1.17 KB
03/13/2021 04:30:48 PM
rw-r--r--
📁
__pycache__
-
03/16/2023 12:55:54 PM
rwxr-xr-x
📄
family.py
8.84 KB
03/13/2021 04:30:48 PM
rw-r--r--
📁
ip
-
03/16/2023 12:55:54 PM
rwxr-xr-x
📁
iso
-
03/16/2023 12:55:54 PM
rwxr-xr-x
📄
resource.py
1.85 KB
03/13/2021 04:31:16 PM
rw-r--r--
Editing: resource.py
Close
# encoding: utf-8 """ resource.py Created by Thomas Mangin on 2015-05-15. Copyright (c) 2015-2017 Exa Networks. All rights reserved. License: 3-clause BSD. (See the COPYRIGHT file) """ import sys from exabgp.util import string_is_hex if sys.version_info > (3,): long = int class Resource(long): NAME = '' codes = {} names = {} cache = {} def __new__(cls, *args): key = '//'.join((str(_) for _ in args)) if key in Resource.cache.setdefault(cls, {}): return Resource.cache[cls][key] instance = long.__new__(cls, *args) Resource.cache[cls][key] = instance return instance def __str__(self): return self.names.get(self, 'unknown %s type %ld' % (self.NAME, long(self))) @classmethod def _value(cls, string): name = string.lower().replace('_', '-') if name in cls.codes: return cls.codes[name] if string.isdigit(): value = int(string) if 0 <= value <= 0xFFFF: return value if string_is_hex(string): value = int(string[2:], 16) if 0 <= value <= 0xFFFF: return value raise ValueError('unknown %s %s' % (cls.NAME, name)) @classmethod def named(cls, string): value = 0 for name in string.split('+'): value += cls._value(name) return cls(value) class BitResource(Resource): def bits(self): value = int(self) for bit in self.names.keys(): if value & bit or value == bit: yield self.names[bit] value -= bit if value: yield self.names.get(self, 'unknown %s type %ld' % (self.NAME, long(self))) def named_bits(self): for value in self.bits(): yield value def __str__(self): return '+'.join(self.bits())