use CAPS for enum values

This commit is contained in:
Istvan Ruzman
2022-02-21 16:16:55 +01:00
parent ca67c58ea5
commit 10d7f0b7f4
3 changed files with 59 additions and 61 deletions

View File

@@ -224,22 +224,22 @@ def decode_date(num: bytes) -> int: # TODO: type
ENCODE_MAP: Dict[Datatype, Callable[[Any], bytes]] = { ENCODE_MAP: Dict[Datatype, Callable[[Any], bytes]] = {
Datatype.string: encode_string, Datatype.STRING: encode_string,
Datatype.octets: encode_octets, Datatype.OCTETS: encode_octets,
Datatype.ipaddr: encode_ipv4_address, Datatype.IPADDR: encode_ipv4_address,
Datatype.ipv4prefix: encode_ipv4_prefix, Datatype.IPV4PREFIX: encode_ipv4_prefix,
Datatype.ipv6addr: encode_ipv6_address, Datatype.IPV6ADDR: encode_ipv6_address,
Datatype.ipv6prefix: encode_ipv6_prefix, Datatype.IPV6PREFIX: encode_ipv6_prefix,
Datatype.comboip: encode_combo_ip, Datatype.COMBOIP: encode_combo_ip,
# TODO: length check (8) # TODO: length check (8)
Datatype.ifid: encode_octets, Datatype.IFID: encode_octets,
Datatype.abinary: encode_ascend_binary, Datatype.ABINARY: encode_ascend_binary,
Datatype.byte: lambda value: encode_integer(value, "!B"), Datatype.BYTE: lambda value: encode_integer(value, "!B"),
Datatype.short: lambda value: encode_integer(value, "!H"), Datatype.SHORT: lambda value: encode_integer(value, "!H"),
Datatype.signed: lambda value: encode_integer(value, "!i"), Datatype.SIGNED: lambda value: encode_integer(value, "!i"),
Datatype.integer: encode_integer, Datatype.INTEGER: encode_integer,
Datatype.integer64: lambda value: encode_integer(value, "!Q"), Datatype.INTEGER64: lambda value: encode_integer(value, "!Q"),
Datatype.date: encode_date, Datatype.DATE: encode_date,
} }
@@ -252,22 +252,22 @@ def encode_attr(datatype: Datatype, value: bytes) -> bytes:
DECODE_MAP: Dict[Datatype, Callable[[bytes], Any]] = { DECODE_MAP: Dict[Datatype, Callable[[bytes], Any]] = {
Datatype.string: decode_string, Datatype.STRING: decode_string,
Datatype.octets: decode_octets, Datatype.OCTETS: decode_octets,
Datatype.ipaddr: decode_ipv4_address, Datatype.IPADDR: decode_ipv4_address,
Datatype.ipv4prefix: decode_ipv4_prefix, Datatype.IPV4PREFIX: decode_ipv4_prefix,
Datatype.ipv6addr: decode_ipv6_address, Datatype.IPV6ADDR: decode_ipv6_address,
Datatype.ipv6prefix: decode_ipv6_prefix, Datatype.IPV6PREFIX: decode_ipv6_prefix,
Datatype.comboip: decode_combo_ip, Datatype.COMBOIP: decode_combo_ip,
# TODO: length check (8) # TODO: length check (8)
Datatype.ifid: decode_octets, Datatype.IFID: decode_octets,
Datatype.abinary: decode_ascend_binary, Datatype.ABINARY: decode_ascend_binary,
Datatype.byte: decode_integer, Datatype.BYTE: decode_integer,
Datatype.short: decode_integer, Datatype.SHORT: decode_integer,
Datatype.signed: lambda num: decode_integer(num, True), Datatype.SIGNED: lambda num: decode_integer(num, True),
Datatype.integer: decode_integer, Datatype.INTEGER: decode_integer,
Datatype.integer64: decode_integer, Datatype.INTEGER64: decode_integer,
Datatype.date: decode_date, Datatype.DATE: decode_date,
} }

View File

@@ -40,28 +40,28 @@ class Code(IntEnum):
class Datatype(Enum): class Datatype(Enum):
"""Possible Datatypes for ATTRIBUTES""" """Possible Datatypes for ATTRIBUTES"""
string = auto() STRING = auto()
octets = auto() OCTETS = auto()
date = auto() DATE = auto()
abinary = auto() ABINARY = auto()
byte = auto() BYTE = auto()
short = auto() SHORT = auto()
integer = auto() INTEGER = auto()
signed = auto() SIGNED = auto()
integer64 = auto() INTEGER64 = auto()
ipaddr = auto() IPADDR = auto()
ipv4prefix = auto() IPV4PREFIX = auto()
ipv6addr = auto() IPV6ADDR = auto()
ipv6prefix = auto() IPV6PREFIX = auto()
comboip = auto() COMBOIP = auto()
ifid = auto() IFID = auto()
ether = auto() ETHER = auto()
concat = auto() CONCAT = auto()
tlv = auto() TLV = auto()
extended = auto() EXTENDED = auto()
longextended = auto() LONGEXTENDED = auto()
evs = auto() EVS = auto()
vsa = auto() VSA = auto()
class Encrypt(IntEnum): class Encrypt(IntEnum):

View File

@@ -74,7 +74,7 @@ def decode_attributes(rad_dict: Dictionary, raw_packet: bytes) -> List[Attribute
tag = 0 tag = 0
if attr_def is None: if attr_def is None:
name = "Unknown-Attribute" name = "Unknown-Attribute"
datatype = Datatype.octets datatype = Datatype.OCTETS
else: else:
name = attr_def.name name = attr_def.name
datatype = attr_def.datatype datatype = attr_def.datatype
@@ -119,14 +119,14 @@ def pre_decode_attributes( # pylint: disable=too-many-branches
value = packet_body[2:length] value = packet_body[2:length]
try: try:
attr_def = rad_dict.attrindex[key] attr_def = rad_dict.attrindex[key]
if attr_def.datatype == Datatype.vsa: if attr_def.datatype == Datatype.VSA:
tmp_attributes = decode_vsa(rad_dict, key, value, offset) tmp_attributes = decode_vsa(rad_dict, key, value, offset)
else: else:
if attr_def.datatype == Datatype.extended: if attr_def.datatype == Datatype.EXTENDED:
key, value, modifier = decode_extended(key, value) key, value, modifier = decode_extended(key, value)
elif attr_def.datatype == Datatype.longextended: elif attr_def.datatype == Datatype.LONGEXTENDED:
key, value, modifier = decode_longextended(key, value) key, value, modifier = decode_longextended(key, value)
elif attr_def.datatype == Datatype.concat: elif attr_def.datatype == Datatype.CONCAT:
key, value, modifier = decode_concat(key, value, offset) key, value, modifier = decode_concat(key, value, offset)
else: else:
modifier = 2 modifier = 2
@@ -140,11 +140,9 @@ def pre_decode_attributes( # pylint: disable=too-many-branches
for key, value, offset in tmp_attributes: for key, value, offset in tmp_attributes:
try: try:
adef = rad_dict.attrindex[key] adef = rad_dict.attrindex[key]
if adef.datatype == Datatype.tlv: if adef.datatype == Datatype.TLV:
# TODO: deal with tagged tlvs # TODO: deal with tagged tlvs
attributes.extend(decode_tlv(rad_dict, list(key), value, offset)) attributes.extend(decode_tlv(rad_dict, list(key), value, offset))
elif adef.datatype == Datatype.evs:
attributes.append(decode_evs(key, value, offset))
else: else:
raise ValueError raise ValueError
except (ValueError, KeyError): except (ValueError, KeyError):
@@ -259,7 +257,7 @@ def decode_tlv(
while value: while value:
(key, length) = struct.unpack("!BB", value[0:2]) (key, length) = struct.unpack("!BB", value[0:2])
attr_def = rad_dict.attrindex[tuple(key_stack)] attr_def = rad_dict.attrindex[tuple(key_stack)]
if attr_def.datatype == Datatype.tlv: if attr_def.datatype == Datatype.TLV:
key_stack.append(key) key_stack.append(key)
value = value[:length] value = value[:length]
ret.extend(decode_tlv(rad_dict, key_stack, value[2:], offset + 2)) ret.extend(decode_tlv(rad_dict, key_stack, value[2:], offset + 2))