This renames get_row() to ctl_get_row() and makes it public. It's unfortunate that it adds a cast, but getting rid of redundant code seems worth it to me.
Signed-off-by: Ben Pfaff <b...@ovn.org> --- lib/db-ctl-base.c | 24 ++++++++++++------------ lib/db-ctl-base.h | 5 +++++ ovn/utilities/ovn-sbctl.c | 31 +++---------------------------- 3 files changed, 20 insertions(+), 40 deletions(-) diff --git a/lib/db-ctl-base.c b/lib/db-ctl-base.c index cb04bbdd8440..52e06293ee21 100644 --- a/lib/db-ctl-base.c +++ b/lib/db-ctl-base.c @@ -351,10 +351,10 @@ get_row_by_id(struct ctl_context *ctx, return final; } -static const struct ovsdb_idl_row * -get_row(struct ctl_context *ctx, - const struct ovsdb_idl_table_class *table, const char *record_id, - bool must_exist) +const struct ovsdb_idl_row * +ctl_get_row(struct ctl_context *ctx, + const struct ovsdb_idl_table_class *table, const char *record_id, + bool must_exist) { const struct ovsdb_idl_row *row = NULL; struct uuid uuid; @@ -837,7 +837,7 @@ cmd_get(struct ctl_context *ctx) } table = get_table(table_name); - row = get_row(ctx, table, record_id, must_exist); + row = ctl_get_row(ctx, table, record_id, must_exist); if (!row) { return; } @@ -1065,7 +1065,7 @@ cmd_list(struct ctl_context *ctx) out = ctx->table = list_make_table(columns, n_columns); if (ctx->argc > 2) { for (i = 2; i < ctx->argc; i++) { - list_record(get_row(ctx, table, ctx->argv[i], must_exist), + list_record(ctl_get_row(ctx, table, ctx->argv[i], must_exist), columns, n_columns, out); } } else { @@ -1231,7 +1231,7 @@ cmd_set(struct ctl_context *ctx) int i; table = get_table(table_name); - row = get_row(ctx, table, record_id, must_exist); + row = ctl_get_row(ctx, table, record_id, must_exist); if (!row) { return; } @@ -1271,7 +1271,7 @@ cmd_add(struct ctl_context *ctx) table = get_table(table_name); die_if_error(get_column(table, column_name, &column)); - row = get_row(ctx, table, record_id, must_exist); + row = ctl_get_row(ctx, table, record_id, must_exist); if (!row) { return; } @@ -1332,7 +1332,7 @@ cmd_remove(struct ctl_context *ctx) table = get_table(table_name); die_if_error(get_column(table, column_name, &column)); - row = get_row(ctx, table, record_id, must_exist); + row = ctl_get_row(ctx, table, record_id, must_exist); if (!row) { return; } @@ -1403,7 +1403,7 @@ cmd_clear(struct ctl_context *ctx) int i; table = get_table(table_name); - row = get_row(ctx, table, record_id, must_exist); + row = ctl_get_row(ctx, table, record_id, must_exist); if (!row) { return; } @@ -1541,7 +1541,7 @@ cmd_destroy(struct ctl_context *ctx) for (i = 2; i < ctx->argc; i++) { const struct ovsdb_idl_row *row; - row = get_row(ctx, table, ctx->argv[i], must_exist); + row = ctl_get_row(ctx, table, ctx->argv[i], must_exist); if (row) { ovsdb_idl_txn_delete(row); } @@ -1575,7 +1575,7 @@ cmd_wait_until(struct ctl_context *ctx) table = get_table(table_name); - row = get_row(ctx, table, record_id, false); + row = ctl_get_row(ctx, table, record_id, false); if (!row) { ctx->try_again = true; return; diff --git a/lib/db-ctl-base.h b/lib/db-ctl-base.h index ecf0af93c015..e4568a2cf2ce 100644 --- a/lib/db-ctl-base.h +++ b/lib/db-ctl-base.h @@ -260,6 +260,11 @@ struct ctl_table_class { struct ctl_row_id row_ids[4]; }; +const struct ovsdb_idl_row *ctl_get_row(struct ctl_context *, + const struct ovsdb_idl_table_class *, + const char *record_id, + bool must_exist); + void ctl_set_column(const char *table_name, const struct ovsdb_idl_row *, const char *arg, struct ovsdb_symbol_table *); diff --git a/ovn/utilities/ovn-sbctl.c b/ovn/utilities/ovn-sbctl.c index c77121e39273..69f461176572 100644 --- a/ovn/utilities/ovn-sbctl.c +++ b/ovn/utilities/ovn-sbctl.c @@ -736,39 +736,14 @@ is_partial_uuid_match(const struct uuid *uuid, const char *match) return !strncmp(s1, s2, strlen(s2)); } -static const struct sbrec_datapath_binding * -lookup_datapath(struct ovsdb_idl *idl, const char *s) -{ - struct uuid uuid; - if (uuid_from_string(&uuid, s)) { - const struct sbrec_datapath_binding *datapath; - datapath = sbrec_datapath_binding_get_for_uuid(idl, &uuid); - if (datapath) { - return datapath; - } - } - - const struct sbrec_datapath_binding *found = NULL; - const struct sbrec_datapath_binding *datapath; - SBREC_DATAPATH_BINDING_FOR_EACH (datapath, idl) { - const char *name = smap_get(&datapath->external_ids, "name"); - if (name && !strcmp(name, s)) { - if (!found) { - found = datapath; - } else { - ctl_fatal("%s: multiple datapaths with this name", s); - } - } - } - return found; -} - static void cmd_lflow_list(struct ctl_context *ctx) { const struct sbrec_datapath_binding *datapath = NULL; if (ctx->argc > 1) { - datapath = lookup_datapath(ctx->idl, ctx->argv[1]); + datapath = (const struct sbrec_datapath_binding *) + ctl_get_row(ctx, &sbrec_table_datapath_binding, + ctx->argv[1], false); if (datapath) { ctx->argc--; ctx->argv++; -- 2.10.2 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev