diff options
author | Ben Pfaff <blp@nicira.com> | 2012-06-18 14:02:12 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2012-08-03 13:39:23 -0700 |
commit | c4610f3c889f838f051cab4c7fb0c3b5fe715a41 (patch) | |
tree | fc6855425d41b4af128ab0bb701c453885fa867b /lib | |
parent | 77c988b634c13aaba2d716a7d5d774d5fea9b2f4 (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.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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'. |