On Fri, Oct 30, 2020 at 3:13 AM Dumitru Ceara <[email protected]> wrote:
>
> On 10/27/20 6:19 PM, [email protected] wrote:
> > From: Numan Siddique <[email protected]>
> >
> > Signed-off-by: Numan Siddique <[email protected]>
> > ---
> > 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
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev