For generic builds (as used by distributors), we need a more practical solution to install, enable and load plugins.
Managing installed plugins is currently possible with the strongswan.conf load directive only. But it is way too difficult to handle for a non-expert: the plugin load order is very important and handling depencies is non-trivial.We need to automate this process, where we can:
- Build and install many plugins, but load only required ones
- Have a simple tool to enable plugins (like a2enmod?)
- Handle dependencies and plugin load order automatically
Automatically resolving plugin dependencies is difficult. Each plugin should indicate what it provides (e.g. HMAC_SHA256, ...) and what it requires for this feature (HASH_SHA256). The dependency should be per-feature, as for example the hmac plugin provides HMAC_SHA256 only if it has HASH_SHA256, but works with HMAC_SHA1 just fine if someone provides HASH_SHA1. The plugin loader is responsible for resolving the dependencies...