From 95d482a7cc39606da58bdac099f9585475d0acbb Mon Sep 17 00:00:00 2001 From: Yuichi Ito Date: Thu, 12 Dec 2013 15:34:09 +0900 Subject: [PATCH] packet lib: llc: fix reversibility about json although LLDP is using internal classes, no class is registered into '_class_prefixes'. therefore, AssertionError occurs in from_jsondict() when the argument 'control' was processed. this patch makes from_jsondict() to work correctly by registering internal classes into '_class_prefixes'. examination code: from ryu.lib.packet import llc msg1 = llc.llc(dsap_addr=66, ssap_addr=66, control=llc.ControlFormatI()) print msg1 jsondict = msg1.to_jsondict() msg2 = llc.llc.from_jsondict(jsondict['llc']) print msg2 print str(msg1) == str(msg2) before applying this patch: llc(control=ControlFormatI(pf_bit=0,receive_sequence_number=0,send_sequence_number=0),dsap_addr=66,ssap_addr=66) Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/dist-packages/ryu/lib/stringify.py", line 293, in from_jsondict return cls(**dict(kwargs, **additional_args)) File "/usr/local/lib/python2.7/dist-packages/ryu/lib/packet/llc.py", line 140, in __init__ assert getattr(control, 'TYPE', None) in self._CTR_TYPES AssertionError after applying this patch: llc(control=ControlFormatI(pf_bit=0,receive_sequence_number=0,send_sequence_number=0),dsap_addr=66,ssap_addr=66) llc(control=ControlFormatI(pf_bit=0,receive_sequence_number=0,send_sequence_number=0),dsap_addr=66,ssap_addr=66) True Signed-off-by: Yuichi Ito Signed-off-by: FUJITA Tomonori --- ryu/lib/packet/llc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ryu/lib/packet/llc.py b/ryu/lib/packet/llc.py index 12d557da..6db9b9dd 100644 --- a/ryu/lib/packet/llc.py +++ b/ryu/lib/packet/llc.py @@ -318,3 +318,4 @@ class ControlFormatU(stringify.StringifyMixin): llc.register_packet_type(bpdu.bpdu, SAP_BPDU) +llc.set_classes(llc._CTR_TYPES)