mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-01-31 05:21:21 +01:00
ofproto_v1_4_parser: Move utility method to OFPPropBase
The backport from ofproto_v1_5_parser: This patch moves get_rest() and serialize() from OFPTableFeatureProp to OFPPropBase in order to share it with other subclass. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
3af4f650f8
commit
e61ade46d9
@ -852,6 +852,32 @@ class OFPPropBase(StringifyMixin):
|
||||
prop.length = length
|
||||
return prop, rest
|
||||
|
||||
@classmethod
|
||||
def get_rest(cls, buf):
|
||||
(type_, length) = struct.unpack_from(cls._PACK_STR, buf, 0)
|
||||
offset = struct.calcsize(cls._PACK_STR)
|
||||
return buf[offset:length]
|
||||
|
||||
def serialize(self):
|
||||
# Body
|
||||
# serialize_body should be implemented by subclass
|
||||
body = bytearray()
|
||||
body += self.serialize_body()
|
||||
|
||||
# fixup
|
||||
self.length = len(body) + struct.calcsize(self._PACK_STR)
|
||||
|
||||
# Header
|
||||
buf = bytearray()
|
||||
msg_pack_into(self._PACK_STR, buf, 0, self.type, self.length)
|
||||
buf += body
|
||||
|
||||
# Pad
|
||||
pad_len = utils.round_up(self.length, 8) - self.length
|
||||
msg_pack_into("%dx" % pad_len, buf, len(buf))
|
||||
|
||||
return buf
|
||||
|
||||
|
||||
class OFPPropCommonExperimenter4ByteData(StringifyMixin):
|
||||
_PACK_STR = '!HHII'
|
||||
@ -2230,32 +2256,6 @@ class OFPTableFeaturesStats(StringifyMixin):
|
||||
class OFPTableFeatureProp(OFPPropBase):
|
||||
_TYPES = {}
|
||||
|
||||
@classmethod
|
||||
def get_rest(cls, buf):
|
||||
(type_, length) = struct.unpack_from(cls._PACK_STR, buf, 0)
|
||||
offset = struct.calcsize(cls._PACK_STR)
|
||||
return buf[offset:length]
|
||||
|
||||
def serialize(self):
|
||||
# Body
|
||||
# serialize_body should be implemented by subclass
|
||||
body = bytearray()
|
||||
body += self.serialize_body()
|
||||
|
||||
# fixup
|
||||
self.length = len(body) + struct.calcsize(self._PACK_STR)
|
||||
|
||||
# Header
|
||||
buf = bytearray()
|
||||
msg_pack_into(self._PACK_STR, buf, 0, self.type, self.length)
|
||||
buf += body
|
||||
|
||||
# Pad
|
||||
pad_len = utils.round_up(self.length, 8) - self.length
|
||||
msg_pack_into("%dx" % pad_len, buf, len(buf))
|
||||
|
||||
return buf
|
||||
|
||||
|
||||
class OFPInstructionId(StringifyMixin):
|
||||
_PACK_STR = '!HH' # type, len
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user