On Mon, Mar 30, 2015 at 03:46:28PM -0700, Alex Wang wrote:
> This commit adds functions that check if the 'struct flow_wildcards'
> member is fully masked (exact-match) or fully unmasked (don't care
> the entire field at all). Also, this commit adds a function to
> shape a less-masked flow field by a more-masked flow field.
>
> Signed-off-by: Alex Wang <[email protected]>
I don't understand the meaning of "shape", in the comment on
flow_apply_field().
I have some suggestions as an incremental diff:
diff --git a/lib/flow.c b/lib/flow.c
index e91b107..1e5fc20 100644
--- a/lib/flow.c
+++ b/lib/flow.c
@@ -912,9 +912,9 @@ flow_apply_field(void *dst_field, void *dst_wc, const void
*src_field,
uint8_t *dw = dst_wc;
size_t i;
- for (i = 0; i < size ; i++) {
- df[i] = sf[i] | df[i];
- dw[i] = sw[i] | dw[i];
+ for (i = 0; i < size; i++) {
+ df[i] |= sf[i];
+ dw[i] |= sw[i];
}
}
@@ -925,11 +925,7 @@ flow_apply_field(void *dst_field, void *dst_wc, const void
*src_field,
bool
flow_wildcard_is_fully_masked(void *field, size_t len)
{
- char cmp[len];
-
- memset(cmp, 0xff, len);
-
- return !memcmp(field, cmp, len);
+ return is_all_ones(field, len);
}
/* Returns true if the 'field' of 'len' byte long is
@@ -937,11 +933,7 @@ flow_wildcard_is_fully_masked(void *field, size_t len)
bool
flow_wildcard_is_fully_unmasked(void *field, size_t len)
{
- char cmp[len];
-
- memset(cmp, 0, len);
-
- return !memcmp(field, cmp, len);
+ return is_all_zeros(field, len);
}
/* Initializes 'wc' as a set of wildcards that matches every packet. */
Acked-by: Ben Pfaff <[email protected]>
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev