Skip to content

Commit

Permalink
db-ctl-base: make cmd_show_table private
Browse files Browse the repository at this point in the history
Instead of requiring user to declare a global variable, pass the value
via ctl_init().

Signed-off-by: Andy Zhou <[email protected]>
Acked-by: Ben Pfaff <[email protected]>
  • Loading branch information
azhou-nicira committed Jul 23, 2015
1 parent 6530be3 commit d33340a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 27 deletions.
20 changes: 11 additions & 9 deletions lib/db-ctl-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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) {
Expand All @@ -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)) {
Expand All @@ -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);
Expand Down Expand Up @@ -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(
Expand All @@ -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
Expand Down Expand Up @@ -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);
}
Expand Down
17 changes: 3 additions & 14 deletions lib/db-ctl-base.h
Original file line number Diff line number Diff line change
Expand Up @@ -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().
*
Expand All @@ -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);

Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions utilities/ovs-vsctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
}
4 changes: 2 additions & 2 deletions vtep/vtep-ctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
}

0 comments on commit d33340a

Please sign in to comment.