conf.py \
_static \
index.rst \
- code-submission-process.rst \
- code-style.rst \
- app-layer
+ extending/detect/index.rst \
+ extending/decoder/index.rst \
+ extending/index.rst \
+ extending/app-layer/index.rst \
+ extending/app-layer/parser.rst \
+ extending/capture/index.rst \
+ extending/output/index.rst \
+ internals/engines/index.rst \
+ internals/threading/index.rst \
+ internals/index.rst \
+ internals/pipeline/index.rst \
+ internals/datastructs/index.rst \
+ codebase/unittests.rst \
+ codebase/index.rst \
+ codebase/code-style.rst \
+ codebase/contributing/code-submission-process.rst \
+ codebase/contributing/index.rst \
+ codebase/fuzz-testing.rst
if HAVE_SPHINXBUILD
--- /dev/null
+Contributing
+============
+
+.. toctree::
+ :maxdepth: 2
+
+ code-submission-process
--- /dev/null
+Fuzz Testing
+============
+
+To enable fuzz targets compilation, add `--enable-fuzztargets` to configure.
+
+.. note:: This changes various parts of Suricata making the `suricata` binary
+ unsafe for production use.
+
+The targets can be used with libFuzzer, AFL and other fuzz platforms.
+
+
+Running the Fuzzers
+-------------------
+
+TODO. For now see src/tests/fuzz/README
+
+Reproducing issues
+^^^^^^^^^^^^^^^^^^
+
+
+Extending Coverage
+------------------
+
+Adding Fuzz Targets
+-------------------
+
+
+Oss-Fuzz
+--------
+
+Suricata is continuesly fuzz tested in Oss-Fuzz. See https://github.com/google/oss-fuzz/tree/master/projects/suricata
--- /dev/null
+Working with the Codebase
+=========================
+
+.. toctree::
+ :maxdepth: 2
+
+ contributing/index.rst
+ code-style
+ unittests
+ fuzz-testing
--- /dev/null
+Unittests
+=========
+
+Unittests are a great way to create tests that can check the internal state
+of parsers, structures and other objects.
+
+Tests should:
+
+- use FAIL/PASS macros
+- be deterministic
+- not leak memory on PASS
+- not use conditions
--- /dev/null
+Packet Capture
+==============
--- /dev/null
+Packet Decoder
+==============
--- /dev/null
+Detection
+=========
--- /dev/null
+Extending Suricata
+==================
+
+.. toctree::
+ :maxdepth: 2
+
+ capture/index.rst
+ decoder/index.rst
+ app-layer/index.rst
+ detect/index.rst
+ output/index.rst
--- /dev/null
+Output
+======
+
+Introduction
+------------
+
+Extending Suricata's alert and event output.
:numbered:
:maxdepth: 2
- code-submission-process
- code-style
- app-layer/index.rst
+ codebase/index.rst
+ internals/index.rst
+ extending/index.rst
--- /dev/null
+Important Data Structures
+=========================
+
+Introduction
+------------
+
+This section explains the most important Suricata Data structures.
+
+For a complete overview, see the doxygen: https://doxygen.openinfosecfoundation.org
--- /dev/null
+Engines
+=======
+
+Flow
+----
+
+Stream
+------
+
+Defrag
+------
--- /dev/null
+Suricata Internals
+==================
+
+.. toctree::
+ :maxdepth: 2
+
+ pipeline/index.rst
+ threading/index.rst
+ datastructs/index.rst
+ engines/index.rst
--- /dev/null
+Packet Pipeline
+===============
--- /dev/null
+Threading
+=========