SideChannel is a Snort module that uses Connectors to implement a messaging
infrastructure that is used to communicate between Snort threads and the
outside world.

SideChannel adds functionality onto the Connector as:

* message multiplexing/demultiplexing - An additional protocol layer is
    added to the messages.  This port number is used to direct message to/from
    various SideClass instancs.

* application receive processing - handler for received messages on a
    specific port.

* message formatting - convert data to text format if configured to do so

SideChannel's are always implement a duplex (bidirectional) messaging model
and can map to separate transmit and receive Connectors.

The message handling model leverages the underlying Connector handling.  So
please refer to the Connector documentation.

SideChannel's are instantiated by various applications.  The SideChannel port
numbers are the configuration element used to map SideChannel's to
applications.

The SideChannel configuration mostly serves to map a port number to a Connector
or set of connectors.  Each port mapping can have at most one transmit plus
one receive connector or one duplex connector.  Multiple SideChannel's
may be configured and instantiated to support multiple applications.

An example SideChannel configuration along with the corresponding Connector
configuration:

    side_channel =
    {
        {
            ports = '1',
            connectors =
            {
                {
                    connector = 'file_rx_1',
                },
                {
                    connector = 'file_tx_1',
                }
            },
            format = "text"
        },
    }

    file_connector =
    {
        {
            connector = 'file_tx_1',
            direction = 'transmit',
            text_format = true,
            name = 'HA'
        },
        {
            connector = 'file_rx_1',
            direction = 'receive',
            text_format = true,
            name = 'HA'
        },
    }


