projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vswitch: Consistently use spaces instead of tabs in vswitch.xml
[openvswitch]
/
utilities
/
ovs-vsctl.c
diff --git
a/utilities/ovs-vsctl.c
b/utilities/ovs-vsctl.c
index d68e4740a65ce434b75811a61afcc8cdb696eeb3..d09cf7460b0f645f8cd94e50f644962d34ae7fb9 100644
(file)
--- a/
utilities/ovs-vsctl.c
+++ b/
utilities/ovs-vsctl.c
@@
-85,7
+85,7
@@
static bool dry_run;
static bool wait_for_reload = true;
/* --timeout: Time to wait for a connection to 'db'. */
static bool wait_for_reload = true;
/* --timeout: Time to wait for a connection to 'db'. */
-static int timeout
= 5
;
+static int timeout;
/* All supported commands. */
static const struct vsctl_command_syntax all_commands[];
/* All supported commands. */
static const struct vsctl_command_syntax all_commands[];
@@
-182,12
+182,16
@@
parse_options(int argc, char *argv[])
#endif
{0, 0, 0, 0},
};
#endif
{0, 0, 0, 0},
};
+ char *tmp, *short_options;
+ tmp = long_options_to_short_options(long_options);
+ short_options = xasprintf("+%s", tmp);
+ free(tmp);
for (;;) {
int c;
for (;;) {
int c;
- c = getopt_long(argc, argv,
"+v::hVt:"
, long_options, NULL);
+ c = getopt_long(argc, argv,
short_options
, long_options, NULL);
if (c == -1) {
break;
}
if (c == -1) {
break;
}
@@
-245,6
+249,7
@@
parse_options(int argc, char *argv[])
abort();
}
}
abort();
}
}
+ free(short_options);
if (!db) {
db = default_db();
if (!db) {
db = default_db();
@@
-1300,12
+1305,11
@@
add_port(struct vsctl_context *ctx,
get_info(ctx->ovs, &info);
if (may_exist) {
get_info(ctx->ovs, &info);
if (may_exist) {
- struct vsctl_port *port;
+ struct vsctl_port *
vsctl_
port;
- port = find_port(&info, port_name, false);
- if (port) {
+
vsctl_
port = find_port(&info, port_name, false);
+ if (
vsctl_
port) {
struct svec want_names, have_names;
struct svec want_names, have_names;
- size_t i;
svec_init(&want_names);
for (i = 0; i < n_ifaces; i++) {
svec_init(&want_names);
for (i = 0; i < n_ifaces; i++) {
@@
-1314,15
+1318,16
@@
add_port(struct vsctl_context *ctx,
svec_sort(&want_names);
svec_init(&have_names);
svec_sort(&want_names);
svec_init(&have_names);
- for (i = 0; i < port->port_cfg->n_interfaces; i++) {
- svec_add(&have_names, port->port_cfg->interfaces[i]->name);
+ for (i = 0; i < vsctl_port->port_cfg->n_interfaces; i++) {
+ svec_add(&have_names,
+ vsctl_port->port_cfg->interfaces[i]->name);
}
svec_sort(&have_names);
}
svec_sort(&have_names);
- if (strcmp(port->bridge->name, br_name)) {
+ if (strcmp(
vsctl_
port->bridge->name, br_name)) {
char *command = vsctl_context_to_string(ctx);
vsctl_fatal("\"%s\" but %s is actually attached to bridge %s",
char *command = vsctl_context_to_string(ctx);
vsctl_fatal("\"%s\" but %s is actually attached to bridge %s",
- command, port_name, port->bridge->name);
+ command, port_name,
vsctl_
port->bridge->name);
}
if (!svec_equal(&want_names, &have_names)) {
}
if (!svec_equal(&want_names, &have_names)) {
@@
-1970,6
+1975,28
@@
get_column(const struct vsctl_table_class *table, const char *column_name,
}
}
}
}
+static struct uuid *
+create_symbol(struct ovsdb_symbol_table *symtab, const char *id, bool *newp)
+{
+ struct ovsdb_symbol *symbol;
+
+ if (id[0] != '@') {
+ vsctl_fatal("row id \"%s\" does not begin with \"@\"", id);
+ }
+
+ if (newp) {
+ *newp = ovsdb_symbol_table_get(symtab, id) == NULL;
+ }
+
+ symbol = ovsdb_symbol_table_insert(symtab, id);
+ if (symbol->used) {
+ vsctl_fatal("row id \"%s\" may only be specified on one --id option",
+ id);
+ }
+ symbol->used = true;
+ return &symbol->uuid;
+}
+
static char *
missing_operator_error(const char *arg, const char **allowed_operators,
size_t n_allowed)
static char *
missing_operator_error(const char *arg, const char **allowed_operators,
size_t n_allowed)
@@
-2137,6
+2164,7
@@
error:
static void
cmd_get(struct vsctl_context *ctx)
{
static void
cmd_get(struct vsctl_context *ctx)
{
+ const char *id = shash_find_data(&ctx->options, "--id");
bool if_exists = shash_find(&ctx->options, "--if-exists");
const char *table_name = ctx->argv[1];
const char *record_id = ctx->argv[2];
bool if_exists = shash_find(&ctx->options, "--if-exists");
const char *table_name = ctx->argv[1];
const char *record_id = ctx->argv[2];
@@
-2147,6
+2175,15
@@
cmd_get(struct vsctl_context *ctx)
table = get_table(table_name);
row = must_get_row(ctx, table, record_id);
table = get_table(table_name);
row = must_get_row(ctx, table, record_id);
+ if (id) {
+ bool new;
+
+ *create_symbol(ctx->symtab, id, &new) = row->uuid;
+ if (!new) {
+ vsctl_fatal("row id \"%s\" specified on \"get\" command was used "
+ "before it was defined", id);
+ }
+ }
for (i = 3; i < ctx->argc; i++) {
const struct ovsdb_idl_column *column;
const struct ovsdb_datum *datum;
for (i = 3; i < ctx->argc; i++) {
const struct ovsdb_idl_column *column;
const struct ovsdb_datum *datum;
@@
-2448,24
+2485,7
@@
cmd_create(struct vsctl_context *ctx)
const struct uuid *uuid;
int i;
const struct uuid *uuid;
int i;
- if (id) {
- struct ovsdb_symbol *symbol;
-
- if (id[0] != '@') {
- vsctl_fatal("row id \"%s\" does not begin with \"@\"", id);
- }
-
- symbol = ovsdb_symbol_table_insert(ctx->symtab, id);
- if (symbol->used) {
- vsctl_fatal("row id \"%s\" may only be used to insert a single "
- "row", id);
- }
- symbol->used = true;
-
- uuid = &symbol->uuid;
- } else {
- uuid = NULL;
- }
+ uuid = id ? create_symbol(ctx->symtab, id, NULL) : NULL;
table = get_table(table_name);
row = ovsdb_idl_txn_insert(ctx->txn, table->class, uuid);
table = get_table(table_name);
row = ovsdb_idl_txn_insert(ctx->txn, table->class, uuid);
@@
-2762,8
+2782,8
@@
do_vsctl(const char *args, struct vsctl_command *commands, size_t n_commands,
ds_chomp(ds, '\n');
for (j = 0; j < ds->length; j++) {
ds_chomp(ds, '\n');
for (j = 0; j < ds->length; j++) {
- int c = ds->string[j];
- switch (c) {
+ int c
h
= ds->string[j];
+ switch (c
h
) {
case '\n':
fputs("\\n", stdout);
break;
case '\n':
fputs("\\n", stdout);
break;
@@
-2773,7
+2793,7
@@
do_vsctl(const char *args, struct vsctl_command *commands, size_t n_commands,
break;
default:
break;
default:
- putchar(c);
+ putchar(c
h
);
}
}
putchar('\n');
}
}
putchar('\n');
@@
-2791,8
+2811,6
@@
do_vsctl(const char *args, struct vsctl_command *commands, size_t n_commands,
if (wait_for_reload && status != TXN_UNCHANGED) {
for (;;) {
if (wait_for_reload && status != TXN_UNCHANGED) {
for (;;) {
- const struct ovsrec_open_vswitch *ovs;
-
ovsdb_idl_run(idl);
OVSREC_OPEN_VSWITCH_FOR_EACH (ovs, idl) {
if (ovs->cur_cfg >= next_cfg) {
ovsdb_idl_run(idl);
OVSREC_OPEN_VSWITCH_FOR_EACH (ovs, idl) {
if (ovs->cur_cfg >= next_cfg) {
@@
-2862,7
+2880,7
@@
static const struct vsctl_command_syntax all_commands[] = {
{"emer-reset", 0, 0, cmd_emer_reset, NULL, ""},
/* Parameter commands. */
{"emer-reset", 0, 0, cmd_emer_reset, NULL, ""},
/* Parameter commands. */
- {"get",
3, INT_MAX, cmd_get, NULL, "--if-exists
"},
+ {"get",
2, INT_MAX, cmd_get, NULL, "--if-exists,--id=
"},
{"list", 1, INT_MAX, cmd_list, NULL, ""},
{"set", 3, INT_MAX, cmd_set, NULL, ""},
{"add", 4, INT_MAX, cmd_add, NULL, ""},
{"list", 1, INT_MAX, cmd_list, NULL, ""},
{"set", 3, INT_MAX, cmd_set, NULL, ""},
{"add", 4, INT_MAX, cmd_add, NULL, ""},