X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fovs-vsctl.c;h=fc1ba3daa83b746d08c4e91c64e90d9abb7dd562;hb=ff8bb7e76b2cdcbcf88cd2fac663ba517e4a659c;hp=b5ab2530c32dcb9e8fe352b37dd7c297d51dc5fb;hpb=8c3c2f30007534ced8dc6030ecc60d52c3333be4;p=openvswitch diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c index b5ab2530..fc1ba3da 100644 --- a/utilities/ovs-vsctl.c +++ b/utilities/ovs-vsctl.c @@ -125,7 +125,6 @@ main(int argc, char *argv[]) set_program_name(argv[0]); signal(SIGPIPE, SIG_IGN); - time_init(); vlog_init(); vlog_set_levels(VLM_ANY_MODULE, VLF_CONSOLE, VLL_WARN); vlog_set_levels(VLM_reconnect, VLF_ANY_FACILITY, VLL_WARN); @@ -458,13 +457,13 @@ Switch commands:\n\ \n\ Database commands:\n\ list TBL [REC] list RECord (or all records) in TBL\n\ - get TBL REC COL[:KEY] print values of COLumns in RECORD in TBL\n\ + get TBL REC COL[:KEY] print values of COLumns in RECord in TBL\n\ set TBL REC COL[:KEY]=VALUE set COLumn values in RECord in TBL\n\ add TBL REC COL [KEY=]VALUE add (KEY=)VALUE to COLumn in RECord in TBL\n\ remove TBL REC COL [KEY=]VALUE remove (KEY=)VALUE from COLumn\n\ clear TBL REC COL clear values from COLumn in RECord in TBL\n\ create TBL COL[:KEY]=VALUE create and initialize new record\n\ - destroy TBL REC delete REC from TBL\n\ + destroy TBL REC delete RECord from TBL\n\ wait-until TBL REC [COL[:KEY]=VALUE] wait until condition is true\n\ Potentially unsafe database commands require --force option.\n\ \n\ @@ -1968,8 +1967,7 @@ get_table(const char *table_name) static const struct ovsdb_idl_row * get_row_by_id(struct vsctl_context *ctx, const struct vsctl_table_class *table, - const struct vsctl_row_id *id, const char *record_id, - bool partial_match_ok) + const struct vsctl_row_id *id, const char *record_id) { const struct ovsdb_idl_row *referrer, *final; @@ -1987,35 +1985,24 @@ get_row_by_id(struct vsctl_context *ctx, const struct vsctl_table_class *table, } } else { const struct ovsdb_idl_row *row; - unsigned int best_score = 0; referrer = NULL; for (row = ovsdb_idl_first_row(ctx->idl, id->table); - row != NULL && best_score != UINT_MAX; + row != NULL; row = ovsdb_idl_next_row(row)) { const struct ovsdb_datum *name; name = ovsdb_idl_get(row, id->name_column, OVSDB_TYPE_STRING, OVSDB_TYPE_VOID); - if (name->n == 1) { - unsigned int score; - - score = (partial_match_ok - ? score_partial_match(name->keys[0].string, record_id) - : !strcmp(name->keys[0].string, record_id)); - if (score > best_score) { - referrer = row; - best_score = score; - } else if (score == best_score) { - referrer = NULL; + if (name->n == 1 && !strcmp(name->keys[0].string, record_id)) { + if (referrer) { + vsctl_fatal("multiple rows in %s match \"%s\"", + table->class->name, record_id); } + referrer = row; } } - if (best_score && !referrer) { - vsctl_fatal("multiple rows in %s match \"%s\"", - table->class->name, record_id); - } } if (!referrer) { return NULL; @@ -2039,9 +2026,8 @@ get_row_by_id(struct vsctl_context *ctx, const struct vsctl_table_class *table, } static const struct ovsdb_idl_row * -get_row__(struct vsctl_context *ctx, - const struct vsctl_table_class *table, const char *record_id, - bool partial_match_ok) +get_row (struct vsctl_context *ctx, + const struct vsctl_table_class *table, const char *record_id) { const struct ovsdb_idl_row *row; struct uuid uuid; @@ -2052,8 +2038,7 @@ get_row__(struct vsctl_context *ctx, int i; for (i = 0; i < ARRAY_SIZE(table->row_ids); i++) { - row = get_row_by_id(ctx, table, &table->row_ids[i], record_id, - partial_match_ok); + row = get_row_by_id(ctx, table, &table->row_ids[i], record_id); if (row) { break; } @@ -2062,13 +2047,6 @@ get_row__(struct vsctl_context *ctx, return row; } -static const struct ovsdb_idl_row * -get_row(struct vsctl_context *ctx, - const struct vsctl_table_class *table, const char *record_id) -{ - return get_row__(ctx, table, record_id, true); -} - static const struct ovsdb_idl_row * must_get_row(struct vsctl_context *ctx, const struct vsctl_table_class *table, const char *record_id) @@ -2675,7 +2653,7 @@ is_condition_satified(const struct vsctl_table_class *table, const char *operator; unsigned int idx; char *error; - int cmp; + int cmp = 0; error = parse_column_key_value(arg, table, &column, &key_string, &operator, operators, ARRAY_SIZE(operators), @@ -2744,7 +2722,7 @@ cmd_wait_until(struct vsctl_context *ctx) table = get_table(table_name); - row = get_row__(ctx, table, record_id, false); + row = get_row(ctx, table, record_id); if (!row) { ctx->try_again = true; return; @@ -2808,7 +2786,7 @@ do_vsctl(const char *args, struct vsctl_command *commands, size_t n_commands, const char *unused; struct vsctl_command *c; int64_t next_cfg = 0; - char *error; + char *error = NULL; txn = the_idl_txn = ovsdb_idl_txn_create(idl); if (dry_run) {