ofp-actions: Return action size
authorSimon Horman <horms@verge.net.au>
Tue, 7 Aug 2012 21:49:41 +0000 (06:49 +0900)
committerBen Pfaff <blp@nicira.com>
Wed, 8 Aug 2012 23:27:09 +0000 (16:27 -0700)
Modify ofpacts_put_openflow11_actions() to return the length of actions
appended. This will be used when encoding Packet Out messages for
Open Flow 1.1 and 1.2. The motivation for this is to avoid open coding
the size calculation which may end up being needed elsewhere too.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/ofp-actions.c
lib/ofp-actions.h

index 0874cc46ac6fed714c03dead65a4d80cc3bdda97..11642d1e1e6b1dda643a961b8f9d5c7c0831e720 100644 (file)
@@ -1384,15 +1384,18 @@ ofpact_to_openflow11(const struct ofpact *a, struct ofpbuf *out)
 /* Converts the ofpacts in 'ofpacts' (terminated by OFPACT_END) into OpenFlow
  * 1.1 actions in 'openflow', appending the actions to any existing data in
  * 'openflow'. */
-void
+size_t
 ofpacts_put_openflow11_actions(const struct ofpact ofpacts[],
                                size_t ofpacts_len, struct ofpbuf *openflow)
 {
     const struct ofpact *a;
+    size_t start_size = openflow->size;
 
     OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
         ofpact_to_openflow11(a, openflow);
     }
+
+    return openflow->size - start_size;
 }
 
 void
index 7c9cb055f7bdb5ff742cb304ce9538a53037f9a3..d5497a821a10d51213785c5a618c44adf6eb5bd0 100644 (file)
@@ -396,8 +396,8 @@ enum ofperr ofpacts_check(const struct ofpact[], size_t ofpacts_len,
 /* Converting ofpacts to OpenFlow. */
 void ofpacts_put_openflow10(const struct ofpact[], size_t ofpacts_len,
                             struct ofpbuf *openflow);
-void ofpacts_put_openflow11_actions(const struct ofpact[], size_t ofpacts_len,
-                                    struct ofpbuf *openflow);
+size_t ofpacts_put_openflow11_actions(const struct ofpact[], size_t ofpacts_len,
+                                      struct ofpbuf *openflow);
 void ofpacts_put_openflow11_instructions(const struct ofpact[],
                                          size_t ofpacts_len,
                                          struct ofpbuf *openflow);