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