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 88ddd9968602cd711543c4a8ecfb9e5da9ec0049..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();
@@
-512,6
+517,7
@@
struct vsctl_bridge {
struct ovsrec_bridge *br_cfg;
char *name;
struct ovsrec_controller **ctrl;
struct ovsrec_bridge *br_cfg;
char *name;
struct ovsrec_controller **ctrl;
+ char *fail_mode;
size_t n_ctrl;
struct vsctl_bridge *parent;
int vlan;
size_t n_ctrl;
struct vsctl_bridge *parent;
int vlan;
@@
-570,9
+576,11
@@
add_bridge(struct vsctl_info *b,
if (parent) {
br->ctrl = parent->br_cfg->controller;
br->n_ctrl = parent->br_cfg->n_controller;
if (parent) {
br->ctrl = parent->br_cfg->controller;
br->n_ctrl = parent->br_cfg->n_controller;
+ br->fail_mode = parent->br_cfg->fail_mode;
} else {
br->ctrl = br_cfg->controller;
br->n_ctrl = br_cfg->n_controller;
} else {
br->ctrl = br_cfg->controller;
br->n_ctrl = br_cfg->n_controller;
+ br->fail_mode = br_cfg->fail_mode;
}
shash_add(&b->bridges, br->name, br);
return br;
}
shash_add(&b->bridges, br->name, br);
return br;
@@
-1297,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++) {
@@
-1311,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)) {
@@
-1625,57
+1633,22
@@
cmd_set_controller(struct vsctl_context *ctx)
free_info(&info);
}
free_info(&info);
}
-static const char *
-get_fail_mode(struct ovsrec_controller **controllers, size_t n_controllers)
-{
- const char *fail_mode;
- size_t i;
-
- fail_mode = NULL;
- for (i = 0; i < n_controllers; i++) {
- const char *s = controllers[i]->fail_mode;
- if (s) {
- if (!strcmp(s, "secure")) {
- return s;
- } else {
- fail_mode = s;
- }
- }
- }
-
- return fail_mode;
-}
-
static void
cmd_get_fail_mode(struct vsctl_context *ctx)
{
struct vsctl_info info;
struct vsctl_bridge *br;
static void
cmd_get_fail_mode(struct vsctl_context *ctx)
{
struct vsctl_info info;
struct vsctl_bridge *br;
- const char *fail_mode = NULL;
get_info(ctx->ovs, &info);
br = find_bridge(&info, ctx->argv[1], true);
get_info(ctx->ovs, &info);
br = find_bridge(&info, ctx->argv[1], true);
- fail_mode = get_fail_mode(br->ctrl, br->n_ctrl);
-
- if (fail_mode && strlen(fail_mode)) {
- ds_put_format(&ctx->output, "%s\n", fail_mode);
+ if (br->fail_mode && strlen(br->fail_mode)) {
+ ds_put_format(&ctx->output, "%s\n", br->fail_mode);
}
free_info(&info);
}
}
free_info(&info);
}
-static void
-set_fail_mode(struct ovsrec_controller **controllers, size_t n_controllers,
- const char *fail_mode)
-{
- size_t i;
-
- for (i = 0; i < n_controllers; i++) {
- ovsrec_controller_set_fail_mode(controllers[i], fail_mode);
- }
-}
-
static void
cmd_del_fail_mode(struct vsctl_context *ctx)
{
static void
cmd_del_fail_mode(struct vsctl_context *ctx)
{
@@
-1685,7
+1658,7
@@
cmd_del_fail_mode(struct vsctl_context *ctx)
get_info(ctx->ovs, &info);
br = find_real_bridge(&info, ctx->argv[1], true);
get_info(ctx->ovs, &info);
br = find_real_bridge(&info, ctx->argv[1], true);
-
set_fail_mode(br->ctrl, br->n_ctrl
, NULL);
+
ovsrec_bridge_set_fail_mode(br->br_cfg
, NULL);
free_info(&info);
}
free_info(&info);
}
@@
-1704,10
+1677,7
@@
cmd_set_fail_mode(struct vsctl_context *ctx)
vsctl_fatal("fail-mode must be \"standalone\" or \"secure\"");
}
vsctl_fatal("fail-mode must be \"standalone\" or \"secure\"");
}
- if (!br->ctrl) {
- vsctl_fatal("no controller declared for %s", br->name);
- }
- set_fail_mode(br->ctrl, br->n_ctrl, fail_mode);
+ ovsrec_bridge_set_fail_mode(br->br_cfg, fail_mode);
free_info(&info);
}
free_info(&info);
}
@@
-2005,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)
@@
-2172,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];
@@
-2182,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;
@@
-2483,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);
@@
-2797,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;
@@
-2808,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');
@@
-2826,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) {
@@
-2897,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, ""},