Source code for pcapkit.vendor.tcp.checksum
# -*- coding: utf-8 -*-
"""TCP Checksum [:rfc:`1146`]"""
import collections
from pcapkit.vendor.default import Vendor
__all__ = ['Checksum']
#: TCP checksum options.
DATA = {
0: 'TCP checksum',
1: "8-bit Fletcher's algorithm",
2: "16-bit Fletcher's algorithm",
3: 'Redundant Checksum Avoidance',
}
[docs]class Checksum(Vendor):
"""TCP Checksum [:rfc:`1146`]"""
#: Value limit checker.
FLAG = 'isinstance(value, int) and 0 <= value <= 255'
[docs] def request(self): # pylint: disable=arguments-differ
"""Fetch registry data.
Returns:
Dict[int, str]: TCP checksum options, i.e. :data:`~pcapkit.vendor.tcp.checksum.DATA`.
"""
return DATA
[docs] def count(self, data):
"""Count field records.
Args:
data (Dict[int, str]): Registry data.
Returns:
Counter: Field recordings.
"""
return collections.Counter(map(self.safe_name, data.values())) # pylint: disable=dict-values-not-iterating,map-builtin-not-iterating
[docs] def process(self, data):
"""Process CSV data.
Args:
data (Dict[int, str]): Registry data.
Returns:
List[str]: Enumeration fields.
List[str]: Missing fields.
"""
enum = list()
miss = [
"extend_enum(cls, 'Unassigned_%d' % value, value)",
'return cls(value)'
]
for code, name in data.items():
renm = self.rename(name, code)
enum.append(f"{renm} = {code}".ljust(76))
return enum, miss
if __name__ == "__main__":
Checksum()