commit | 4db4d0432e072feb9aee53987919207d21eed8d9 | [log] [tgz] |
---|---|---|
author | Rich Lane <rlane@bigswitch.com> | Mon May 13 18:13:48 2013 -0700 |
committer | Rich Lane <rlane@bigswitch.com> | Tue May 14 13:08:49 2013 -0700 |
tree | d97a430723f26ab3e9e1b3ea888c3392b624ef97 | |
parent | a652f529ac070f23245e15dc9055133a94af950c [diff] |
loxigen: generate legacy type_maps data from the IR The C backend (and, for the moment, the python and java backends) still need the type_maps data. Duplicating it between the type_maps file and the input files is not ideal because adding a new object would require editing both places. This change does the minimal work to generate most of the type_maps data from the IR. There are some stragglers where LOXI is particularly unclean (stats and flow-mod subtypes not really using inheritance) but the goal is for a developer who needs to add a new object to be able to do it without modifying Python code.
LoxiGen is a tool that generates OpenFlow protocol libraries for a number of languages. It is composed of a frontend that parses wire protocol descriptions and a backend for each supported language (currently C and Python, with Java on the way).
You can run LoxiGen directly from the repository. There's no need to install it, and it has no dependencies beyond Python 2.6+.
To generate the libraries for all languages:
make
To generate the library for a single language:
make c
The currently supported languages are c
and python
.
The generated libraries will be under the loxi_output
directory. This can be changed with the LOXI_OUTPUT_DIR
environment variable when using the Makefile.
Each generated library comes with its own set of documentation in the standard format for that language. Please see that documentation for more details on using the generated libraries.
Please fork the repository on GitHub and send us a pull request. You might also be interested in the INTERNALS file which has notes about how LoxiGen works.