[ovs-dev,branch-2.7,25/25] lib: Indicate if netlink message had labels.

Submitted by Jarno Rajahalme on March 15, 2017, 11:31 p.m.

Details

Message ID 1489620689-122370-26-git-send-email-jarno@ovn.org
State New
Headers show

Commit Message

Jarno Rajahalme March 15, 2017, 11:31 p.m.
Conntrack update events include labels only if they have changed.
Record the presence of labels in the netlink message to OVS internal
representation, so that the user may keep the old labels when an
update does not modify them.

Fixes: 6830a0c0e6bf ("netlink-conntrack: New module.")
Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
Acked-by: Joe Stringer <joe@ovn.org>
---
 lib/ct-dpif.h           | 1 +
 lib/netlink-conntrack.c | 1 +
 2 files changed, 2 insertions(+)

Patch hide | download patch | download mbox

diff --git a/lib/ct-dpif.h b/lib/ct-dpif.h
index 5da3c2c..e8e159a 100644
--- a/lib/ct-dpif.h
+++ b/lib/ct-dpif.h
@@ -163,6 +163,7 @@  struct ct_dpif_entry {
     struct ct_dpif_protoinfo protoinfo;
 
     ovs_u128 labels;
+    bool have_labels;
     uint32_t status;
     /* Timeout for this entry in seconds */
     uint32_t timeout;
diff --git a/lib/netlink-conntrack.c b/lib/netlink-conntrack.c
index aab5b1f..8b82db2 100644
--- a/lib/netlink-conntrack.c
+++ b/lib/netlink-conntrack.c
@@ -780,6 +780,7 @@  nl_ct_attrs_to_ct_dpif_entry(struct ct_dpif_entry *entry,
         entry->mark = ntohl(nl_attr_get_be32(attrs[CTA_MARK]));
     }
     if (attrs[CTA_LABELS]) {
+        entry->have_labels = true;
         memcpy(&entry->labels, nl_attr_get(attrs[CTA_LABELS]),
                MIN(sizeof entry->labels, nl_attr_get_size(attrs[CTA_LABELS])));
     }