On Wed, Jun 29, 2022 at 3:06 PM Mark Michelson <[email protected]> wrote: > > Wow, nice improvement, Ihar! > > Acked-by: Mark Michelson <[email protected]>
Thanks. I applied this patch to the main branch. Numan > > 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 > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
