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]> --- Changes since v1: - rely on lrp_by_name_or_uuid --- tests/ovn-nbctl.at | 10 ++++++++++ utilities/ovn-nbctl.c | 29 +++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) 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..f3209417a 100644 --- a/utilities/ovn-nbctl.c +++ b/utilities/ovn-nbctl.c @@ -1494,8 +1494,18 @@ 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 char * OVS_WARN_UNUSED_RESULT +lrp_by_name_or_uuid(struct ctl_context *ctx, const char *id, bool must_exist, + const struct nbrec_logical_router_port **lrp_p); + static void nbctl_lsp_get_addresses(struct ctl_context *ctx) { @@ -1511,6 +1521,21 @@ 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_port *lrp; + error = lrp_by_name_or_uuid(ctx, router_port, false, &lrp); + if (lrp) { + 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]); @@ -4108,10 +4133,6 @@ nbctl_pre_lr_route_add(struct ctl_context *ctx) &nbrec_logical_router_static_route_col_external_ids); } -static char * OVS_WARN_UNUSED_RESULT -lrp_by_name_or_uuid(struct ctl_context *ctx, const char *id, bool must_exist, - const struct nbrec_logical_router_port **lrp_p); - static void nbctl_lr_route_add(struct ctl_context *ctx) { -- 2.34.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
