commit | 36e1d8a7037bf7eb620bce10f73d97869bf3abce | [log] [tgz] |
---|---|---|
author | Yuta HIGUCHI <y-higuchi@ak.jp.nec.com> | Thu Mar 09 11:22:14 2017 -0800 |
committer | Yuta HIGUCHI <y-higuchi@ak.jp.nec.com> | Thu May 11 20:06:02 2017 -0700 |
tree | 0822100097eed2acf61cd081a999f64b957363d7 | |
parent | 3b34b90563afd3da53d97f6a9e6bb2ff61909dd3 [diff] |
Fix optical port description to align to standard See tx_pwr_min, tx_pwr_max type. According to OpenFlow spec, those fields are defined as uint16_t, but loxigen definition was defined as uint32_t. For OF 1.4 only /* Optical port description property. */ struct ofp_port_desc_prop_optical { uint16_t type; /* OFPPDPT_3OPTICAL. */ uint16_t length; /* Length in bytes of this property. */ uint8_t pad[4]; /* Align to 64 bits. */ uint32_t supported; /* Features supported by the port. */ uint32_t tx_min_freq_lmda; /* Minimum TX Frequency/Wavelength */ uint32_t tx_max_freq_lmda; /* Maximum TX Frequency/Wavelength */ uint32_t tx_grid_freq_lmda; /* TX Grid Spacing Frequency/Wavelength */ uint32_t rx_min_freq_lmda; /* Minimum RX Frequency/Wavelength */ uint32_t rx_max_freq_lmda; /* Maximum RX Frequency/Wavelength */ uint32_t rx_grid_freq_lmda; /* RX Grid Spacing Frequency/Wavelength */ uint16_t tx_pwr_min; /* Minimum TX power */ uint16_t tx_pwr_max; /* Maximum TX power */ }; OFP_ASSERT(sizeof(struct ofp_port_desc_prop_optical) == 40); Change-Id: Icc82a3e3c65baeffe3b98fb4bcb9a13c6ec0994f
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, Python, and Java, with an auto-generated wireshark dissector in Lua on the way).
LoxiGen currently supports OpenFlow Versions 1.0, 1.1, 1.2, and 1.3.1. Versions 1.0 and 1.3.1 are actively used in production. Support for versions 1.1 and 1.2 is considered experimental.
Loxigen is free and open source software. The Loxigen tool itself is licensed under the Eclipse Public License, version 1.0 (EPL), with an exception allowing for the distribution of the generated artifacts under terms of your choice (copyright notices must be retained, see the loxigen.py header for details.)
Running the unit tests requires nosetests. You can install it via easy_install,
easy_install nose
pip,
pip install nose
or via your distribution's package manager (example for Debian/Ubuntu):
sudo apt-get install python-nose
Nosetests is only required for running the unit tests, not for running LoxiGen itself. We do ask you to install it and use it before submitting pull requests, though.
Running the Java unit tests requires Maven 3: sudo apt-get install maven
.
You can run LoxiGen directly from the repository. There's no need to install it, and it has no dependencies beyond Python 2.7+.
To generate the libraries for all languages:
make
To generate the library for a single language:
make c
The currently supported languages are c
, python
and java
. There is an experimental/partially completed backend that generates a lua wireshark dissector (wireshark
).
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.
Loxigen comes with a set of internal unit-tests, as well as with a set of tests for the generated artifacts. Be sure to run
make check-all
and correct any problems before submitting a pull request.