aboutsummaryrefslogtreecommitdiffstats
path: root/doc/README.developer
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2021-09-28 00:37:18 +0100
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2021-10-05 05:40:16 +0000
commit6898210ded332dc58514f3a714a67a51ada7229f (patch)
tree6942f4559df16a60d8fb042d09778fdd78acf5fb /doc/README.developer
parentf51510f40183fdd4e6d45f1e44b92abb875a80d5 (diff)
docs: Add section about architecture to README.developer
Diffstat (limited to 'doc/README.developer')
-rw-r--r--doc/README.developer21
1 files changed, 20 insertions, 1 deletions
diff --git a/doc/README.developer b/doc/README.developer
index 270e7713d4..043be091d5 100644
--- a/doc/README.developer
+++ b/doc/README.developer
@@ -755,7 +755,26 @@ to avoid warnings at all.
The compiler flags in the Makefiles are set to "treat warnings as errors",
so your code won't even compile when warnings occur.
-7. Miscellaneous notes
+7. General observatons about architecture
+
+One day we might conceivably wish to load dissectors on demand and do other
+more sophisticated kinds of unit test. Plus other scenarios not immediately
+obvious. For this to be possible it is important that the code in epan/ does
+not depend on code in epan/dissectors, i.e it is possible to compile epan
+without linking with dissector code. It helps to view dissectors as clients
+of an API provided by epan (libwireshark being constituted by two distinct
+components "epan" and "dissectors" bundled together, plus other bits and
+pieces). The reverse is ǹot* true; epan should not be the client of an API
+provided by dissectors.
+
+The main way this separation of concerns is achieved is by using runtime
+registration interfaces in epan for dissectors, preferences, etc. that are
+dynamic and do not have any dissector routines hard coded. Naturally this
+is also an essential component of a plugin system (libwireshark has plugins
+for taps, dissectors and an experimental interface to augment dissection with
+new extension languages).
+
+8. Miscellaneous notes
Each commit in your branch corresponds to a different VCSVERSION string
automatically defined in the header 'vcs_version.h' during the build. If you happen