ipfix: use nfct_bitmask

from libnetfilter_conntrack instead of original
ipfix: fix enterprise bit handling

If this bit is zero, the Information Element identifier identifies an
Information Element in IANA-IPFIX, and the four-octet Enterprise Number field
MUST NOT be present.
ipfix: some cleanups

remove unused variables.
use unsigned int to supress gcc warning.
change struct field name from total_length to data_length.
make same bitmask key.
change tmpl_cur to void * to calc size.
ipfix: add functions for ipfix dataset creation

ulogd_key_putn() put key's value in network byteorder.
put_data_records() creates ipfix data records buffer.
ipfix: add function for ipfix message creation

This function creates ipfix message, template and data part but not scope.
Header sequence is kept by struct ipfix_instance, domain id is specified
by config file. The returned value has no export time so caller set this
and free the value after using it.
ipfix: decide whether prepending template by send times

specified in config file and kept it until_template in struct ulogd_ipfix_template
ipfix: print ipfix message

by messy ipfix_fprintf_ functions.
ipfix: build headers with template

Based on assumption that we send only two types packet, one has template
set and data set, another has data set only. Theses templates including
message header, set header and template records are put in struct
ulogd_ipfix_template as struct ipfix_msg_hdr.

Another assumption is that we can send only one dataset, cannot send
muliple datasets at onece. It's better to not include dataset buffer,
alloc it each time and use gather sendmsg to send multiple set with pre-
allocated headers.
ulogd: avoid potential double print of message

In case there is no logfile, ulogd could possibly display each
log message twice to stderr.
ulogd: add carriage return as separator

If the file is in DOS mode, the string coming from config file
parsing are containing the carriage return. The result is that
string are not correct and the parsing of confuguration file
is failling.
nfct: use start timestamp if provided

When hash table is not used, the start timestamp was not used even
if the kernel is sending it. This patch modifies the code to use it
when available. This allows to log connection with start and end
with a single message per connection and without the cost of
maintaining the hash table.
json: use packet timestamp if available

This patch updates the JSON output plugin to have it use the
timestamp of the packet if available. The date format used
for the timestamp is now using ISO 8601 to have an easy
import in most software (tested with logstash and splunk).

Signed-off-by: Eric Leblond <eric@regit.org>
printpkt: oob.time.sec was not used

This patch supresses the oob.time.sec from the input keys as this
is not used when creating the string corresponding to the packet.

Signed-off-by: Eric Leblond <eric@regit.org>
Set release number to 2.0.4.

Signed-off-by: Eric Leblond <eric@regit.org>