diff mbox series

[ovs-dev,v1,07/11] python: fix output=CONTROLLER action

Message ID 20221123100303.323460-7-amorenoz@redhat.com
State Superseded
Headers show
Series [ovs-dev,v1,01/11] python: fix datapath flow decoders | expand

Checks

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

Commit Message

Adrian Moreno Nov. 23, 2022, 10:02 a.m. UTC
When CONTROLLER is used as free key, it means output=CONTROLLER which is
handled by decode_controller. However, it must output the KV in the
right format: "output": {"format": "CONTROLLER"}.

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
---
 python/ovs/flow/ofp_act.py   |  2 +-
 python/ovs/tests/test_ofp.py | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/python/ovs/flow/ofp_act.py b/python/ovs/flow/ofp_act.py
index 5eaf0b218..c540443ea 100644
--- a/python/ovs/flow/ofp_act.py
+++ b/python/ovs/flow/ofp_act.py
@@ -35,7 +35,7 @@  def decode_output(value):
 def decode_controller(value):
     """Decodes the controller action."""
     if not value:
-        return KeyValue("output", "controller")
+        return KeyValue("output", {"port": "CONTROLLER"})
     else:
         # Try controller:max_len
         try:
diff --git a/python/ovs/tests/test_ofp.py b/python/ovs/tests/test_ofp.py
index 5aa8d591b..e17188e2b 100644
--- a/python/ovs/tests/test_ofp.py
+++ b/python/ovs/tests/test_ofp.py
@@ -22,7 +22,7 @@  from ovs.flow.decoders import EthMask, IPMask, decode_mask
         (
             "actions=controller,controller:200",
             [
-                KeyValue("output", "controller"),
+                KeyValue("output", {"port": "CONTROLLER"}),
                 KeyValue("controller", {"max_len": 200}),
             ],
         ),
@@ -524,6 +524,14 @@  from ovs.flow.decoders import EthMask, IPMask, decode_mask
                 ),
             ],
         ),
+        (
+            "actions=MOD_NW_SRC:192.168.1.1,CONTROLLER,CONTROLLER:123",
+            [
+                KeyValue("MOD_NW_SRC", netaddr.IPAddress("192.168.1.1")),
+                KeyValue("output", {"port": "CONTROLLER"}),
+                KeyValue("CONTROLLER", {"max_len": 123}),
+            ],
+        ),
         (
             "actions=doesnotexist(1234)",
             ParseError,