DPDK flows can have this extra section that, for now, only has one
possible key (miniflow_bits). Add it to the ODPFlow flow.

Signed-off-by: Adrian Moreno <amore...@redhat.com>
---
 python/ovs/flow/odp.py | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/python/ovs/flow/odp.py b/python/ovs/flow/odp.py
index a8f8c067a..d5faff03e 100644
--- a/python/ovs/flow/odp.py
+++ b/python/ovs/flow/odp.py
@@ -119,7 +119,15 @@ class ODPFlow(Flow):
         ]
 
         action_pos += 8  # len("actions:")
-        actions = odp_string[action_pos:]
+
+        dp_extra_pos = odp_string[action_pos:].find("dp-extra-info")
+        if dp_extra_pos > 0:
+            dp_extra_pos += action_pos
+            actions = odp_string[action_pos : dp_extra_pos]
+            dp_extra_pos += 14  # len("dp-extra-info:")
+            dp_extra = odp_string[dp_extra_pos :]
+        else:
+            actions = odp_string[action_pos:]
 
         field_parts = rest.lstrip(" ").partition(" ")
 
@@ -160,6 +168,19 @@ class ODPFlow(Flow):
         )
         sections.append(asection)
 
+        if dp_extra_pos > 0:
+            dparser = KVParser(
+                dp_extra, KVDecoders({"miniflow_bits": decode_default})
+            )
+            dparser.parse()
+            dsection = Section(
+                name="dp_extra_info",
+                pos=dp_extra_pos,
+                string=dp_extra,
+                data=dparser.kv(),
+            )
+            sections.append(dsection)
+
         super(ODPFlow, self).__init__(sections, odp_string, id)
 
     def __str__(self):
-- 
2.45.2

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to