.\" -*- nroff -*- .de IQ . br . ns . IP "\\$1" .. .TH ovsdb\-idlc 1 "November 2009" "Open vSwitch" "Open vSwitch Manual" .ds PN ovsdb\-idlc . .SH NAME ovsdb\-idlc \- Open vSwitch IDL (Interface Definition Language) compiler . .SH SYNOPSIS \fBovsdb\-idlc \fBannotate\fI schema annotations\fR .br \fBovsdb\-idlc \fBc\-idl\-header\fI idl\fR .br \fBovsdb\-idlc \fBc\-idl\-source\fI idl\fR .br \fBovsdb\-idlc \-\-help\fR .br \fBovsdb\-idlc \-\-version\fR . .SH DESCRIPTION The \fBovsdb\-idlc\fR program is a command-line tool for translating Open vSwitch database interface definition language (IDL) schemas into other formats. It is used while building Open vSwitch, not at installation or configuration time. Thus, it is not normally installed as part of Open vSwitch. . .PP The \fIidl\fR files used as input for most \fBovsdb\-idlc\fR commands have the same format as the OVSDB schemas, specified in the OVSDB specification, with a few additions: . .IP """\fBidlPrefix\fR"" member of " This member, which is required, specifies a string that is prefixed to top-level names in C bindings. It should probably end in an underscore. . .IP """\fBidlHeader\fR"" member of " This member, which is required, specifies the name of the IDL header. It will be output on an \fB#include\fR line in the source file generated by the C bindings. It should include the bracketing \fB""\fR or \fB<>\fR. . .IP """\fBcDecls\fR"" member of " .IQ """\fBhDecls\fR"" member of " These optional members may specify arbitrary code to include in the generated \fB.c\fR or \fB.h\fR file, respectively, in each case just after the \fB#include\fR directives in those files. . .IP """\fBextensions\fR"" member of " .IQ """\fBextensions\fR"" member of " This member is optional. If specified, it is an object whose contents describes extensions to the OVSDB schema language, for the purpose of specifying interpretation by the IDL. . .IP """\fBsynthetic\fR"" member of ""\fBextensions\fR"" object" If this optional member is set to \fBtrue\fR, then it indicates that the column is not expected to be found in the actual database. Instead, code supplied by the IDL's client fills in the desired structure members based on the value of one or more other database columns. This can be used to cache the result of a calculation, for example. . .IP """\fBparse\fR"" member of ""\fBextensions\fR"" object" This member should be present if and only if the column is synthetic. It should be a string that contains C code to set the value of the column's member in an object named \fBrow\fR, e.g. "\fBrow->column = 1;\fR" if the column's name is \fBcolumn\fR and has integer type. The code may rely on the columns named in \fBdependencies\fR to be initialized. The function can get called for rows that do not satisfy the constraints in the schema, e.g. that a pointer to another is nonnull, so it must not rely on those constraints. . .IP """\fBunparse\fR"" member of ""\fBextensions\fR"" object" This member is honored only if the column is synthetic. It should be a string that contains C code to free the data in the column's member in an object named \fBrow\fR, e.g. "\fBfree(row->column);\fR" if the column's name is \fBcolumn\fR and points to data that was allocated by the \fBparse\fR function and needs to be freed. . .IP """\fBdependencies\fR"" member of ""\fBextensions\fR"" object" This member should be a list of the names of columns whose values are used by the code in \fBparse\fR and \fBunparse\fR. The IDL ensures that dependencies are parsed before the columns that depends on them, and vice versa for unparsing. .SS "Commands" .IP "\fBannotate\fI schema annotations\fR" Reads \fIschema\fR, which should be a file in JSON format (ordinarily an OVSDB schema file), then reads and executes the Python syntax fragment in \fIannotations\fR. The Python syntax fragment is passed the JSON object as a local variable named \fBs\fR. It may modify this data in any way. After the Python code returns, the object as modified is re-serialized as JSON on standard output. . .IP "\fBc\-idl\-header\fI idl\fR" Reads \fIidl\fR and prints on standard output a C header file that defines a structure for each table defined by the schema. If a column name in \fIidl\fR is a C or C++ keyword, it will be appended with an underscore. . .IP "\fBc\-idl\-source\fI idl\fR" Reads \fIidl\fR and prints on standard output a C source file that implements C bindings for the database defined by the schema. If a column name in \fIidl\fR is a C or C++ keyword, it will be appended with an underscore. . .SS "Options" .so lib/common.man . .SH "BUGS" \fBovsdb\-idlc\fR is more lenient about the format of OVSDB schemas than other OVSDB tools. It may successfully parse schemas that, e.g., \fBovsdb\-tool\fR rejects. . .SH "SEE ALSO" The OVSDB specification.