openvswitch: avoid resetting flow key while installing new flow.
[cascardo/linux.git] / net / openvswitch / datapath.c
index 474e7a6..4d67ea8 100644 (file)
@@ -955,7 +955,7 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
        }
 
        /* Extract key. */
-       ovs_match_init(&match, &new_flow->key, &mask);
+       ovs_match_init(&match, &new_flow->key, false, &mask);
        error = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY],
                                  a[OVS_FLOW_ATTR_MASK], log);
        if (error)
@@ -1124,7 +1124,7 @@ static int ovs_flow_cmd_set(struct sk_buff *skb, struct genl_info *info)
 
        ufid_present = ovs_nla_get_ufid(&sfid, a[OVS_FLOW_ATTR_UFID], log);
        if (a[OVS_FLOW_ATTR_KEY]) {
-               ovs_match_init(&match, &key, &mask);
+               ovs_match_init(&match, &key, true, &mask);
                error = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY],
                                          a[OVS_FLOW_ATTR_MASK], log);
        } else if (!ufid_present) {
@@ -1241,7 +1241,7 @@ static int ovs_flow_cmd_get(struct sk_buff *skb, struct genl_info *info)
 
        ufid_present = ovs_nla_get_ufid(&ufid, a[OVS_FLOW_ATTR_UFID], log);
        if (a[OVS_FLOW_ATTR_KEY]) {
-               ovs_match_init(&match, &key, NULL);
+               ovs_match_init(&match, &key, true, NULL);
                err = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY], NULL,
                                        log);
        } else if (!ufid_present) {
@@ -1300,7 +1300,7 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
 
        ufid_present = ovs_nla_get_ufid(&ufid, a[OVS_FLOW_ATTR_UFID], log);
        if (a[OVS_FLOW_ATTR_KEY]) {
-               ovs_match_init(&match, &key, NULL);
+               ovs_match_init(&match, &key, true, NULL);
                err = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY],
                                        NULL, log);
                if (unlikely(err))