CCCI daemon
===========

# Introduction

The CCCI daemon provides network configuration of a (network) probe.
A mediation center configures the probe to spy a kind of traffic.
The CCCI daemon tries to connect to the mediation center and then
waits for commands in the form of CCCI protocol messages.

## Internal subsystems:

 * cccid_conf - configuration of the daemon
 * cccid_conn - abstract access to connection with a MF
 * cccid_tcp  - TCP implementation of cccid_conn
 * cccid_sig  - OS signal handling
 * cccid_mod  - modules subsystem
 * ccci_types - CCCI protocol data types and utils


## Modules and extensions:

Modules are place in the mod/ directory. Only modules specified
in variable MODS (mod/Makefile.inc) are built.

 * mod_log - example module, not intended for real use


## Tests:

 * test_cccid_conf - tests internals of the cccid_conf subsystem
 * test_cccid_conn - tests send/recv implementations


# Building

To build cccid, just type:

  $ make

and the cccid binary executable is provided.


# Extend by a module

Place a file mod_<name>.c into the directory mod/. That is the module
loadable by the CCCI daemon. It must implement the cccid_mod.h interface.
That is the cccid_mod structure and functions match, service and optionally
the function fini.

To install the module into the CCCI daemon's runtime, implement an init
function that installs the instance of cccid_mod by calling cccid_mod_install().
Mark that function using macro cccid_mod_init(<name>, func_init).

Add the module into the MODS list (MODS += mod_<name>.o) and build the CCCI
daemon in the standard way. The module should be installed after start.

See mod/mod_log.c as an example.
