ofproto-dpif: Avoid zeroing tunnel info in handle_miss_upcalls().
authorBen Pfaff <blp@nicira.com>
Thu, 4 Oct 2012 22:11:39 +0000 (15:11 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 4 Oct 2012 23:57:54 +0000 (16:57 -0700)
commit1d446463ea3707ee609ea45f0cd2714aa7f5bfc6
treefeb9b38c6f6c23dcebca0f39e3cb7d975c846fbc
parente879d33e8398219d5c9af8fd565c97303f126809
ofproto-dpif: Avoid zeroing tunnel info in handle_miss_upcalls().

Commit 296e07ace0f (flow: Extend struct flow to contain tunnel outer
header.) changed the tunnel ID parameter of flow_extract() from an integer
passed by value to a structure passed by pointer.  Before flow_extract()
reads the tunnel ID, it zeros the entire flow parameter.  This means that,
if a caller passes the address of the tunnel member of the flow as the
tunnel ID, then flow_extract() zeros the tunnel data before it reads and
copies the tunnel data (that it just zeroed).  The result is that the
tunnel data is ignored.

This commit fixes the problem by making the caller that did this use a
separate flow structure instead of trying to be clever.

Bug #13461.
CC: Pankaj Thakkar <thakkar@nicira.com>
Reported-by: Michael Hu <mhu@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/flow.c
ofproto/ofproto-dpif.c