return error;
}
-static void
+static const struct ovsdb_idl_column *
pre_parse_column_key_value(struct vsctl_context *ctx,
const char *arg,
const struct vsctl_table_class *table)
pre_get_column(ctx, table, column_name, &column);
free(column_name);
+
+ return column;
+}
+
+static void
+check_mutable(const struct vsctl_table_class *table,
+ const struct ovsdb_idl_column *column)
+{
+ if (!column->mutable) {
+ vsctl_fatal("cannot modify read-only column %s in table %s",
+ column->name, table->class->name);
+ }
}
static void
table = pre_get_table(ctx, table_name);
for (i = 3; i < ctx->argc; i++) {
- pre_parse_column_key_value(ctx, ctx->argv[i], table);
+ const struct ovsdb_idl_column *column;
+
+ column = pre_parse_column_key_value(ctx, ctx->argv[i], table);
+ check_mutable(table, column);
}
}
table = pre_get_table(ctx, table_name);
pre_get_column(ctx, table, column_name, &column);
+ check_mutable(table, column);
}
static void
table = pre_get_table(ctx, table_name);
pre_get_column(ctx, table, column_name, &column);
+ check_mutable(table, column);
}
static void
const struct ovsdb_idl_column *column;
pre_get_column(ctx, table, ctx->argv[i], &column);
+ check_mutable(table, column);
}
}