@@ -402,10 +402,12 @@ class OFPFlow(Flow):
return {
"learn": decode_learn(action_decoders),
"clone": nested_kv_decoder(
- KVDecoders(action_decoders, ignore_case=True), is_list=True
+ KVDecoders(action_decoders, default_free=decode_free_output,
+ ignore_case=True), is_list=True
),
"write_actions": nested_kv_decoder(
- KVDecoders(action_decoders, ignore_case=True), is_list=True
+ KVDecoders(action_decoders, default_free=decode_free_output,
+ ignore_case=True), is_list=True
),
}
@@ -532,6 +532,19 @@ from ovs.flow.decoders import EthMask, IPMask, decode_mask
KeyValue("CONTROLLER", {"max_len": 123}),
],
),
+ (
+ "actions=LOCAL,clone(myport,CONTROLLER)",
+ [
+ KeyValue("output", {"port": "LOCAL"}),
+ KeyValue(
+ "clone",
+ [
+ {"output": {"port": "myport"}},
+ {"output": {"port": "CONTROLLER"}},
+ ]
+ ),
+ ],
+ ),
(
"actions=doesnotexist(1234)",
ParseError,
clone-like actions can also output to ports by specifying the port name. Signed-off-by: Adrian Moreno <amorenoz@redhat.com> --- python/ovs/flow/ofp.py | 6 ++++-- python/ovs/tests/test_ofp.py | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-)