diff --git a/docs/Internals.xml b/docs/Internals.xml index 6ed79ce16..690071397 100644 --- a/docs/Internals.xml +++ b/docs/Internals.xml @@ -40,13 +40,49 @@ This document provides an overview of Shorewall internals. It is intended to ease the task of approaching the Shorewall code base by providing a roadmap of what you will find there. - -
- Overall Architecture +
+ History - Shorewall was originally written entirely in Bourne Shell. The chief - advantage of this approach was that virtually any platform supports the - shell, including small embedded environments. The + Shorewall was originally written entirely in Bourne Shell. The + chief advantage of this approach was that virtually any platform + supports the shell, including small embedded environments. The initial + release was in early 2001. This version ran iptables, ip, etc. + immediately after processing the corresponding configuration entry. If + an error was encountered, the firewall was stopped. For this reason, the + routestopped file had to be very simple and + foolproof. + + In Shorewall 3.2.0 (July 2006), the implementation was changed to + use the current compile-then-execute architecture. This was + accompilished by modifying the existing code rather than writing a + compiler/generator from scratch. The resulting code was fragile and hard + to maintain. 3.2.0 also marked the introduction of + Shorewall-lite. + + By 2007, the compiler had become unmaintainable and needed to be + rewritten. I made the decision to write the compiler in Perl and + released it as a separate Shorewall-perl packets in Shorewall 4.0.0 + (July 2007). The shell-based compiler was packaged in a Shorewall-shell + package. An option (SHOREWALL_COMPILER) in shorewall.conf specified + which compiler to use. The Perl-based compiler was siginificantly faster + and the compiled script also ran much faster, thanks to its use of + iptables-restore. + + Shorewall6 was introduced in Shorewall 4.2.4 (December + 2008). + + Support for the old Shell-based compiler was eliminated in + Shorewall 4.4.0 (July 2009). + + Shorewall 4.5.0 (February 2012) marked the introduction of the + current architecture and packaging. +
+ +
+ Architecture + + +