* 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
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;
}
}
-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) {
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)) {
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);
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(
} 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
/* 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);
}
* (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().
*
#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);
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[];
-
\f
/* The base context struct for conducting the common database
* operations (commands listed in 'db_ctl_commands'). User should