OONF Plugins
The OLSR.org Network Framework is mostly a collection of plugins (also called subsystems) which can be combined with the three main APIs to build a network application.
Plugins can depend on each other as long as there is no cycle. All plugins can expect all three main APIs being available.
There are multiple categories of plugins for OONF.
You can get a list of possible configuration options of a plugin by using the --schema parameter:
olsrd2 --schema=<name-of-plugin>
Dependencies between plugin categories
All plugins depend on the three OONF API's, OONF Common, OONF Config and OONF Core.
All OLSRv2 plugins depend on the NHDP Plugin, either directly or indirectly through the OLSRv2 Plugin.
Most Generic plugins, NHDP plugins, OLSRv2 plugins and Crypto Plugins depend on one or more Subsystem plugins.
Subsystems
The Subsystem plugins are a former 4th main API library. They contain most of the network and timer functionality of OONF and highly depends on each other.
All subsystems that start with os_ are operation system dependent and might have slightly different behavior depending on the operation system OONF was compiled for.
Most of the other plugins depend on multiple Subsystems.
All of the Subsystem Plugins export API functions that can be used by other Plugins.
oonf_class | block memory manager |
oonf_clock | internal time handling |
oonf_duplicate_set | memorize and recognize sequence number duplicates |
oonf_http | mini http server |
oonf_interface | interface data and change listener |
oonf_layer2 | storage of layer2 data about interfaces and neighbors |
oonf_packet_socket | dualstack UDP socket handler |
oonf_rfc5444 | RFC 5444 parser/generator and target/interface management |
oonf_socket | generic socket scheduler |
oonf_stream_socket | dualstack TCP socket handler |
oonf_telnet | telnet service for OONF |
oonf_timer | timer scheduler |
oonf_viewer | helper class to build view commands for telnet |
os_clock | get monotonic time in milliseconds |
os_interface | configure interface addresses and mesh behavior |
os_socket | wrapper for all kind of network/socket function calls |
os_routing | set, remove and query system routing tables |
os_system | query basic OS configuration |
Generic plugins
Generic plugins only depend on subsystems, not on other plugins.
cfg_compact | Standard configuration format for OONF |
cfg_uciloader | OpenWRT UCI configuration format for OONF |
dlep_radio | DLEP radio implementation |
dlep_router | DLEP router implementation |
example | Small example plugin |
eth_listener | grabs link-speed of ethernet interfaces for layer2 database |
layer2_generator | generator for layer2 database test-data |
layer2info | get layer2 database content through telnet |
link_config | set layer2 database data in configuration file |
nl80211_listener | query Linux wifi cards layer2 data |
plugin_controller | load and unload plugins through telnet |
remotecontrol | change configuration and remote logging through telnet |
systeminfo | get basic OONF information through telnet |
NHDP plugins
The NHDP plugins are the IETF RFC 6130: Neighborhood Discovery Protocol (NHDP) implementation and all plugins that depend on it.
auto_ll4 | automatic configuration of IPv4 interface addresses |
constant_metric | a metric that pulls it costs out of the configuration |
ff_dat_metric | directional Airtime metric |
hysteresis_olsrv1 | example hysteresis implementation based on the suggestion in RFC3626 |
mpr | example MPR implementation based on the suggestion in RFC7181 |
neighbor_probing | plugin that probes neighbors with unicast traffic to allow the measurement of the link speed |
nhdp | the NHDP implementation including the NHDP API for other plugins |
nhdpcheck | syntax checking for incoming NHDP traffic |
nhdpinfo | information about the NHDP databases through telnet |
OLSRv2 plugins
The OLSRv2 plugins are the RFC 7181: Optimized Link State Routing Protocol v2 implementation and all plugins that depend on it. The OLSRv2 plugin itself of course depends on the NHDP Plugin.
netjsoninfo | JSON output as defined by the NetJSON project. |
lan_import | Automatic import of routing tables as locally attached networks |
olsrv2 | the OLSRv2 implementation including the OLSRv2 API for other plugins. |
olsrv2info | information about the OLSRv2 databases through telnet |
route_modifier | modify the table, protocol and distance of routes through configuration |
Crypto plugins
The Crypto plugins are plugins that provide cryptographic algorithms or extensions for other OONF plugins.
hash_tomcrypt | a wrapper for libtomcrypt that provides SHA 1/2 hashes and HMAC for the RFC5444 Signature Plugin. |
rfc5444_signature | an API provider for other plugins to defines message and packet level RFC5444 signatures as defined in |
simple_security | provides HMAC based RFC5444 signatures and replay protection |
sharedkey_sig | Test plugin with HMAC based shared key signatures for RFC5444 messages and packets |