Correct number of bytes to allocated for slaves in bundle action.
authorMehak Mahajan <mmahajan@nicira.com>
Wed, 15 Aug 2012 18:19:35 +0000 (11:19 -0700)
committerMehak Mahajan <mmahajan@nicira.com>
Wed, 15 Aug 2012 18:19:35 +0000 (11:19 -0700)
The size of each slave is a uint16_t.  This means that each slave needs 2 bytes
at the end of nx_action_bundle.  Earlier, the size of each slave was not being
factored in when allocating space.  This commit corrects that by allocating 2
bytes for each slave when calculating the total number of bytes to be allocated
at the end of nx_action_bundle.

Signed-off-by: Mehak Mahajan <mmahajan@nicira.com>
lib/bundle.c

index c6b1f75eb8070dbecd136e61838cf900d3b748f6..e0f8e6b6c2e864dafa900080a8e3ed267ddfd861 100644 (file)
@@ -217,7 +217,7 @@ bundle_check(const struct ofpact_bundle *bundle, int max_ports,
 void
 bundle_to_nxast(const struct ofpact_bundle *bundle, struct ofpbuf *openflow)
 {
-    int slaves_len = ROUND_UP(bundle->n_slaves, OFP_ACTION_ALIGN);
+    int slaves_len = ROUND_UP(2 * bundle->n_slaves, OFP_ACTION_ALIGN);
     struct nx_action_bundle *nab;
     ovs_be16 *slaves;
     size_t i;