O libdir contém módulos com os seguintes prefixos. libfreeradius proto e rlm. Suponho que rlm seja o esquema de nomenclatura padrão para módulos, já que o comando
ls -l rlm_*
é usado no guia Freeradius Beginners de Dirk van der Walts. Qual é o significado de libfreeradius e proto?
libfreeradius_x
são bibliotecas utilitárias que implementam APIs internas comuns a ambosrlm_
os módulos eproto_
, ou que são usadas diretamente pelo núcleo do servidor. Há muitas delas:bio
é uma estrutura de E/S para a qual estamos migrando módulos de entrada e saída.curl
são wrappers em torno do libcurl para permitir fácil integração em nosso loop de eventos de E/S assíncrono.eap
são funções comuns usadas na autenticação EAP.eap_aka_sim
são funções comuns usadas em EAP-SIM, EAP-AKA e EAP-AKA'io
é o antigo framework de E/S (alguns dos quais serão mantidos). Ele tem código para permitir comunicação entre threads.json
são wrappers json-c.kafka
são wrappers em torno de funções do Kafka. Eles estão lá principalmente para permitir uma análise de configuração fácil.ldap
código io assíncrono para LDAP e funções utilitárias envolvendo libldap.redis
código io assíncrono para Redis e gerenciamento de cluster.server
APIs de servidor principais para manipular tuplas, gerenciar conexões, analisar configurações e muitas outras coisas.tls
wrappers em torno do OpenSSL para permitir validação de certificado assíncrona, configurar sessões e configurações TLS de maneira padrão, etc...sim
Algoritmos específicos do cartão SIM, como comp128 e milenage.unlang
a linguagem de política que é executada em seções de servidor virtual.util
semelhante ao servidor, mas uma API de nível inferior que é usada tanto pelo servidor quanto por utilitários como o radclient.Você também pode ver bibliotecas como
libfreeradius-radius
que são funções que implementam codificação/decodificação RADIUS. Há uma dessas bibliotecas de protocolo para cada frontend que o servidor implementa.proto_
estes são módulos frontend (veja src/listen). Eles implementam a máquina de estados necessária para executar o lado de rede de um protocolo. ou seja, recebem pacotes de um socket e os enviam para um thread de trabalho para processamento. Então enviam respostas de threads de trabalho de volta para a rede.process_
essas são máquinas de estado internas (veja src/process). Elas implementam máquinas de estado usadas pelos servidores virtuais. Essas máquinas de estado controlam quais seções de processamento em um servidor virtual (recv foo {}
,authenticate bar {}
), elas também fazem alguma manipulação de bastidores da solicitação, copiando IDs de solicitações para respostas (por exemplo).rlm_
esses são módulos de backend que se comunicam com um banco de dados, uma API ou fazem algum tipo de pesquisa ou manipulação da solicitação (veja src/modules).rlm_radius
por exemplo, envia pacotes radius de saída e substitui o comportamento de proxy incorporado em versões anteriores do FreeRADIUS.