freeradius

What do the prefixes proto and libfreeradius in module names signify?


The libdir contains modules with the following prefixes. libfreeradius proto and rlm. I suppose rlm is the standard naming scheme for modules, since the command

ls -l rlm_*

is used in Dirk van der Walt's Freeradius Beginner's guide. What is the meaning of libfreeradius and proto?


Solution

  • You may also see libraries like libfreeradius-radius which are functions that implement RADIUS encoding/decoding. There's one of these protocol libraries for each frontend the server implements.

    proto_ these are frontend modules (see src/listen). They implement the state machine necessary to run the network side of a protocol. i.e. receive packets from a socket, and send them over to a worker thread for processing. Then send responses from worker threads back out onto the network.

    process_ these are internal state machines (see src/process). They implement state machines used by the virtual servers. These state machines control which processing sections in a virtual server (recv foo {}, authenticate bar {}), they also do some behind the scenes manpulation of the request, copying IDs from requests to responses (for example).

    rlm_ these are backend modules that communicate with a database, an API, or does some kind of lookup or manipulation of the request (see src/modules). rlm_radius for example, sends outbound radius packets and has take the place the of the baked in proxying behaviour in earlier versions of FreeRADIUS.