Revised OpenFlow Library  v0.6.0dev
 All Classes Files Functions Variables Friends Groups Pages



What is it?

The Revised OpenFlow Library Common Part is a C++ library providing support for speaking the OpenFlow protocol as defined by the Open Networking Foundation (ONF) [1]. It aims towards multi-version support including OpenFlow v1.0, v1.2 and v1.3.


rofl-common provides basic support for the OpenFlow protocol (protocol parsers, message mangling, etc.) and maps the protocol's wire representation to a set of C++ classes. It hides the nasty details of the protocol and provides a simple-to-use API for adding OpenFlow endpoints to other software projects. rofl-common complements rofl-pipeline contains an OpenFlow v1.x compliant pipeline written in C.



All ROFL libraries have been released under "Mozilla Public License 2.0":

How to use it, Documentation and Support

The best source of information is this doxygen documentation you are currently reading. The most up-to-date version can be found in the sources or under the following URL:

Use the Modules page for details about rolf-common's internal architecture and how to use it.

just next to the documentation covering rofl-pipeline:

If you find yourself with a bunch of unanswered questions after reading all available information here, feel free to send an e-mail to rofl _(at)_ We will try to help but the usual excuses apply to us as well (too busy, lots of projects running, lack of money, too much administrative stuff to do, etc.), so please be patient.

We highly appreciate to get a note from you if you intend to use ROFL in your project or if you need some help with implementing a new feature. Maybe it is already on our roadmap as well. Having said that, ROFL has been quite useful in a number of projects already, but we consider it still alpha software, i.e. there is a non-null probability to stumble across bugs. If you think you have found one (of course, this is impossible, but who knows), please send us a bug report to rofl _(at)_ or file a ticket under

Many thanks!

How to get it and Build Instructions

You need one of the usual fairly modern Linux distributions. It works under Fedora and Debian, but should compile on other systems as well. You need a GNU build system (autoconf [2], automake [3], libtool [4], ...) for compiling the code. There is support for using the OpenSSL [5] library with rofl-common for encrypting plain sockets for the OpenFlow control channel, so you may want this as well. Finally, CppUnit [6] is used for some unit tests if you want to run make check.

[2] autoconf

[3] automake

[4] libtool

[5] OpenSSL

[6] CppUnit

Step 1: Grab a copy of the source code.

sh# git clone

Step 2: Enter the rofl-core directory and call the script

sh# sh

Step 3: Enter the build directory and call configure

sh# cd build/
sh# ../configure

Step 4: Call make and make install

Default installation directory is _/usr/local_, so you might need rights to add files there or change the installation prefix when executing the configure script.

sh# make
sh# make check #Optional
sh# sudo make install

Some optional parameters for @../configure@

--enable-debug: Compile with debug symbols (@-g@) and debug output (warning, it may affect performance).
--disable-silent-rules: Enable verbose compilation mode (@AM_SILENT_RULES@ disabled)
--enable-doc: Generate documentation along with compilation (for @ROFL@, @ROFL-pipeline@ and @ROFL-hal@). Make sure Doxygen and other dependencies are installed.

Extensible Data Path Daemon

We have created a data path implementation on top of ROFL: the "extensible Data Path Daemon".

xdpd is a modular framework for building your own data path seeking to help you in supporting various hardware platforms.

More information can be found on the xdpd project site or at