
A Modular Software Architecture
■
621
/
*
Module ID, usually filled upon
module initialization
*
/
int module_id;
marnetd_route_t route;
marnetd_addr_t some_destination;
struct timeval
*
route_age;
[...]
if (marnetd_get_route(some_destination, &route)) {
/
*
route is known, add attribute
*
/
marnetd_add_route_info(&route, module_id, route_age);
}
else {
/
*
route unknown
*
/
}
Figure 25.13 Adding custom attributes to routes.
may thus be realized as a struct defined by the module programmer which then may contain
arbitrary data.
Beyond that, route table management includes a configurable “route arbitration” mechanism
to resolve conflicts created by the execution of multiple protocol ...