version 2.5.1
-------------

* BUGFIX: make options '-4' and '-6', used as a hint for a hostname
resolution, to be position independent. In case one of those options was used
before the option '-t, --hostname', its effect was canceled out.

* BUGFIX: do not use AI_ADDRCONFIG flag when resolving a hostname/address. If
the flag is in effect on a computer without a configured IP address, resolving
will fail.

* BUGFIX: if a mandatory option had been undefined in a configuration file,
program had been killed with unfreed memory.

* BUGFIX: invalid memory access, when receiving client's data.

* BUGFIX: check if a value of a parameter for '-m, --accept-max' is a number.

version 2.5.0
-------------

* Treat event hook definitions (session_begin, session_error, session_end) as
optional.

* New option '-V, --verbose' to increase verbosity of the process. Additional
LOG_INFO messages shall be printed to syslog and/or stderr, such as client
connections/disconnections and event triggers.

* BUGFIX: some long options had been unrecognized.

* BUGFIX: limit maximum length of a filter name to 128 Bytes. In previous
versions, when socket notifications were enabled, a notification message which
contained a filter name longer than 123 Bytes, was transmitted in incomplete
fashion, due to a fixed size of an intermediate buffer used in transmission.

* BUGFIX: validate hostformat properly. Port number could had been undefined
without rising an error.

* Limit maximum number of filters which can be loaded from a configuration
file. This hard-limit can be changed by updating a value of CONF_FILTER_MAXCNT
and recompiling.

version 2.4.0
-------------

* Option '-l, --listen' is no longer supported. This option was removed in
favor for a new option '-t, --hostname'.

* New option '-t, --hostname' allows to specify an address/hostname and port
number to which etherpoke should bind and listen on for incoming client
connections.  This option supersedes option '-l, --listen' as it allows to
change otherwise default address 0.0.0.0. This feature addresses the complains
about etherpoke being exposed to LAN/WAN network when used only locally.

* Notifications via IPv6.

* New options '-4' and '-6' to control how the hostname gets resolved when
'-t, --hostname' is used. If '-4' is in effect IPv4 gets precedence over
IPv6 and vice versa.

version 2.3.1
-------------

* BUGFIX: if executable was invoked using specific command, path to the
configuration file became invalid. See issue #2.

version 2.3.0
-------------

* Support for TCP sockets as an alternative to execv(3). This feature allows
remote systems to be notified immediately after event occurs without
unnecessary overhead.

* New configuration options 'notify_sock', 'notify_exec'. If set to true,
'notify_sock' sends notification message (FILTER_NAME:EVT) to all connected
clients via TCP socket (configured with option '-l' on program's invocation),
'notify_exec' executes content of event hooks. Both options can be set
simultaneously. By default socket notification is disabled.

* Command-line option names has been changed, long options are supported.

* Running `make install` not only copies compiled binary into target directory
but it also sets file capabilities with `setcap`. This allows to run the
binary without root privileges.

* New option '-m' (--accept-max) which overrides default value for maximum
number of concurrent client connections on socket.

* Working directory is set to match directory name where configuration file is
located. This allows to use @include statement in the configuration file
referencing included files by their relative path.

version 2.2.1
-------------

* Carry out the command expansion only once for each event, at program start.

version 2.2.0
-------------

* Match rule is optional in the filter definition. If no BPF filter is
specified or the option is ommited altogether, capture all traffic on the
interface.

* New event session_error. If there's an error in packet capture, fire up this
event. The event was introduced to act upon interface shutdowns immediatelly.
If this event is triggered before the event 'session_end', it cancels out any
future triggers of 'session_end', until the event 'session_begin' is triggered
again. This event is mandatory. Note that in some cases it is not possible to
restart packet capture.

version 2.1.2
-------------

* System call select(2) replaced by poll(2). The latter system call no longer
limits how many file descriptors can be watched for. This allows users to
define number of filters greater than FD_SETSIZE, which on most GNU/Linux
distributions is 1024.

version 2.1.1
-------------

* Interface shutdown or any other problem causing packet reading to fail is no
longer a reason to kill the daemon.

* Use DLT_IEEE802_11_RADIO link-layer type when monitor mode is enabled.

* Allow users to alter default link-layer type using the configuration option
'link_type'.

version 2.1.0
-------------

* New configuration option 'monitor_mode'. If enabled and supported by the
network interface, IEEE 802.11 wireless LANs management and control frames
will be accessible.

* Specify read timeout using pcap_set_timeout. On some systems, unspecified
timeout caused the select(2) to freeze.

* If no applicable filters are left to use, die instead of useless pooling.

version 2.0.2
-------------

* validation rules for configuration file

* hook execution is done in 'controlled' manner, transparency of the whole
ordeal was increased

* event hooks that failed to execute are not subsequently reexecuted, entire
filter is freed from the memory

* bug fixes and code cleanup


version 2.0
-----------

* Total redesign of previous version. Almost entire code base was replaced or
removed. Version 2.0 no longer relies on POSIX threads, instead it takes
advantage of events triggered on file descriptors, see select(2). Use of
threads was a huge misstep, it not only made a whole program much more
complicated but also more resource consumming.

