Skip to main content

Module radius

Module radius 

Source
Expand description

RADIUS client (a NAS): NetGet authenticates users and reports accounting to a RADIUS server, and the model decides who and what.

Three tasks per client, all registered with the client:

  • transport owns the UDP socket, the shared secret, the identifiers of requests in flight and their retransmission timers. Every reply is verified (wire::verify_reply) before anything in it reaches the model; one that does not verify is discarded and reported as radius_error, and the request goes on waiting for a genuine answer.
  • turns asks the model about each reply or error, in order, and hands its actions back to the transport. The chain passes through that queue, so it needs no recursion.
  • commands runs injected actions ([ send ], MCP send_to_client) down the same path.

The shared secret lives in the transport’s Settings and is used for nothing but authenticators. Settings deliberately does not implement Debug.

Re-exports§

pub use actions::RadiusClientProtocol;
pub use crate::server::radius::packet::read_frames;

Modules§

actions
RADIUS client actions, events and metadata.
wire
RADIUS client packets: what the server’s packet.rs leaves out because a server never needs it — building requests, and checking a reply’s two authenticators against the request.

Structs§

RadiusClient
Settings
What the transport needs, secret included. Not Debug, so it cannot be logged by accident.

Enums§

Link
Where packets go: a UDP socket (RADIUS) or a framed stream (RadSec, RFC 6614, which carries the same packets over TLS). On a stream a request is never retransmitted — the transport is reliable — but it waits the same total time before it is reported unanswered.

Constants§

MAX_IN_FLIGHT
Requests awaiting a reply. The next is refused; the identifier space is 256.