On Thu, Dec 23, 2021 at 9:52 AM Lorenzo Bianconi
<[email protected]> wrote:
>
> Report logical router port addresses running lsp-get-addresses if the
> logical switch port address is set to "router".
>
> Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2028040
> Signed-off-by: Lorenzo Bianconi <[email protected]>

Hi Lorenzo,

Sorry that this patch was out of review for a while.

Please see below for a comment.

Numan


> ---
>  tests/ovn-nbctl.at    | 10 ++++++++++
>  utilities/ovn-nbctl.c | 26 ++++++++++++++++++++++++++
>  2 files changed, 36 insertions(+)
>
> diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at
> index a43a1ce8f..539a121c0 100644
> --- a/tests/ovn-nbctl.at
> +++ b/tests/ovn-nbctl.at
> @@ -181,6 +181,16 @@ unknown
>
>  AT_CHECK([ovn-nbctl lsp-set-addresses lp0])
>  AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
> +])
> +
> +AT_CHECK([ovn-nbctl lr-add lr0])
> +AT_CHECK([ovn-nbctl lrp-add lr0 rp-ls0 aa:bb:bb:00:00:01 192.168.0.1/24])
> +AT_CHECK([ovn-nbctl lsp-add ls0 ls0-rp])
> +AT_CHECK([ovn-nbctl lsp-set-addresses ls0-rp router])
> +AT_CHECK([ovn-nbctl lsp-set-type ls0-rp router])
> +AT_CHECK([ovn-nbctl lsp-set-options ls0-rp router-port=rp-ls0])
> +AT_CHECK([ovn-nbctl lsp-get-addresses ls0-rp], [0], [dnl
> +aa:bb:bb:00:00:01 192.168.0.1/24
>  ])])
>
>  dnl ---------------------------------------------------------------------
> diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> index 55b0f5124..4c252fdde 100644
> --- a/utilities/ovn-nbctl.c
> +++ b/utilities/ovn-nbctl.c
> @@ -1494,6 +1494,12 @@ nbctl_pre_lsp_get_addresses(struct ctl_context *ctx)
>  {
>      ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_port_col_name);
>      ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_port_col_addresses);
> +    ovsdb_idl_add_column(ctx->idl, &nbrec_logical_switch_port_col_options);
> +
> +    ovsdb_idl_add_column(ctx->idl, &nbrec_logical_router_col_ports);
> +    ovsdb_idl_add_column(ctx->idl, &nbrec_logical_router_port_col_name);
> +    ovsdb_idl_add_column(ctx->idl, &nbrec_logical_router_port_col_mac);
> +    ovsdb_idl_add_column(ctx->idl, &nbrec_logical_router_port_col_networks);
>  }
>
>  static void
> @@ -1511,6 +1517,26 @@ nbctl_lsp_get_addresses(struct ctl_context *ctx)
>          return;
>      }
>
> +    const char *router_port = smap_get(&lsp->options, "router-port");
> +    if (lsp->n_addresses == 1 && !strcmp(lsp->addresses[0], "router") &&
> +        router_port) {
> +        const struct nbrec_logical_router *lr;
> +        NBREC_LOGICAL_ROUTER_FOR_EACH (lr, ctx->idl) {
> +            for (i = 0; i < lr->n_ports; i++) {
> +                const struct nbrec_logical_router_port *lrp = lr->ports[i];
> +                if (strcmp(lrp->name, router_port)) {
> +                    continue;
> +                }
> +                ds_put_format(&ctx->output, "%s", lrp->mac);
> +                for (size_t j = 0; j < lrp->n_networks; j++) {
> +                    ds_put_format(&ctx->output, " %s", lrp->networks[j]);
> +                }
> +                ds_put_cstr(&ctx->output, "\n");
> +                return;
> +            }
> +        }
> +    }

I think you can make use of the existing function
'lrp_by_name_or_uuid()' to get the peer logical router port.

Numan

> +
>      svec_init(&addresses);
>      for (i = 0; i < lsp->n_addresses; i++) {
>          svec_add(&addresses, lsp->addresses[i]);
> --
> 2.33.1
>
> _______________________________________________
> 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

Reply via email to