[ovs-dev] [PATCH v3 7/8] ofproto-dpif: Restore metadata and registers on recirculation.
Jarno Rajahalme
jrajahalme at nicira.com
Tue Mar 17 22:06:37 UTC 2015
> On Mar 17, 2015, at 2:43 PM, Ben Pfaff <blp at nicira.com> wrote:
>
> On Fri, Mar 13, 2015 at 04:52:00PM -0700, Jarno Rajahalme wrote:
>> xlate_actions() now considers an optional recirculation context (via
>> 'xin') and restores OpenFlow pipeline metadata (registers, 'metadata',
>> etc.) based on it. The recirculation context may contain an action
>> set and stack to be restored and further actions to be executed upon
>> recirculation. It also contains a table_id number to be used for rule
>> lookup in cases where no post-recirculation actions are used.
>>
>> The translation context internal metadata is restored using a new
>> internal action: UNROLL_XLATE action stores the translation context
>> data visible to OpenFlow controllers via PACKET_IN messages. This
>> includes the current table number and the current rule cookie.
>> UNROLL_XLATE actions are inserted only when the remaining actions may
>> generate PACKET_IN messages.
>>
>> These changes allow the post-MPLS recirculation to properly continue
>> with the pipeline metadata that existed at the time of recirculation.
>>
>> The internal table is still consulted for bonds.
>>
>> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
>
> Clang says:
>
> ../ofproto/ofproto-dpif-rid.c:147:29: error: cast from 'const struct ofpact *'
> to 'const uint64_t *' (aka 'const unsigned long long *') increases
> required alignment from 2 to 4 [-Werror,-Wcast-align]
> hash = hash_words64((const uint64_t *)ofpacts,
> ^~~~~~~~~~~~~~~~~~~~~~~~~
This is due to reverting the ofpact alignment patch in master after I sent this series.
I have already fixed this on my source code with an ALIGNED_CAST(const uint64_t *, ofpacts).
Jarno
More information about the dev
mailing list