On Thu, Oct 17, 2013 at 02:28:20PM -0700, Jarno Rajahalme wrote:
> This patch gets rid of the need for having explicit padding in struct
> flow as new fields are being added. flow_wildcards_init_exact(), which
> used to set bits in both compiler generated and explicit padding, is
> removed. match_wc_init() is now used instead, which generates the mask
> based on a given flow, setting bits only in fields which make sense.
>
> Places where random bits were placed in struct flow have been changed to
> only set random bits on fields that are significant in the given context.
> This avoids setting padding bits.
>
> - lib/flow:
> - Properly initialize struct flow also in places we used to zero out
> padding before.
> - Add flow_random_hash_fields() used for testing.
> - Remove flow_wildcards_init_exact() to avoid initializing
> masks where compiler generated padding has bits set.
> - lib/match.c match_wc_init(): Wildcard transport layer fields for later
> fragments, remove match_init_exact(), which used
> flow_wildcards_init_exact().
> - tests/test-flows.c: use match_wc_init() instead of match_init_exact()
> - tests/flowgen.pl: generate more accurate packets and flows when
> fragmenting, mark unavailable fields as wildcarded.
>
> Signed-off-by: Jarno Rajahalme <[email protected]>
This is nice, thanks.
One sparse warning:
../lib/flow.c:807:23: warning: restricted __be16 degrades to integer
../lib/flow.c:807:20: warning: incorrect type in assignment (different base
types)
../lib/flow.c:807:20: expected restricted __be16 [usertype] vlan_tci
../lib/flow.c:807:20: got int
which I fixed by adding parentheses here:
flow->vlan_tci = (OVS_FORCE ovs_be16) (random_uint16() & VLAN_VID_MASK);
and applied the result to master.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev