@@ -127,6 +127,7 @@ void match_set_pkt_mark_masked(struct match *, uint32_t pkt_mark, uint32_t mask)
void match_set_ct_state(struct match *, uint32_t ct_state);
void match_set_ct_state_masked(struct match *, uint32_t ct_state, uint32_t mask);
void match_set_ct_zone(struct match *, uint16_t ct_zone);
+void match_set_ct_zone_masked(struct match *match, uint16_t ct_zone, uint16_t mask);
void match_set_ct_mark(struct match *, uint32_t ct_mark);
void match_set_ct_mark_masked(struct match *, uint32_t ct_mark, uint32_t mask);
void match_set_ct_label(struct match *, ovs_u128 ct_label);
@@ -417,8 +417,14 @@ match_set_ct_state_masked(struct match *match, uint32_t ct_state, uint32_t mask)
void
match_set_ct_zone(struct match *match, uint16_t ct_zone)
{
- match->flow.ct_zone = ct_zone;
- match->wc.masks.ct_zone = UINT16_MAX;
+ match_set_ct_zone_masked(match, ct_zone, UINT16_MAX);
+}
+
+void
+match_set_ct_zone_masked(struct match *match, uint16_t ct_zone, uint16_t mask)
+{
+ match->flow.ct_zone = ct_zone & mask;
+ match->wc.masks.ct_zone = mask;
}
void
Sets zone in match. Signed-off-by: Paul Blakey <paulb@mellanox.com> --- include/openvswitch/match.h | 1 + lib/match.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-)