secchan: Avoid dynamic allocation in xlate_actions().
authorBen Pfaff <blp@nicira.com>
Tue, 17 Mar 2009 17:26:47 +0000 (10:26 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 17 Mar 2009 17:26:47 +0000 (10:26 -0700)
commitb3cb2fbdf99cd9ad8f0bc44ff86cbc5b1ea81578
treebc6476156c5a4628dd353c0faee290fbb3a9b3b0
parentd90c128a8101edfa9cbb2477a4bc7f5af8ef1a4c
secchan: Avoid dynamic allocation in xlate_actions().

The ofproto code currently does malloc()/realloc()/free() whenever it needs
to translate OpenFlow actions into datapath actions.  This is more or less
OK as-is, but the next commits will start keeping the datapath actions as
part of the rule.  That will require either wasting memory (because we
e.g. double the size of the malloc()'d buffer each realloc()) or making
a new malloc()'d copy of already malloc()'d memory.  Both solutions seem
wasteful.

So this commit instead prepares by keeping the ODP actions on-stack while
accumulating them, with a fixed maximum size that is the same maximum
used by the kernel datapath anyhow.
include/openflow/openflow.h
lib/odp-util.c
lib/odp-util.h
secchan/ofproto.c