@@ -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:
@@ -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,
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(-)