pyloxi: implement of_meter_features_t
diff --git a/py_gen/oftype.py b/py_gen/oftype.py
index 0bf99f9..7719432 100644
--- a/py_gen/oftype.py
+++ b/py_gen/oftype.py
@@ -63,6 +63,8 @@
v = 'common.match()'
elif self.base == 'of_port_desc_t':
v = 'common.port_desc()'
+ elif self.base == 'of_meter_features_t':
+ v = 'common.meter_features()'
else:
v = "None"
@@ -85,7 +87,7 @@
return 'struct.pack("!6B", *%s)' % expr_expr
elif self.base == 'of_ipv6_t':
return 'struct.pack("!16s", %s)' % expr_expr
- elif self.base in ['of_match_t', 'of_port_desc_t']:
+ elif self.base in ['of_match_t', 'of_port_desc_t', 'of_meter_features_t']:
return '%s.pack()' % expr_expr
elif self.base == 'of_port_name_t':
return self._gen_string_pack_expr(16, expr_expr)
@@ -144,6 +146,8 @@
return self._gen_string_unpack_expr(reader_expr, 32)
elif self.base == 'of_desc_str_t':
return self._gen_string_unpack_expr(reader_expr, 256)
+ elif self.base == 'of_meter_features_t':
+ return 'common.meter_features.unpack(%s)' % (reader_expr)
elif utils.class_is_list(self.base):
element_cls = utils.list_to_entry_type(self.base)[:-2]
if ((element_cls, self.version) in of_g.is_fixed_length) \
diff --git a/py_gen/tests/of13.py b/py_gen/tests/of13.py
index ff1a858..9b8bceb 100644
--- a/py_gen/tests/of13.py
+++ b/py_gen/tests/of13.py
@@ -765,8 +765,30 @@
pass
def test_meter_features_stats_reply(self):
- # TODO
- pass
+ obj = ofp.message.meter_features_stats_reply(
+ xid=0x12345678,
+ flags=0,
+ features=ofp.meter_features(
+ max_meter=5,
+ band_types=ofp.OFPMBT_DROP|ofp.OFPMBT_DSCP_REMARK,
+ capabilities=ofp.OFPMF_KBPS|ofp.OFPMF_STATS,
+ max_bands=10,
+ max_color=7))
+ buf = ''.join([
+ '\x04', '\x13', # version, type
+ '\x00\x20', # length
+ '\x12\x34\x56\x78', # xid
+ '\x00\x0b', # stats_type
+ '\x00\x00', # flags
+ '\x00' * 4, # pad
+ '\x00\x00\x00\x05', # max_meter
+ '\x00\x00\x00\x03', # band_types
+ '\x00\x00\x00\x09', # capabilities
+ '\x0a', # max_bands
+ '\x07', # max_color
+ '\x00' * 2, # pad
+ ])
+ test_serialization(obj, buf)
def test_table_features_stats_request(self):
# TODO
@@ -892,7 +914,6 @@
ofp.message.flow_delete_strict,
ofp.message.flow_modify,
ofp.message.flow_modify_strict,
- ofp.message.meter_features_stats_reply,
ofp.message.table_features_stats_reply,
ofp.message.table_features_stats_request,
]