aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-06-18 14:02:12 -0700
committerBen Pfaff <blp@nicira.com>2012-08-03 13:39:23 -0700
commitc4610f3c889f838f051cab4c7fb0c3b5fe715a41 (patch)
treefc6855425d41b4af128ab0bb701c453885fa867b /lib
parent77c988b634c13aaba2d716a7d5d774d5fea9b2f4 (diff)
flow: Correctly consider nw_frag_mask in some flow_wildcards_*() functions.
This probably means that some classifier functions based on the fragment type of packets have never worked properly. Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/flow.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/flow.c b/lib/flow.c
index fa4f5d55..5df8e980 100644
--- a/lib/flow.c
+++ b/lib/flow.c
@@ -726,6 +726,7 @@ flow_wildcards_combine(struct flow_wildcards *dst,
dst->vlan_tci_mask = src1->vlan_tci_mask & src2->vlan_tci_mask;
dst->tp_src_mask = src1->tp_src_mask & src2->tp_src_mask;
dst->tp_dst_mask = src1->tp_dst_mask & src2->tp_dst_mask;
+ dst->nw_frag_mask = src1->nw_frag_mask & src2->nw_frag_mask;
}
/* Returns a hash of the wildcards in 'wc'. */
@@ -758,7 +759,8 @@ flow_wildcards_equal(const struct flow_wildcards *a,
|| !ipv6_addr_equals(&a->ipv6_dst_mask, &b->ipv6_dst_mask)
|| !ipv6_addr_equals(&a->nd_target_mask, &b->nd_target_mask)
|| a->tp_src_mask != b->tp_src_mask
- || a->tp_dst_mask != b->tp_dst_mask) {
+ || a->tp_dst_mask != b->tp_dst_mask
+ || a->nw_frag_mask != b->nw_frag_mask) {
return false;
}
@@ -809,7 +811,8 @@ flow_wildcards_has_extra(const struct flow_wildcards *a,
|| (a->nw_dst_mask & b->nw_dst_mask) != b->nw_dst_mask
|| (a->vlan_tci_mask & b->vlan_tci_mask) != b->vlan_tci_mask
|| (a->tp_src_mask & b->tp_src_mask) != b->tp_src_mask
- || (a->tp_dst_mask & b->tp_dst_mask) != b->tp_dst_mask);
+ || (a->tp_dst_mask & b->tp_dst_mask) != b->tp_dst_mask
+ || (a->nw_frag_mask & b->nw_frag_mask) != b->nw_frag_mask);
}
/* Sets the wildcard mask for register 'idx' in 'wc' to 'mask'.