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

View File

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

View File

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