ofproto-dpif-xlate: Tidy up ct_mark xlate code.
authorJoe Stringer <joe@ovn.org>
Fri, 15 Apr 2016 18:36:05 +0000 (11:36 -0700)
committerJoe Stringer <joe@ovn.org>
Fri, 22 Apr 2016 21:30:40 +0000 (14:30 -0700)
Make the ct_mark netlink serialization more consistent with the way that
ct_label is serialized.

Signed-off-by: Joe Stringer <joe@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
ofproto/ofproto-dpif-xlate.c

index 2d0d769..7a201bd 100644 (file)
@@ -4285,17 +4285,16 @@ static void
 put_ct_mark(const struct flow *flow, struct ofpbuf *odp_actions,
             struct flow_wildcards *wc)
 {
-    struct {
-        uint32_t key;
-        uint32_t mask;
-    } odp_attr;
-
-    odp_attr.key = flow->ct_mark & wc->masks.ct_mark;
-    odp_attr.mask = wc->masks.ct_mark;
-
-    if (odp_attr.mask) {
-        nl_msg_put_unspec(odp_actions, OVS_CT_ATTR_MARK, &odp_attr,
-                          sizeof(odp_attr));
+    if (wc->masks.ct_mark) {
+        struct {
+            uint32_t key;
+            uint32_t mask;
+        } *odp_ct_mark;
+
+        odp_ct_mark = nl_msg_put_unspec_uninit(odp_actions, OVS_CT_ATTR_MARK,
+                                               sizeof(*odp_ct_mark));
+        odp_ct_mark->key = flow->ct_mark & wc->masks.ct_mark;
+        odp_ct_mark->mask = wc->masks.ct_mark;
     }
 }