NAME

Net::Nmsg - Perl extension for the NMSG message interchange library

SYNOPSIS

# The primary interface involves using the IO object; an IO
# object can be assigned multiple inputs and outputs and
# relies on the underlying threaded library to distribute
# messages from the inputs to the outputs.

use Net::Nmsg::IO;

my $io = Net::Nmsg::IO->new();

my $c = 0;

my $cb = sub {
  my $msg = shift;
  print join(' ', "msg $c :", $msg->msgtype), "\n";
  print $msg->as_str, "\n\n";
};

$io->add_input('infile.nmsg');
$io->add_output($cb);

$io->loop;

# Another way of using the interface is through individual
# input and output objects, handling the messsage distribution
# loop in perl itself. Input and output handles are similar
# to IO::Handle objects in how they can be used.

use Net::Nmsg::Input;

my $h = Net::Nmsg::Input->open('infile.nmsg');
while (my $msg = <$h>) {
  ...
}

# alternatively...

my $io = Net::Nmsg::Input->open('infile.nmsg');
$io->loop($cb);

DESCRIPTION

Net::Nmsg is a perl binding to libnmsg, the reference implementation of the NMSG binary structured message interchange format. The NMSG documentation describes the format as:

The NMSG format is an efficient encoding of typed, structured data
into payloads which are packed into containers which can be
transmitted over the network or stored to disk. Each payload is
associated with a specific message schema. Modules implementing a
certain message schema along with functionality to convert between
binary and presentation formats can be loaded at runtime by
libnmsg. nmsgtool provides a command line interface to control the
transmission, storage, creation, and conversion of NMSG payloads.

The modules of primary use are Net::Nmsg::IO, Net::Nmsg::Input, and Net::Nmsg::Output. Individual messages are handled through a type specific subclass of Net::Nmsg::Msg depending on what vendor plugins are present on the host system.

SEE ALSO

Net::Nmsg::IO, Net::Nmsg::Input, Net::Nmsg::Output, nmsgtool(1)

The nmsg library can be downloaded from: ftp://ftp.isc.org/isc/nmsg/

The pcap library can be downloaded from: http://www.tcpdump.org/

AUTHOR

Matthew Sisk, <sisk@cert.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2011 by Carnegie Mellon University

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, as published by the Free Software Foundation, under the terms pursuant to Version 2, June 1991.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.