From d33340a56b2dbeff00a2503e5d3afb11c226e6b4 Mon Sep 17 00:00:00 2001 From: Andy Zhou Date: Fri, 17 Jul 2015 16:56:02 -0700 Subject: [PATCH] db-ctl-base: make cmd_show_table private Instead of requiring user to declare a global variable, pass the value via ctl_init(). Signed-off-by: Andy Zhou Acked-by: Ben Pfaff --- lib/db-ctl-base.c | 20 +++++++++++--------- lib/db-ctl-base.h | 17 +++-------------- utilities/ovs-vsctl.c | 4 ++-- vtep/vtep-ctl.c | 4 ++-- 4 files changed, 18 insertions(+), 27 deletions(-) diff --git a/lib/db-ctl-base.c b/lib/db-ctl-base.c index a1d6e4ea9..3028c09cc 100644 --- a/lib/db-ctl-base.c +++ b/lib/db-ctl-base.c @@ -52,7 +52,7 @@ VLOG_DEFINE_THIS_MODULE(db_ctl_base); * when ctl_init() is called. * * */ -extern struct cmd_show_table cmd_show_tables[]; +static const struct cmd_show_table *cmd_show_tables; /* ctl_exit() is called by ctl_fatal(). User can optionally supply an exit * function ctl_exit_func() via ctl_init. If supplied, this function will @@ -1605,7 +1605,7 @@ parse_command(int argc, char *argv[], struct shash *local_options, static void pre_cmd_show(struct ctl_context *ctx) { - struct cmd_show_table *show; + const struct cmd_show_table *show; for (show = cmd_show_tables; show->table; show++) { size_t i; @@ -1623,10 +1623,10 @@ pre_cmd_show(struct ctl_context *ctx) } } -static struct cmd_show_table * +static const struct cmd_show_table * cmd_show_find_table_by_row(const struct ovsdb_idl_row *row) { - struct cmd_show_table *show; + const struct cmd_show_table *show; for (show = cmd_show_tables; show->table; show++) { if (show->table == row->table->class) { @@ -1636,10 +1636,10 @@ cmd_show_find_table_by_row(const struct ovsdb_idl_row *row) return NULL; } -static struct cmd_show_table * +static const struct cmd_show_table * cmd_show_find_table_by_name(const char *name) { - struct cmd_show_table *show; + const struct cmd_show_table *show; for (show = cmd_show_tables; show->table; show++) { if (!strcmp(show->table->name, name)) { @@ -1656,7 +1656,7 @@ static void cmd_show_row(struct ctl_context *ctx, const struct ovsdb_idl_row *row, int level, struct sset *shown) { - struct cmd_show_table *show = cmd_show_find_table_by_row(row); + const struct cmd_show_table *show = cmd_show_find_table_by_row(row); size_t i; ds_put_char_multiple(&ctx->output, ' ', level * 4); @@ -1687,7 +1687,7 @@ cmd_show_row(struct ctl_context *ctx, const struct ovsdb_idl_row *row, datum = ovsdb_idl_read(row, column); if (column->type.key.type == OVSDB_TYPE_UUID && column->type.key.u.uuid.refTableName) { - struct cmd_show_table *ref_show; + const struct cmd_show_table *ref_show; size_t j; ref_show = cmd_show_find_table_by_name( @@ -1708,7 +1708,7 @@ cmd_show_row(struct ctl_context *ctx, const struct ovsdb_idl_row *row, } else if (ovsdb_type_is_map(&column->type) && column->type.value.type == OVSDB_TYPE_UUID && column->type.value.u.uuid.refTableName) { - struct cmd_show_table *ref_show; + const struct cmd_show_table *ref_show; size_t j; /* Prints the key to ref'ed table name map if the ref'ed table @@ -2013,9 +2013,11 @@ ctl_register_commands(const struct ctl_command_syntax *commands) /* Registers the 'db_ctl_commands' to 'all_commands'. */ void ctl_init(const struct ctl_table_class tables_[], + const struct cmd_show_table cmd_show_tables_[], void (*ctl_exit_func_)(int status)) { tables = tables_; + cmd_show_tables = cmd_show_tables_; ctl_exit_func = ctl_exit_func_; ctl_register_commands(db_ctl_commands); } diff --git a/lib/db-ctl-base.h b/lib/db-ctl-base.h index aff242bf9..00e86f8b8 100644 --- a/lib/db-ctl-base.h +++ b/lib/db-ctl-base.h @@ -33,8 +33,6 @@ struct table; * (structs, commands and functions). To utilize this module, user must * define the following: * - * - the 'cmd_show_tables'. (See 'struct cmd_show_table' for more info). - * * - the command syntaxes for each command. (See 'struct ctl_command_syntax' * for more info) and regiters them using ctl_register_commands(). * @@ -47,8 +45,10 @@ struct table; #define ovs_fatal please_use_ctl_fatal_instead_of_ovs_fatal struct ctl_table_class; +struct cmd_show_table; void ctl_init(const struct ctl_table_class *tables, - void (*ctl_exit_func)(int status)); + const struct cmd_show_table *cmd_show_tables, + void (*ctl_exit_func)(int status)); char *ctl_default_db(void); OVS_NO_RETURN void ctl_fatal(const char *, ...) OVS_PRINTF_FORMAT(1, 2); @@ -164,17 +164,6 @@ struct cmd_show_table { const struct ovsdb_idl_column *columns[3]; /* Seems like a good number. */ }; -/* This array defines the 'show' command output format. User can check the - * definition in utilities/ovs-vsctl.c as reference. - * - * Particularly, if an element in 'columns[]' represents a reference to - * another table, the referred table must also be defined as an entry in - * in 'cmd_show_tables[]'. - * - * The definition must end with an all-NULL entry. - * */ -extern struct cmd_show_table cmd_show_tables[]; - /* The base context struct for conducting the common database * operations (commands listed in 'db_ctl_commands'). User should diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c index ce05c470e..c3b8a38d7 100644 --- a/utilities/ovs-vsctl.c +++ b/utilities/ovs-vsctl.c @@ -975,7 +975,7 @@ cmd_init(struct ctl_context *ctx OVS_UNUSED) { } -struct cmd_show_table cmd_show_tables[] = { +static struct cmd_show_table cmd_show_tables[] = { {&ovsrec_table_open_vswitch, NULL, {&ovsrec_open_vswitch_col_manager_options, @@ -2771,6 +2771,6 @@ static const struct ctl_command_syntax vsctl_commands[] = { static void vsctl_cmd_init(void) { - ctl_init(tables, vsctl_exit); + ctl_init(tables, cmd_show_tables, vsctl_exit); ctl_register_commands(vsctl_commands); } diff --git a/vtep/vtep-ctl.c b/vtep/vtep-ctl.c index 98afbdada..37a78a1d1 100644 --- a/vtep/vtep-ctl.c +++ b/vtep/vtep-ctl.c @@ -364,7 +364,7 @@ Other options:\n\ } -struct cmd_show_table cmd_show_tables[] = { +static struct cmd_show_table cmd_show_tables[] = { {&vteprec_table_global, NULL, {&vteprec_global_col_managers, @@ -2329,6 +2329,6 @@ static const struct ctl_command_syntax vtep_commands[] = { static void vtep_ctl_cmd_init(void) { - ctl_init(tables, vtep_ctl_exit); + ctl_init(tables, cmd_show_tables, vtep_ctl_exit); ctl_register_commands(vtep_commands); } -- 2.20.1