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]> --- 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; + } + } + } + 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
