How olsr/olsrd works
OLSRd is a mobile ad hoc network routing daemon. Its principal workflow is to receive OLSR traffic, maintain link and topology knowledge, calculate routes, and apply route changes to the operating system. The tree also shows optional plugins for status APIs, naming, position updates, packet forwarding, and other integrations, plus separate graphical frontends. The README is empty and the excerpts are partial, so several subsystem connections are intentionally left unspecified.
Main entry points: process_routes.c Route updates · olsrd_info.c Status information · process_package.c Packet processing · interfaces.c Interface management
Components 25
Routing daemon
- Daemon startup
src/main.c - Interface management
src/interfaces.c - Packet processing
src/process_package.c - Link state
src/link_set.c - Topology state
src/tc_set.c - MPR selection
src/mpr.c - Route calculation
src/olsr_spf.c - Route updates
src/process_routes.c - Plugin loading
src/plugin_loader.c
Network platform
- Linux route backend
src/linux/kernel_routes_nl.c - BSD route backend
src/bsd/kernel_routes.c - Windows route backend
src/win32/kernel_routes.c
Optional plugins
- Status information
lib/info/olsrd_info.c - JSON status plugin
lib/jsoninfo/src/olsrd_jsoninfo.c - HTTP status plugin
lib/httpinfo/src/olsrd_httpinfo.c - Text status plugin
lib/txtinfo/src/olsrd_txtinfo.c - Network naming
lib/nameservice/src/nameservice.c - Position updates
lib/pud/src/pud.c - Broadcast forwarding
lib/bmf/src/Bmf.c
Management clients
- GTK frontend
gui/linux-gtk/src/main.c - Windows frontend
gui/win32/Main/Frontend.cpp
Other components
- Peer network
- OS routing table
- GPS data source
- Info API client
Connections 21
- Peer network → Interface management: sends traffic
- Interface management → Packet processing: delivers packets
- Packet processing → Link state: updates link state
- Packet processing → Topology state: updates topology
- Link state → MPR selection: provides neighbors
- Topology state → Route calculation: provides topology
- MPR selection → Route calculation: provides relays
- Route calculation → Route updates: provides routes
- Route updates → Linux route backend: applies changes
- Route updates → BSD route backend: applies changes
- Route updates → Windows route backend: applies changes
- Linux route backend → OS routing table: writes routes
- BSD route backend → OS routing table: writes routes
- Windows route backend → OS routing table: writes routes
- Daemon startup → Interface management: starts
- Daemon startup → Plugin loading: loads plugins
- Info API client → Status information: requests status
- JSON status plugin → Status information: uses status data
- HTTP status plugin → Status information: uses status data
- Text status plugin → Status information: uses status data
- GPS data source → Position updates: provides position