pyloxi: fix OF 1.1+ flow mod parsing
diff --git a/py_gen/templates/message.py b/py_gen/templates/message.py
index 761fb7f..89dcae5 100644
--- a/py_gen/templates/message.py
+++ b/py_gen/templates/message.py
@@ -122,11 +122,16 @@
else:
raise loxi.ProtocolError("unexpected message type")
-:: # TODO fix for OF 1.1+
def parse_flow_mod(buf):
- if len(buf) < 56 + 2:
+:: if version == 1:
+:: offset = 57
+:: elif version >= 2:
+:: offset = 25
+:: #endif
+ if len(buf) < ${offset} + 1:
raise loxi.ProtocolError("message too short")
- cmd, = struct.unpack_from("!H", buf, 56)
+ # Technically uint16_t for OF 1.0
+ cmd, = struct.unpack_from("!B", buf, ${offset})
if cmd in flow_mod_parsers:
return flow_mod_parsers[cmd](buf)
else:
diff --git a/py_gen/tests/of11.py b/py_gen/tests/of11.py
index 7e6ada7..07a5437 100644
--- a/py_gen/tests/of11.py
+++ b/py_gen/tests/of11.py
@@ -83,12 +83,7 @@
fn()
def test_parse_message(self):
- expected_failures = [
- ofp.message.flow_delete,
- ofp.message.flow_delete_strict,
- ofp.message.flow_modify,
- ofp.message.flow_modify_strict,
- ]
+ expected_failures = []
for klass in self.klasses:
if not issubclass(klass, ofp.message.Message):
continue
diff --git a/py_gen/tests/of12.py b/py_gen/tests/of12.py
index 447da03..c6c94ab 100644
--- a/py_gen/tests/of12.py
+++ b/py_gen/tests/of12.py
@@ -92,13 +92,7 @@
fn()
def test_parse_message(self):
- expected_failures = [
- ofp.message.flow_add,
- ofp.message.flow_delete,
- ofp.message.flow_delete_strict,
- ofp.message.flow_modify,
- ofp.message.flow_modify_strict,
- ]
+ expected_failures = []
for klass in self.klasses:
if not issubclass(klass, ofp.message.Message):
continue
diff --git a/py_gen/tests/of13.py b/py_gen/tests/of13.py
index a5845f0..eba9dd9 100644
--- a/py_gen/tests/of13.py
+++ b/py_gen/tests/of13.py
@@ -119,11 +119,6 @@
ofp.message.aggregate_stats_request,
ofp.message.desc_stats_reply,
ofp.message.desc_stats_request,
- ofp.message.flow_add,
- ofp.message.flow_delete,
- ofp.message.flow_delete_strict,
- ofp.message.flow_modify,
- ofp.message.flow_modify_strict,
ofp.message.flow_stats_reply,
ofp.message.flow_stats_request,
ofp.message.group_desc_stats_reply,