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