ofproto-dpif-upcall: Fix UFID usage with flow_modify.
authorJoe Stringer <joe@ovn.org>
Fri, 13 May 2016 21:17:12 +0000 (14:17 -0700)
committerJoe Stringer <joe@ovn.org>
Tue, 17 May 2016 18:00:51 +0000 (11:00 -0700)
As per the delete_op_init{,__}() functions, the UFID should only be
passed down if ukey->ufid_present is set. Otherwise it is possible to
request a flow modification only using a UFID in a datapath that doesn't
support UFID, which will fail.

Fixes: 43b2f131a229 ("ofproto: Allow in-place modifications of datapath flows.")
Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
ofproto/ofproto-dpif-upcall.c

index 0543c78..56f88c7 100644 (file)
@@ -1930,7 +1930,7 @@ modify_op_init(struct ukey_op *op, struct udpif_key *ukey)
     op->dop.u.flow_put.key_len = ukey->key_len;
     op->dop.u.flow_put.mask = ukey->mask;
     op->dop.u.flow_put.mask_len = ukey->mask_len;
-    op->dop.u.flow_put.ufid = &ukey->ufid;
+    op->dop.u.flow_put.ufid = ukey->ufid_present ? &ukey->ufid : NULL;
     op->dop.u.flow_put.pmd_id = ukey->pmd_id;
     op->dop.u.flow_put.stats = NULL;
     ukey_get_actions(ukey, &op->dop.u.flow_put.actions,