From: Jesse Gross Date: Mon, 24 Jun 2013 19:21:29 +0000 (-0700) Subject: datapath: Do not clear key in ovs_match_init() X-Git-Tag: v1.11.0~63 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=ce3fbe30ced329c5bd2ee54a0ee46884e4caa788 datapath: Do not clear key in ovs_match_init() When executing packets sent from userspace, the majority of the flow information is extracted from the packet itself and a small amount of metadata supplied by userspace is added. However, when adding this metadata, the extracted flow information is currently being cleared. This manifests in a problem when executing actions as elements of key are used when verifying some actions. For example a dec_ttl action verifies the proto of the flow. An example of a flow that fails as a result of this problem is: ovs-ofctl add-flow br0 "ip actions=dec_ttl,normal" This is a regression added by "datapath: Mega flow implementation", a1c564be1e2ffc31f8da09ab654c8ed987907fe5. CC: Andy Zhou Reported-by: Simon Horman Signed-off-by: Jesse Gross --- diff --git a/datapath/flow.c b/datapath/flow.c index a49084de7..5566f1d83 100644 --- a/datapath/flow.c +++ b/datapath/flow.c @@ -1599,7 +1599,8 @@ int ovs_flow_metadata_from_nlattrs(struct sw_flow *flow, if (err) return -EINVAL; - ovs_match_init(&match, &flow->key, NULL); + memset(&match, 0, sizeof(match)); + match.key = &flow->key; err = metadata_from_nlattrs(&match, &attrs, a, false); if (err)