On Fri, Oct 30, 2020 at 3:13 AM Dumitru Ceara <dce...@redhat.com> wrote: > > On 10/27/20 6:19 PM, num...@ovn.org wrote: > > From: Numan Siddique <num...@ovn.org> > > > > Signed-off-by: Numan Siddique <num...@ovn.org> > > --- > > utilities/ovn-sbctl.c | 55 +++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 55 insertions(+) > > > > diff --git a/utilities/ovn-sbctl.c b/utilities/ovn-sbctl.c > > index 00c112c7e5..5b593b38cb 100644 > > --- a/utilities/ovn-sbctl.c > > +++ b/utilities/ovn-sbctl.c > > @@ -542,6 +542,11 @@ pre_get_info(struct ctl_context *ctx) > > ovsdb_idl_add_column(ctx->idl, &sbrec_mac_binding_col_logical_port); > > ovsdb_idl_add_column(ctx->idl, &sbrec_mac_binding_col_ip); > > ovsdb_idl_add_column(ctx->idl, &sbrec_mac_binding_col_mac); > > + > > + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_datapaths); > > + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_vips); > > + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_name); > > + ovsdb_idl_add_column(ctx->idl, &sbrec_load_balancer_col_protocol); > > } > > > > static struct cmd_show_table cmd_show_tables[] = { > > @@ -1009,6 +1014,55 @@ cmd_lflow_list_chassis(struct ctl_context *ctx, > > struct vconn *vconn, > > } > > } > > > > +static void > > +cmd_lflow_list_load_balancers(struct ctl_context *ctx, struct vconn *vconn, > > + const struct sbrec_datapath_binding > > *datapath, > > + bool stats, bool print_uuid) > > +{ > > + const struct sbrec_load_balancer *lb; > > + const struct sbrec_load_balancer *lb_prev = NULL; > > + SBREC_LOAD_BALANCER_FOR_EACH (lb, ctx->idl) { > > + bool dp_found = false; > > + if (datapath) { > > + for (size_t i = 0; i < lb->n_datapaths; i++) { > > + if (datapath == lb->datapaths[i]) { > > + dp_found = true; > > + break; > > + } > > + } > > + if (datapath && !dp_found) { > > 'datapath' is always 'true' here. > Ack.
> Nit: we could avoid 'dp_found' by checking 'i == lb->n_datapaths'. Please see below > > > + continue; > > + } > > + } > > + > > + if (!lb_prev) { > > + printf("\nLoad Balancers:\n"); > > + } > > + > > + printf(" "); > > + print_uuid_part(&lb->header_.uuid, print_uuid); > > + printf("name=\"%s\", protocol=\"%s\", ", lb->name, lb->protocol); > > + if (!dp_found) { > > + for (size_t i = 0; i < lb->n_datapaths; i++) { > > + print_vflow_datapath_name(lb->datapaths[i], true); > > + } > > + } > > Here we print the SB LB record information. If the LB refers multiple > datapaths we should not filter them out regardless of the 'datapath' argument > value. > I think it's better to filter out since we want to show flows related to the specified datapath. Thanks Numan > Thanks, > Dumitru > > > + > > + printf("\n vips:\n"); > > + struct smap_node *node; > > + SMAP_FOR_EACH (node, &lb->vips) { > > + printf(" %s = %s\n", node->key, node->value); > > + } > > + printf("\n"); > > + > > + if (vconn) { > > + sbctl_dump_openflow(vconn, &lb->header_.uuid, stats); > > + } > > + > > + lb_prev = lb; > > + } > > +} > > + > > static void > > cmd_lflow_list(struct ctl_context *ctx) > > { > > @@ -1118,6 +1172,7 @@ cmd_lflow_list(struct ctl_context *ctx) > > cmd_lflow_list_mac_bindings(ctx, vconn, datapath, stats, > > print_uuid); > > cmd_lflow_list_mc_groups(ctx, vconn, datapath, stats, print_uuid); > > cmd_lflow_list_chassis(ctx, vconn, stats, print_uuid); > > + cmd_lflow_list_load_balancers(ctx, vconn, datapath, stats, > > print_uuid); > > } > > > > vconn_close(vconn); > > > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev