# libtrap

libtrap is a part of [NEMEA Framework](https://github.com/CESNET/Nemea-Framework).
It implements communication interfaces for NEMEA modules such as [Modules](https://github.com/CESNET/Nemea-Modules) and [Detectors](https://github.com/CESNET/Nemea-Detectors).

Since this is a low level development component, see [NEMEA System](https://github.com/CESNET/NEMEA)
repository for more general and user documentation.

## Documentation

From time to time, we generate `doxygen` documentation.  Having `doxygen`, it
can be generated by `make doc`.  (If you installed `doxygen`, you need to
re-execute `configure`.)

The result can be found in [doc](https://nemea.liberouter.org/doc/), it contains two versions/levels of
documentation.  One is public [doxygen doc](https://nemea.liberouter.org/doc/libtrap/) - API for developers
of NEMEA modules.  The second is in [devel doc](https://nemea.liberouter.org/doc/libtrap-devel/) - internal API
for developers of libtrap.

## Versioning

The result of libtrap compilation is a shared object (.so).  To set version, we use
mechanism of `libtool`, that has its own versioning.

How to increment version number of shared libraries.  From libtool
documentation amended with guidance from N. Boullis:

1. It is probably not a good idea to update the version information several times between public releases, but rather once per public release. (This seems to be more an aesthetic consideration than a hard technical one.)
2. If the library source code has changed at all since the last update, then increment REVISION (C:R:A' becomes C:R+1:A').
3. If any interfaces have been added, removed, or changed since the last update, increment CURRENT, and set REVISION to 0.
4. If any interfaces have been added since the last public release, then increment AGE.
5. If any interfaces have been removed or changed since the last public release, then set AGE to 0. A changed interface means an incompatibility with previous version.

