mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-05-11 07:16:10 +02:00
Add OF1.4 experimenter message support
Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
0d0bd4592f
commit
845333136f
@ -917,6 +917,11 @@ OFP_ERROR_EXPERIMENTER_MSG_SIZE = 16
|
||||
assert (calcsize(OFP_ERROR_EXPERIMENTER_MSG_PACK_STR) +
|
||||
OFP_HEADER_SIZE) == OFP_ERROR_EXPERIMENTER_MSG_SIZE
|
||||
|
||||
# struct ofp_experimenter_header
|
||||
OFP_EXPERIMENTER_HEADER_PACK_STR = '!II'
|
||||
OFP_EXPERIMENTER_HEADER_SIZE = 16
|
||||
assert (calcsize(OFP_EXPERIMENTER_HEADER_PACK_STR) + OFP_HEADER_SIZE
|
||||
== OFP_EXPERIMENTER_HEADER_SIZE)
|
||||
|
||||
# enum ofp_multipart_type
|
||||
OFPMP_DESC = 0
|
||||
|
||||
@ -359,6 +359,46 @@ class OFPFeaturesRequest(MsgBase):
|
||||
super(OFPFeaturesRequest, self).__init__(datapath)
|
||||
|
||||
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto.OFPT_EXPERIMENTER)
|
||||
class OFPExperimenter(MsgBase):
|
||||
"""
|
||||
Experimenter extension message
|
||||
|
||||
============= =========================================================
|
||||
Attribute Description
|
||||
============= =========================================================
|
||||
experimenter Experimenter ID
|
||||
exp_type Experimenter defined
|
||||
data Experimenter defined arbitrary additional data
|
||||
============= =========================================================
|
||||
"""
|
||||
def __init__(self, datapath, experimenter=None, exp_type=None, data=None):
|
||||
super(OFPExperimenter, self).__init__(datapath)
|
||||
self.experimenter = experimenter
|
||||
self.exp_type = exp_type
|
||||
self.data = data
|
||||
|
||||
@classmethod
|
||||
def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
|
||||
msg = super(OFPExperimenter, cls).parser(datapath, version,
|
||||
msg_type, msg_len,
|
||||
xid, buf)
|
||||
(msg.experimenter, msg.exp_type) = struct.unpack_from(
|
||||
ofproto.OFP_EXPERIMENTER_HEADER_PACK_STR, msg.buf,
|
||||
ofproto.OFP_HEADER_SIZE)
|
||||
msg.data = msg.buf[ofproto.OFP_EXPERIMENTER_HEADER_SIZE:]
|
||||
|
||||
return msg
|
||||
|
||||
def _serialize_body(self):
|
||||
assert self.data is not None
|
||||
msg_pack_into(ofproto.OFP_EXPERIMENTER_HEADER_PACK_STR,
|
||||
self.buf, ofproto.OFP_HEADER_SIZE,
|
||||
self.experimenter, self.exp_type)
|
||||
self.buf += self.data
|
||||
|
||||
|
||||
@_register_parser
|
||||
@_set_msg_type(ofproto.OFPT_FEATURES_REPLY)
|
||||
class OFPSwitchFeatures(MsgBase):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user