nmsg has the following external dependencies:
-
protobuf-c, version 1.0.1 or higher. Previous versions WILL NOT WORK.
On Debian systems, the following packages should be installed, if available:
pkg-config libpcap0.8-dev libprotobuf-c-dev protobuf-c-compiler libzmq3-dev librdkafka-dev libjson-c-dev zlib1g-dev
Note that on Debian systems, binary packages of nmsg and its dependencies are available from a Debian package repository maintained by Farsight Security. These packages should be used in preference to building from source on Debian-based systems.
On FreeBSD systems, the following ports should be installed, if available:
net/libzmq3
net/librdkafka
devel/json-c
devel/pkgconf
devel/protobuf
devel/protobuf-c
Note that nmsg >= 0.9.0 has been designed to use the 1.x release series of protobuf-c, while previous releases of nmsg were designed to use the 0.x release series of protobuf-c. Make sure you have the correct version of protobuf-c installed before attempting to build nmsg.
After satisfying the prerequisites, ./configure && make && make install should
compile and install libnmsg and nmsgtool to /usr/local. If building from a
git checkout, run the ./autogen.sh command first to generate the configure
script.
Support for libzmq can be disabled by passing the --without-libzmq parameter
to the configure script.
Support for librdkafka can be disabled by passing the --without-librdkafka parameter
to the configure script.
Support for json-c can be disabled by passing the --without-json-c parameter
to the configure script.
The documentation for the libnmsg API is located in the doc/doxygen/html
directory. To rebuild the API documentation, run make html. This requires
Doxygen to be installed.
The manpage documentation is built using DocBook 5, DocBook XSL, and xsltproc. git checkouts do not include the built manpages, but tarball releases do. To build the documentation on Debian systems, the following packages should be installed:
docbook5-xml docbook-xsl-ns xsltproc
nmsg can be extended at runtime with new message types by installing message
modules into the libnmsg module directory, which defaults to
$libdir/nmsg. This location is configurable by passing the
--with-pluginsdir parameter to the configure script.
Message module plugins are .so files which export either a symbol named
nmsg_msgmod_ctx or a symbol named nmsg_msgmod_ctx_array. If
nmsg_msgmod_ctx is exported, it is an object of type struct nmsg_msgmod_plugin. Otherwise, if nmsg_msgmod_ctx_array is exported, it is a
NULL-terminated array of pointers to struct nmsg_msgmod_plugin's. See
nmsg/msgmod_plugin.h for details about developing
plugins using the message module plugin interface.
nmsg as of version 0.11.0 supports filter modules, which can be loaded by
nmsgtool or the nmsg_io_add_filter_module() API call. Filter module plugins
are .so files which export a symbol named nmsg_fltmod_plugin_export. See
nmsg/fltmod_plugin.h for details about developing
plugins using the filter module plugin interface.
nmsg itself ships with a message module and a filter module. See the Message modules and Filter modules sections in Makefile.am for
examples of using Automake to build nmsg modules. Also see
sie-nmsg for an example of an
external message module, and for general information on building plugins using
Autotools see the Autotools
Mythbuster documentation.
C language examples are in the examples/ directory.