Freeradius2.1.12启动流程

        这两天工作上事情不太多,趁有空重新走读和研究了一下freeradius2.1.12的源码,对freeradius的启动方式有了进一步的了解,现总结如下。

1 首先是程序入口函数,即main函数。 freeradius2.1.12版的main函数在radiusd.c文件中;

2 程序开始运行后,首先读取各配置文件内容。该部分功能集中在read_mainconfig函数中,该函数中通过递归方式读取各配置文件中的配置项,各配置      文件配置项以及服务器的相关配置都保存在全局变量mainconfig中,其中配置项以红黑树来保存,方便高效查找等操作,增加和删除操作后,自动维护      树的平衡性。

3 读取完所有配置文件后,将加载和初始化数据库链接库。

  (1) rlm_sql.c文件rlm_sql_instantiate函数进行初始化工作。链接库使用free radius/lib/目录下的rlm_sql_mysql.so。   
  (2) rlm_sql_instantiate调用sql_init_socketpool()使用sql_init_socket初始化 socket,创建数据库连接池,连接池中连接数为sql.conf文件中配置的   数据库连接数 连接池中数据库连接使用单链表来组织和管理,每一个数据库连接都配备一个互斥锁。   

  (3) 读取radius客户端(nas表),sql.conf文件中配置“readclients = yes”,nas表信息必须在radius启动时读取,不能在启动以后实时读取。读取     nas表功能在函数generate_sql_clients()中实现。rlm_sql_instantiate调用generate_sql_clients。

4 generate_sql_clients调用rlm_sql_select_query函数,获取nas表数据。

过程:rlm_sql_select_query则是调用rlm_sql_mysql.so链接库文件中sql_select_query函数,然后通过rlm_sql_fetch_row函数调rlm_sql_mysql.so中sql_fetch_row函数。nas表中各radius客户端以树结构来进行管理。

加载acct相关模块。-- 待研究

设置监听,src/main/event.c文件中radius_event_init函数初始化监听地址和端口。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_ShuXin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值