Add bird2 as an alternative babel implementation #121

Closed
fbl wants to merge 5 commits from fbl:bird2 into master

5 Commits

Author SHA1 Message Date
Fabian Bläse c2a6fc08e4 fixup: make babel version dependent on selected implementation 2022-03-19 15:00:28 +01:00
Fabian Bläse 9444aaa959 fff-babel: Make implementation runtime switchable
Some users might want to prefer one babel implementation over another
for various reasons. Having to compile the firmware from scratch can be
quite tedious in that case.

Instead, make the babel implementation switchable at runtime.

The implementation can be switched manually using the uci option
`babelimpl.impl.impl`, which currently is not upgrade-safe.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-03-19 14:12:04 +01:00
Fabian Bläse 4e7f394ba3 bird2-fixup
- refine configure/test/apply mechanics
	- move dynamic includes to /tmp -> not preserved during reboot
	- add custom bird procd init.d script to generate dynamic includes
		-> use /tmp/bird/fff if existent (test-mode), /etc/bird/fff otherwise
- move dynamic bird2 configs to /{tmp,etc}/bird/fff
- Fix nodewatcher failing when bird is not running
2022-03-19 14:12:04 +01:00
Fabian Bläse e9784dffff Add bird2 as selectable babel implementation
Bird 2 has a few advantages over babeld. Especially the possiblity to
dynamically reload the configuration without restarting the daemon and
birds significant performance advantage make it an interesting
alternative to babeld for our firmware.

This adds the necessary implementation-specific fff-babel-bird2 package,
which allows to integrate bird2 into the fff firmware.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-03-19 14:12:04 +01:00
Fabian Bläse 57e9ca6d06 Add support for different babel implementations
To be able to swap out babeld for a different babel implementation in
the future, this splits all fff-specific configuration into a seperate
fff-babel package.

Implementation specific configuration is done in
/lib/functions/fff/babeldaemon, which is included with every selectable
babel implementation. It contains functions, which are called by the
fff-specific code, and therefore allows to configure the implementation
specific parts.

The babel implementation is provided by implementation-specific
fff-packages, which provide 'fff-babel-implementation'. At the moment,
only fff-babeld is supported for use as babel implementation.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
2022-03-19 14:12:04 +01:00