diff mbox series

[ovs-dev,v6,01/13] python: ovs: flow: Support dp-extra-info section.

Message ID 20240925105218.671800-2-amorenoz@redhat.com
State New
Delegated to: Ilya Maximets
Headers show
Series Add flow visualization utility. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed

Commit Message

Adrian Moreno Sept. 25, 2024, 10:52 a.m. UTC
DPDK flows can have this extra section that, for now, only has one
possible key (miniflow_bits). Add it to the ODPFlow flow.

Acked-by: Eelco Chaudron <echaudro@redhat.com>
Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
---
 python/ovs/flow/odp.py | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/python/ovs/flow/odp.py b/python/ovs/flow/odp.py
index 572dbebe9..fb1684680 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):