Wow, nice improvement, Ihar!

Acked-by: Mark Michelson <[email protected]>

On 6/29/22 12:47, Ihar Hrachyshka wrote:
Signed-off-by: Ihar Hrachyshka <[email protected]>
---
  controller/binding.c | 63 +++++---------------------------------------
  1 file changed, 6 insertions(+), 57 deletions(-)

diff --git a/controller/binding.c b/controller/binding.c
index 2279570f9..3beafdb0d 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -938,39 +938,17 @@ update_port_encap_if_needed(const struct 
sbrec_port_binding *pb,
      return true;
  }
-static void
-append_additional_encap(const struct sbrec_port_binding *pb,
-                        const struct sbrec_encap *encap)
-{
-    struct sbrec_encap **additional_encap = xmalloc(
-        (pb->n_additional_encap + 1) * (sizeof *additional_encap));
-    if (pb->n_additional_encap) {
-        memcpy(additional_encap, pb->additional_encap,
-               pb->n_additional_encap * (sizeof *additional_encap));
-    }
-    additional_encap[pb->n_additional_encap] = (struct sbrec_encap *) encap;
-    sbrec_port_binding_set_additional_encap(
-        pb, additional_encap, pb->n_additional_encap + 1);
-    free(additional_encap);
-}
-
  static void
  remove_additional_encap_for_chassis(const struct sbrec_port_binding *pb,
                                      const struct sbrec_chassis *chassis_rec)
  {
-    struct sbrec_encap **additional_encap = xmalloc(
-        pb->n_additional_encap * (sizeof *additional_encap));
-
-    size_t idx = 0;
      for (size_t i = 0; i < pb->n_additional_encap; i++) {
          if (!strcmp(pb->additional_encap[i]->chassis_name,
                      chassis_rec->name)) {
-            continue;
+            sbrec_port_binding_update_additional_encap_delvalue(
+                pb, pb->additional_encap[i]);
          }
-        additional_encap[idx++] = pb->additional_encap[i];
      }
-    sbrec_port_binding_set_additional_encap(pb, additional_encap, idx);
-    free(additional_encap);
  }
static bool
@@ -991,7 +969,7 @@ update_port_additional_encap_if_needed(
          if (sb_readonly) {
              return false;
          }
-        append_additional_encap(pb, encap_rec);
+        sbrec_port_binding_update_additional_encap_addvalue(pb, encap_rec);
      }
      return true;
  }
@@ -1008,40 +986,11 @@ is_additional_chassis(const struct sbrec_port_binding 
*pb,
      return false;
  }
-static void
-append_additional_chassis(const struct sbrec_port_binding *pb,
-                          const struct sbrec_chassis *chassis_rec)
-{
-    struct sbrec_chassis **additional_chassis = xmalloc(
-        (pb->n_additional_chassis + 1) * (sizeof *additional_chassis));
-    if (pb->n_additional_chassis) {
-        memcpy(additional_chassis, pb->additional_chassis,
-               pb->n_additional_chassis * (sizeof *additional_chassis));
-    }
-    additional_chassis[pb->n_additional_chassis] = (
-        (struct sbrec_chassis *) chassis_rec);
-    sbrec_port_binding_set_additional_chassis(
-        pb, additional_chassis, pb->n_additional_chassis + 1);
-    free(additional_chassis);
-}
-
  static void
  remove_additional_chassis(const struct sbrec_port_binding *pb,
                            const struct sbrec_chassis *chassis_rec)
  {
-    struct sbrec_chassis **additional_chassis = xmalloc(
-        (pb->n_additional_chassis - 1) * (sizeof *additional_chassis));
-    size_t idx = 0;
-    for (size_t i = 0; i < pb->n_additional_chassis; i++) {
-        if (pb->additional_chassis[i] == chassis_rec) {
-            continue;
-        }
-        additional_chassis[idx++] = pb->additional_chassis[i];
-    }
-    sbrec_port_binding_set_additional_chassis(
-        pb, additional_chassis, pb->n_additional_chassis - 1);
-    free(additional_chassis);
-
+    sbrec_port_binding_update_additional_chassis_delvalue(pb, chassis_rec);
      remove_additional_encap_for_chassis(pb, chassis_rec);
  }
@@ -1100,7 +1049,8 @@ claim_lport(const struct sbrec_port_binding *pb,
                  VLOG_INFO("%s: Claiming %s", pb->logical_port, pb->mac[i]);
              }
- append_additional_chassis(pb, chassis_rec);
+            sbrec_port_binding_update_additional_chassis_addvalue(pb,
+                                                                  chassis_rec);
              if (pb->chassis == chassis_rec) {
                  sbrec_port_binding_set_chassis(pb, NULL);
              }
@@ -1901,7 +1851,6 @@ binding_cleanup(struct ovsdb_idl_txn *ovnsb_idl_txn,
              any_changes = true;
          }
          if (is_additional_chassis(binding_rec, chassis_rec)) {
-            remove_additional_encap_for_chassis(binding_rec, chassis_rec);
              remove_additional_chassis(binding_rec, chassis_rec);
              any_changes = true;
          }


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to