openvswitch: Fix mask generation for nested attributes.
authorJesse Gross <jesse@nicira.com>
Sat, 12 Sep 2015 01:38:28 +0000 (18:38 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Sep 2015 23:25:41 +0000 (16:25 -0700)
commit982b527004826b40de1e821b123c70f05b41496c
tree7c706b19116441b2aaeb4e6fa1737464b16f4d18
parent892aa01df2ad67237f213c8f9d9b491e908aa910
openvswitch: Fix mask generation for nested attributes.

Masks were added to OVS flows in a way that was backwards compatible
with userspace programs that did not generate masks. As a result, it is
possible that we may receive flows that do not have a mask and we need
to synthesize one.

Generating a mask requires iterating over attributes and descending into
nested attributes. For each level we need to know the size to generate the
correct mask. We do this with a linked table of attribute types.

Although the logic to handle these nested attributes was there in concept,
there are a number of bugs in practice. Examples include incomplete links
between tables, variable length attributes being treated as nested and
missing sanity checks.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/flow_netlink.c