Project

General

Profile

strongSwan Developer Documentation » History » Version 45

Tobias Brunner, 09.07.2014 16:44

1 25 Martin Willi
h1. strongSwan Developer Documentation
2 25 Martin Willi
3 41 Tobias Brunner
h2. Contributions
4 41 Tobias Brunner
5 41 Tobias Brunner
Before starting development, please read our [[Contributions|contribution requirements]].
6 41 Tobias Brunner
7 25 Martin Willi
h2. Getting the Source Code
8 27 Tobias Brunner
9 25 Martin Willi
The easiest way to get the source code is checking it out from our "Git":http://git-scm.com/ repository:
10 32 Martin Willi
<pre>
11 1 Martin Willi
git clone git://git.strongswan.org/strongswan.git
12 41 Tobias Brunner
</pre>The repository is also mirrored to "GitHub":https://github.com/strongswan/strongswan.
13 1 Martin Willi
14 35 Tobias Brunner
h2. Browsing the Source Code
15 35 Tobias Brunner
16 35 Tobias Brunner
The Git repository can be browsed online using either "Gitweb":http://git.strongswan.org/?p=strongswan.git or the integrated "repository browser":http://wiki.strongswan.org/projects/strongswan/repository (slower).
17 35 Tobias Brunner
18 1 Martin Willi
h2. Source Code Documentation
19 1 Martin Willi
20 44 Tobias Brunner
The newer parts of strongSwan use extractable inline documentation extensively. This documentation is extracted with "Doxygen":http://doxygen.org for the latest release
21 44 Tobias Brunner
and uploaded to "strongswan.org/apidoc":http://www.strongswan.org/apidoc. Use @make apidoc@ to generate it yourself from the sources.
22 31 Martin Willi
23 1 Martin Willi
h2. Code style
24 1 Martin Willi
25 41 Tobias Brunner
For our code we heavily use an [[ObjectOrientedC|object oriented programming style]] for C. Also have a look to our basic [[ProgrammingStyle|programming style]] guidelines.
26 1 Martin Willi
27 41 Tobias Brunner
h2. Quality Assurance
28 1 Martin Willi
29 41 Tobias Brunner
h3. Unit Tests
30 1 Martin Willi
31 41 Tobias Brunner
Our libraries are tested with an increasing number of unit tests. To run them use @make check@.
32 1 Martin Willi
33 41 Tobias Brunner
The following environment variables change the behavior of the test runner:
34 41 Tobias Brunner
35 41 Tobias Brunner
|TESTS_REDUCED_KEYLENGTHS|If this is set test cases that generate keys will do so only for reduced key lengths to avoid blocking on hosts with low entropy.|
36 42 Tobias Brunner
|TESTS_STRONGSWAN_CONF|Path to a custom strongswan.conf file used for the tests. Since version:5.2.0.|
37 41 Tobias Brunner
|TESTS_SUITES|A comma-separated list of test suites to run (all suites are run if this is not specified).|
38 41 Tobias Brunner
|TESTS_VERBOSITY|The log level used when running the tests (-1 to 4, see [[LoggerConfiguration]]), defaults to -1.|
39 41 Tobias Brunner
|LEAK_DETECTIVE_DISABLE|If our custom memory allocator is enabled with _--enable-leak-detective_ it can be disabled temporarily by setting this variable in order to speed up running the tests.|
40 41 Tobias Brunner
41 41 Tobias Brunner
Coverage reports can be generated with @make coverage@ (requires [[Autoconf|configuring]] with _--enable-coverage_, which is not recommended for production builds as it disables all optimizations).
42 41 Tobias Brunner
43 41 Tobias Brunner
The unit tests also run automatically on "Travis CI":https://travis-ci.org/strongswan/strongswan: !https://travis-ci.org/strongswan/strongswan.svg?branch=master!:https://travis-ci.org/strongswan/strongswan
44 41 Tobias Brunner
45 41 Tobias Brunner
h3. Testing Environment
46 41 Tobias Brunner
47 39 Tobias Brunner
Our [[TestingEnvironment|integration and regression testing environment]] helps us ensure the quality of future releases.
48 41 Tobias Brunner
49 41 Tobias Brunner
The "results for the latest release":http://strongswan.org/testresults.html are published online.
50 39 Tobias Brunner
51 36 Martin Willi
h2. Components
52 1 Martin Willi
53 38 Tobias Brunner
The _src_ directory in the strongSwan distribution contains a set of components:
54 26 Martin Willi
55 43 Tobias Brunner
|aikgen|Utility to generate an Attestation Identity Key bound to a TPM|
56 43 Tobias Brunner
|[[charon]]|The IKE keying daemon|
57 43 Tobias Brunner
|[[charon-cmd]]|A command line IKE client|
58 43 Tobias Brunner
|[[NetworkManager|charon-nm]]|The back end for the [[NetworkManager]] plugin|
59 43 Tobias Brunner
|[[charon-svc]]|A Windows IKE service|
60 43 Tobias Brunner
|charon-tkm|A variant of charon that is backed by a "Trusted Key Manager":http://www.codelabs.ch/tkm/ (TKM)|
61 43 Tobias Brunner
|[[IntegrityTest|checksum]]|Utility to generate checksums of built executables and libraries|
62 43 Tobias Brunner
|[[IpsecConftest|conftest]]|Conformance test tool|
63 43 Tobias Brunner
|[[DynamicUmlMeshModeler|dumm]]|An experimental UML testing framework|
64 43 Tobias Brunner
|[[AndroidVpnClient|frontends/android]]|VPN client for Android 4+|
65 43 Tobias Brunner
|[[NetworkManager|frontends/gnome]]|[[NetworkManager]] plugin|
66 43 Tobias Brunner
|[[Maemo|frontends/maemo]]|[[Maemo]] applet|
67 43 Tobias Brunner
|[[MacOSX|frontends/osx]]|charon-xpc helper daemon for the native [[MacOSX|Mac OS X application]]|
68 43 Tobias Brunner
|[[IpsecCommand|ipsec]]|The ipsec command line tool wrapping commands and other tools|
69 45 Tobias Brunner
|libcharon|Contains most of the code and the plugins of the charon daemon|
70 43 Tobias Brunner
|[[libfast]]|A lightweight framework to build native web applications using ClearSilver and FastCGI|
71 45 Tobias Brunner
|libhydra|Contains daemon-specific code and plugins used by the charon and starter daemons|
72 43 Tobias Brunner
|libimcv|Contains [[TrustedNetworkConnect|IMCs, IMVs]] and code shared by them|
73 43 Tobias Brunner
|libipsec|An IPsec implementation used by [[kernel-libipsec]] and the [[AndroidVPNClient|Android app]]|
74 43 Tobias Brunner
|libpts|Contains code for [[TrustedNetworkConnect|TPM-based remote attestation]] and SWID tag handling|
75 43 Tobias Brunner
|libpttls|Implements the [[TrustedNetworkConnect|PT-TLS protocol]]|
76 43 Tobias Brunner
|libradius|RADIUS protocol implementation used by e.g. the [[EAPRadius|eap-radius]] and tnc-pdp plugins|
77 43 Tobias Brunner
|libsimaka|Contains code shared by several EAP-SIM/AKA plugins|
78 1 Martin Willi
|[[libstrongswan]]|The strongSwan library with basic functions used by the daemons and utilities |
79 43 Tobias Brunner
|[[EapTls|libtls]]|TLS implementation used by the [[EapTls|eap-tls]], eap-ttls, eap-peap and other plugins|
80 43 Tobias Brunner
|libtnccs|Contains [[TrustedNetworkConnect|IF-TNCCS]] implementations|
81 43 Tobias Brunner
|libtncif|Contains [[TrustedNetworkConnect|IF-IMC/IMV]] code|
82 43 Tobias Brunner
|[[Manager|manager]]|A graphical management application for charon based on libfast|
83 43 Tobias Brunner
|medsrv|An experimental management front end for mediation servers based on libfast|
84 43 Tobias Brunner
|[[IpsecPKI|pki]]|Public Key Infrastructure utility|
85 43 Tobias Brunner
|[[Ipsecpool|pool]]|Utility to manage attributes and IP address pools provided by the [[attrsql|attr-sql]] plugin|
86 43 Tobias Brunner
|pt-tls-client|[[TrustedNetworkConnect|PT-TLS protocol]] client|
87 43 Tobias Brunner
|[[ScepClient|scepclient]]|Utility to enroll certificates using the SCEP protocol|
88 43 Tobias Brunner
|[[IpsecStarter|starter]]|Reads _ipsec.conf_ and controls the keying daemon charon|
89 43 Tobias Brunner
|[[IpsecStroke|stroke]]|Command line utility to control charon via the stroke protocol|
90 43 Tobias Brunner
|[[swanctl]]|Configuration and control utility that communicates via [[vici]] interface|
91 43 Tobias Brunner
| _updown[_espmark]|Default script called by the [[updown]] plugin on tunnel up/down events|
92 1 Martin Willi
93 43 Tobias Brunner
h2. Removed with [[5.0.0]]
94 1 Martin Willi
95 1 Martin Willi
|[[pluto]]|The old IKEv1 keying daemon.|
96 1 Martin Willi
|libfreeswan|The deprecated library used by pluto.|
97 43 Tobias Brunner
|whack|Command line utility to control pluto via the whack protocol.|