Merge branch 'mainstream'
[sliver-openvswitch.git] / datapath / flow.c
index 45b85ab..752c8d6 100644 (file)
@@ -349,9 +349,8 @@ static bool icmp6hdr_ok(struct sk_buff *skb)
                                  sizeof(struct icmp6hdr));
 }
 
-static void flow_key_mask(struct sw_flow_key *dst,
-                         const struct sw_flow_key *src,
-                         const struct sw_flow_mask *mask)
+void ovs_flow_key_mask(struct sw_flow_key *dst, const struct sw_flow_key *src,
+                      const struct sw_flow_mask *mask)
 {
        u8 *m = (u8 *)&mask->key + mask->range.start;
        u8 *s = (u8 *)src + mask->range.start;
@@ -1045,7 +1044,7 @@ static struct sw_flow *ovs_masked_flow_lookup(struct flow_table *table,
        u32 hash;
        struct sw_flow_key masked_key;
 
-       flow_key_mask(&masked_key, flow_key, mask);
+       ovs_flow_key_mask(&masked_key, flow_key, mask);
        hash = ovs_flow_hash(&masked_key, key_start, key_len);
        head = find_bucket(table, hash);
        hlist_for_each_entry_rcu(flow, head, hash_node[table->node_ver]) {
@@ -1071,11 +1070,8 @@ struct sw_flow *ovs_flow_lookup(struct flow_table *tbl,
 }
 
 
-void ovs_flow_insert(struct flow_table *table, struct sw_flow *flow,
-                        const struct sw_flow_key *key, int key_len)
+void ovs_flow_insert(struct flow_table *table, struct sw_flow *flow)
 {
-       flow->unmasked_key = *key;
-       flow_key_mask(&flow->key, &flow->unmasked_key, ovsl_dereference(flow->mask));
        flow->hash = ovs_flow_hash(&flow->key,
                        ovsl_dereference(flow->mask)->range.start,
                        ovsl_dereference(flow->mask)->range.end);
@@ -1260,7 +1256,7 @@ int ipv4_tun_from_nlattr(const struct nlattr *attr,
        }
 
        if (!ttl) {
-               OVS_NLERR("IPv4 tunnel TTL is zero.\n");
+               OVS_NLERR("IPv4 tunnel TTL not specified.\n");
                return -EINVAL;
        }
 
@@ -1289,8 +1285,7 @@ int ipv4_tun_to_nlattr(struct sk_buff *skb,
        if (output->ipv4_tos &&
                nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TOS, output->ipv4_tos))
                return -EMSGSIZE;
-       if (output->ipv4_ttl &&
-               nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TTL, output->ipv4_ttl))
+       if (nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TTL, output->ipv4_ttl))
                return -EMSGSIZE;
        if ((output->tun_flags & TUNNEL_DONT_FRAGMENT) &&
                nla_put_flag(skb, OVS_TUNNEL_KEY_ATTR_DONT_FRAGMENT))