mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-05-14 00:56:37 +02:00
of1.2: fix OFPErrorExperimenterMsg
- add OFPErrorExperimenterMsg. Signed-off-by: KONDOH Tasuku <kondoh.tasuku@po.ntts.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
e1c7f737f5
commit
0fab6cdf2f
@ -69,6 +69,12 @@ class OFPErrorMsg(MsgBase):
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
type_, = struct.unpack_from('!H', buffer(buf),
|
||||
ofproto_v1_2.OFP_HEADER_SIZE)
|
||||
if type_ == ofproto_v1_2.OFPET_EXPERIMENTER:
|
||||
return OFPErrorExperimenterMsg.parser(datapath, version, msg_type,
|
||||
msg_len, xid, buf)
|
||||
|
||||
msg = super(OFPErrorMsg, cls).parser(datapath, version, msg_type,
|
||||
msg_len, xid, buf)
|
||||
msg.type, msg.code = struct.unpack_from(
|
||||
@ -84,6 +90,26 @@ class OFPErrorMsg(MsgBase):
|
||||
self.buf += self.data
|
||||
|
||||
|
||||
class OFPErrorExperimenterMsg(MsgBase):
|
||||
def __init__(self, datapath):
|
||||
super(OFPErrorExperimenterMsg, self).__init__(datapath)
|
||||
self.type = None
|
||||
self.exp_type = None
|
||||
self.experimenter = None
|
||||
self.data = None
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
cls.cls_msg_type = msg_type
|
||||
msg = super(OFPErrorExperimenterMsg, cls).parser(
|
||||
datapath, version, msg_type, msg_len, xid, buf)
|
||||
msg.type, msg.exp_type, msg.experimenter = struct.unpack_from(
|
||||
ofproto_v1_2.OFP_ERROR_EXPERIMENTER_MSG_PACK_STR, msg.buf,
|
||||
ofproto_v1_2.OFP_HEADER_SIZE)
|
||||
msg.data = msg.buf[ofproto_v1_2.OFP_ERROR_EXPERIMENTER_SIZE:]
|
||||
return msg
|
||||
|
||||
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto_v1_2.OFPT_ECHO_REQUEST)
|
||||
class OFPEchoRequest(MsgBase):
|
||||
|
||||
@ -763,6 +763,29 @@ class TestOFPErrorMsg(unittest.TestCase):
|
||||
data = 'Error Message.'
|
||||
self._test_parser(type_, code, data)
|
||||
|
||||
def test_parser_experimenter(self):
|
||||
type_ = 0xffff
|
||||
exp_type = 1
|
||||
experimenter = 1
|
||||
data = 'Error Experimenter Message.'
|
||||
|
||||
# OFP_ERROR_EXPERIMENTER_MSG_PACK_STR = '!HHI'
|
||||
fmt = ofproto_v1_2.OFP_ERROR_EXPERIMENTER_MSG_PACK_STR
|
||||
buf = self.buf + pack(fmt, type_, exp_type, experimenter) \
|
||||
+ data
|
||||
|
||||
res = OFPErrorMsg.parser(object, self.version, self.msg_type,
|
||||
self.msg_len, self.xid, buf)
|
||||
|
||||
eq_(res.version, self.version)
|
||||
eq_(res.msg_type, self.msg_type)
|
||||
eq_(res.msg_len, self.msg_len)
|
||||
eq_(res.xid, self.xid)
|
||||
eq_(res.type, type_)
|
||||
eq_(res.exp_type, exp_type)
|
||||
eq_(res.experimenter, experimenter)
|
||||
eq_(res.data, data)
|
||||
|
||||
def _test_serialize(self, type_, code, data):
|
||||
# OFP_ERROR_MSG_PACK_STR = '!HH'
|
||||
fmt = ofproto_v1_2.OFP_ERROR_MSG_PACK_STR
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user