FreeRadius 启动流程

本文详细介绍了FreeRADIUS服务启动的具体流程,包括读取配置文件、初始化数据字典、加载realm及Homeservers、创建线程池等内容。此外还提到了如何通过线程池处理请求,并介绍了监听端口及注册事件处理的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.启动流程:

获取启动参数并设置相应参数功能,然后调用read_mainconfig()读取配置文件,

Thu Dec 9 16:20:47 2010 : Info: Starting - reading configuration files ...
Thu Dec 9 16:20:47 2010 : Debug: including configuration file /usr/local/etc/raddb/radiusd.conf
Thu Dec 9 16:20:47 2010 : Debug: including configuration file /usr/local/etc/raddb/proxy.conf
Thu Dec 9 16:20:47 2010 : Debug: including configuration file /usr/local/etc/raddb/clients.conf
Thu Dec 9 16:20:47 2010 : Debug: including files in directory /usr/local/etc/raddb/modules/

。。。。。。。。。。。

然后 初始化数据字典,解析 file /usr/local/etc/raddb/dictionary

。。。。。

加载 realm及Home servers ...

..

将客户端初始化到链表。。。,

至此配置文件模块加载完毕,

调用radius_event_init初始化事件池,事件链表是一个全局数据,所有事件串成一个链表,此处即创建表头。同时初始化包列表。

如果有代理服务器则创建代理服务器全局链表并创建代理服务器线程专门处理代理服务器事件。

。。。。。

创建线程池,线程相关参数(线程数等)通过前面的配置文件配置,在这里需要说明的是 freeradius 内部通过线程池处理请求,所有请求先放入队列,线程从队列里取事件(通过信号量同步)并处理。

。。。。。

。。。。

监听fd事件并注册处理事件的信号handler.

....

启动各个端口udp socket server(acct server、access server,proxy server...).这里注意一点,如果没有在radiusd.conf文件中配置的端口号为0则会取系统/etc/services里面的服务端口,同时,对于计费端口,如果在/etc/service文件中没找到计费端口,则用认证端口+1 作为计费端口。

监听端口存储在链表中,所有socket 句柄被监听起来(插入fd句柄列表并绑定信号handler)。

至此,初始换基本完毕,不断调用radius_event_process()读取全局事件列表并处理事件。

radius_event_process()->fr_event_loop(el 全局事件链表).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值