Freeradius2.1.12启动流程
来源:互联网 发布:visio 2013 网络图标 编辑:程序博客网 时间:2024/06/08 05:59
这两天工作上事情不太多,趁有空重新走读和研究了一下freeradius2.1.12的源码,对freeradius的启动方式有了进一步的了解,现总结如下。
1 首先是程序入口函数,即main函数。 freeradius2.1.12版的main函数在radiusd.c文件中;
2 程序开始运行后,首先读取各配置文件内容。该部分功能集中在read_mainconfig函数中,该函数中通过递归方式读取各配置文件中的配置项,各配置 文件配置项以及服务器的相关配置都保存在全局变量mainconfig中,其中配置项以红黑树来保存,方便高效查找等操作,增加和删除操作后,自动维护 树的平衡性。
3 读取完所有配置文件后,将加载和初始化数据库链接库。
(1) rlm_sql.c文件rlm_sql_instantiate函数进行初始化工作。链接库使用freeradius/lib/目录下的rlm_sql_mysql.so。
(2) rlm_sql_instantiate调用sql_init_socketpool()使用sql_init_socket初始化socket,创建数据库连接池,连接池中连接数为sql.conf文件中配置的 数据库连接数连接池中数据库连接使用单链表来组织和管理,每一个数据库连接都配备一个互斥锁。
4 generate_sql_clients调用rlm_sql_select_query函数,获取nas表数据。(3) 读取radius客户端(nas表),sql.conf文件中配置“readclients = yes”,nas表信息必须在radius启动时读取,不能在启动以后实时读取。读取 nas表功能在函数generate_sql_clients()中实现。rlm_sql_instantiate调用generate_sql_clients。
过程:rlm_sql_select_query则是调用rlm_sql_mysql.so链接库文件中sql_select_query函数,然后通过rlm_sql_fetch_row函数调rlm_sql_mysql.so中sql_fetch_row函数。nas表中各radius客户端以树结构来进行管理。
5 加载acct相关模块。-- 待研究
6 设置监听,src/main/event.c文件中radius_event_init函数初始化监听地址和端口。
- Freeradius2.1.12启动流程
- [FreeRadius2]遇到问题记录
- freeradius2 限制流量
- 启动流程
- 启动流程
- ubuntu10.10装freeradius2.1.10
- Freeradius2.2安装和测试
- 【freeradius2.x】 安装和学习
- Uboot启动流程和Kernel启动流程
- Android启动:Linux启动流程
- Android启动:Linux启动流程
- Android启动:Linux启动流程
- Eclipse的启动流程
- 流程启动(Jbpm)
- pmon启动流程
- i386 Redboot启动流程
- Linux启动流程
- linux启动流程
- 集合框架之Map接口
- 文件大小与占用空间大小(附带字节转KB,MB公式)
- Epoll模型详解
- iOS 动态计算获取字数的行数
- C# FTP常用操作 FTP上传文件 FTP下载文件 FTP删除文件
- Freeradius2.1.12启动流程
- IOS UIScrollView详解
- spring3和mybatis3整合 配置事物管理抛异常
- ndk-build 便也会把已经存在的.so rm
- (转载)linux命令之九touch 命令
- java私有构造器
- SSH struts、spring、hibernate 面试题
- Linux可插拔认证模块的基本概念与架构
- 联合(union)用法