inliniac/suricata — pull request #799 by inliniac (2014-01-28 15:28:00+00:00)
Title: stream: configurable segment pools

Changes since https://github.com/inliniac/suricata/pull/798:
- fixes for various issues QA found

Prscript:
- PR build: https://buildbot.suricata-ids.org/builders/inliniac/builds/164
- PR pcaps: https://buildbot.suricata-ids.org/builders/inliniac-pcap/builds/84

The stream reassembly engine uses a set of pools in which preallocated
segments are stored. There are various pools each with different packet
sizes. The goal is to lower memory presure. Until now, these pools were
hardcoded.

This patch introduces the ability to configure them fully from the yaml.
There can be at max 256 of these pools.

Yaml layout is as follows:

stream:
reassemble:
segments:
- size: 2048
prealloc: 3000
- size: 4
prealloc: 1000
- size: 1024
prealloc: 2000

The size is the packet size. The prealloc value indicates how many
segments are set up at startup.

The pools have no limit wrt how many segments can be used of a certain
size. If the engine needs more than the prealloc size, segments are
malloc'd and free'd. The only limit here is the stream.reassemble.memcap.

If the yaml part if omitted, the default values are the same as before.

Feature #1093