From 542fdad701403c11cfe8356957f934fa657c1742 Mon Sep 17 00:00:00 2001 From: Adrian Moreno Date: Mon, 19 Dec 2022 17:13:48 +0100 Subject: python: Fix output=CONTROLLER action. 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 Signed-off-by: Ilya Maximets --- python/ovs/flow/ofp_act.py | 2 +- python/ovs/tests/test_ofp.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'python') 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, -- cgit v1.2.1