recirculation: Map recirc_id to ofproto_dpif.
authorAlex Wang <alexw@nicira.com>
Wed, 17 Dec 2014 02:47:27 +0000 (18:47 -0800)
committerAlex Wang <alexw@nicira.com>
Tue, 23 Dec 2014 19:03:45 +0000 (11:03 -0800)
commit4ec2ffe905e266ed27c16294668b8162ec5f29dc
tree7df582103d8a9656d25aa025b8b8aaabe0cdecff
parentd91b1e0e53c09826b63e7c06ca5df0749ebd40fa
recirculation: Map recirc_id to ofproto_dpif.

After commit 0c7812e5e (recirculation: Do not drop packet when
there is no match from internal table.), if flow keys are modified
before the recirculation action (e.g. set vlan ID), the miss
handling of recirc'ed packets may not reach the intended
'ofproto_dpif' which has rules looking up the 'recirc_id's,
causing drops.

This commit adds an unittest that captures this bug.  Moreover,
to solve this bug, this commit checks mapping between 'recirc_id'
and the corresponding 'ofproto_dpif', and makes sure that the
miss handling of recirc'ed packets are done with the correct
'ofproto_dpif'.

Signed-off-by: Alex Wang <alexw@nicira.com>
Acked-by: Andy Zhou <azhou@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
ofproto/ofproto-dpif-xlate.c
ofproto/ofproto-dpif.c
ofproto/ofproto-dpif.h
tests/ofproto-dpif.at