use CAPS for enum values
This commit is contained in:
@@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user