X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=ovsdb%2Fmutation.c;h=6a43e3423db91114903c66ad2340e7871c994bff;hb=HEAD;hp=9f09d594197712b71755aaf565daa2310e5d83cb;hpb=bfc96d9b50ae119fcbf39a9511bd9f662e7ad390;p=cascardo%2Fovs.git diff --git a/ovsdb/mutation.c b/ovsdb/mutation.c index 9f09d5941..6a43e3423 100644 --- a/ovsdb/mutation.c +++ b/ovsdb/mutation.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009, 2010 Nicira Networks +/* Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,7 +53,7 @@ ovsdb_mutator_to_string(enum ovsdb_mutator mutator) return NULL; } -static WARN_UNUSED_RESULT struct ovsdb_error * +static OVS_WARN_UNUSED_RESULT struct ovsdb_error * type_mismatch(const struct ovsdb_mutation *m, const struct json *json) { struct ovsdb_error *error; @@ -69,7 +69,7 @@ type_mismatch(const struct ovsdb_mutation *m, const struct json *json) return error; } -static WARN_UNUSED_RESULT struct ovsdb_error * +static OVS_WARN_UNUSED_RESULT struct ovsdb_error * ovsdb_mutation_from_json(const struct ovsdb_table_schema *ts, const struct json *json, struct ovsdb_symbol_table *symtab, @@ -95,6 +95,12 @@ ovsdb_mutation_from_json(const struct ovsdb_table_schema *ts, "No column %s in table %s.", column_name, ts->name); } + if (!m->column->mutable) { + return ovsdb_syntax_error(json, "constraint violation", + "Cannot mutate immutable column %s in " + "table %s.", column_name, ts->name); + } + ovsdb_type_clone(&m->type, &m->column->type); mutator_name = json_string(array->elems[1]); @@ -144,7 +150,7 @@ ovsdb_mutation_from_json(const struct ovsdb_table_schema *ts, break; default: - NOT_REACHED(); + OVS_NOT_REACHED(); } exit: @@ -300,7 +306,7 @@ mutate_scalar(const struct ovsdb_type *dst_type, struct ovsdb_datum *dst, } } } else { - NOT_REACHED(); + OVS_NOT_REACHED(); } for (i = 0; i < dst->n; i++) { @@ -327,7 +333,7 @@ ovsdb_mutation_check_count(struct ovsdb_datum *dst, if (!ovsdb_datum_conforms_to_type(dst, dst_type)) { char *s = ovsdb_type_to_english(dst_type); struct ovsdb_error *e = ovsdb_error( - "constaint violation", + "constraint violation", "Attempted to store %u elements in %s.", dst->n, s); free(s); return e; @@ -381,7 +387,7 @@ ovsdb_mutation_set_execute(struct ovsdb_row *row, break; default: - NOT_REACHED(); + OVS_NOT_REACHED(); } if (error) { return error;