OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
python37
/
lib
/
python3.7
/
site-packages
/
exabgp
/
protocol
/
ip
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
7.84 KB
03/13/2021 04:30:48 PM
rw-r--r--
📁
__pycache__
-
03/16/2023 12:55:54 PM
rwxr-xr-x
📄
fragment.py
1.12 KB
03/13/2021 04:30:48 PM
rw-r--r--
📄
icmp.py
4.38 KB
03/13/2021 04:30:48 PM
rw-r--r--
📄
netmask.py
2.43 KB
03/13/2021 04:30:48 PM
rw-r--r--
📄
port.py
129.47 KB
03/13/2021 04:30:48 PM
rw-r--r--
📁
tcp
-
03/16/2023 12:55:54 PM
rwxr-xr-x
Editing: netmask.py
Close
# encoding: utf-8 """ icmp.py Created by Thomas Mangin on 2010-01-15. Copyright (c) 2017-2017 Exa Networks. All rights reserved. """ import sys from exabgp.protocol.family import AFI from exabgp.protocol.resource import Resource if sys.version_info > (3,): long = int class NetMask(Resource): NAME = 'netmask' def size(self): return pow(2, self.maximum - self) def andmask(self): return pow(2, self.maximum) - 1 def hostmask(self): return pow(2, self.maximum - self) - 1 def networkmask(self): return self.hostmask() ^ self.andmask() def __str__(self): # return self.names.get(self,'%d' % int(self)) return '%d' % int(self) names = { 32: '255.255.255.255', 31: '255.255.255.254', 30: '255.255.255.252', 29: '255.255.255.248', 28: '255.255.255.240', 27: '255.255.255.224', 26: '255.255.255.192', 25: '255.255.255.128', 24: '255.255.255.0', 23: '255.255.254.0', 22: '255.255.252.0', 21: '255.255.248.0', 20: '255.255.240.0', 19: '255.255.224.0', 18: '255.255.192.0', 17: '255.255.128.0', 16: '255.255.0.0', 15: '255.254.0.0', 14: '255.252.0.0', 13: '255.248.0.0', 12: '255.240.0.0', 11: '255.224.0.0', 10: '255.192.0.0', 9: '255.128.0.0', 8: '255.0.0.0', 7: '254.0.0.0', 6: '252.0.0.0', 5: '248.0.0.0', 4: '240.0.0.0', 3: '224.0.0.0', 2: '192.0.0.0', 1: '128.0.0.0', 0: '0.0.0.0', } codes = dict([(r, l) for (l, r) in names.items()]) @classmethod def create(cls, string, afi): if afi == AFI.ipv4: if string is cls.codes: klass = cls(cls.codes[string], 32) klass.maximum = 32 return klass maximum = 32 elif afi == AFI.ipv6: if string in cls.codes: raise ValueError('IPv4 mask used with an IPv6 address') maximum = 128 else: raise ValueError('invalid address family') if not string.isdigit(): raise ValueError('invalid netmask %s' % string) value = long(string) if value < 0 or value > maximum: raise ValueError('invalid netmask %s' % string) klass = cls(value) klass.maximum = maximum return klass